Commit Graph

817 Commits

Author SHA1 Message Date
Salex08
8a8fa9c99c Replaces GetComponent in Mining items with Signalers (#68575)
* Replaces many instances of GetComponents in mining items with signals and better uses overall of Components, in drills and the GPS handcuffs.
* To do this, also added 3 new signals to mechs when you are adding/removing mech equipment onto one.
2022-07-27 14:30:04 -04:00
LemonInTheDark
22d57da140 Readds Alien Vore (#68312)
* Readds Alien Vore

Aliens can now eat people again. Behavior was removed by #43991 (b6c41e3b32)
because nasku thought it was weird, and the code was really bad.

I think it's funny, and I've made the code not trashtier.

Basically, an alien can agressive grab any living mob. If they stay next
to the mob, facing them for 13 seconds, they will "eat" the mob,
IE:insert them into a list on their custom stomach.

The xeno can then hit an action button to spit out the mob, alongside
some acid.

If the mob is alive enough to pull out a weapon inside the xeno/has one
on it, they can attack the xeno from inside, dealing damage to the
creature and its stomach. If the stomach drops below a threshold, the
mob gibs the xeno and escapes.

I've done my best to steer things away from horny and into gross, though
I'm aware you fucks do your best to blur that line.

Anyway something something balance change something something lets xenos
abduct people more easily, I'm mostly doing this cause I think it has
soul.

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-07-17 01:55:12 -07:00
Fikou
71835a7c1c Nukie Rework Part 2: Nuclear Operative starting gear rework (#68401)
Replaces the nuke op Makarov with the Ansem, a clandestine pistol firing 10mm rounds which do more damage. Ammo costs more.
Replaces the nuke op survival knife with the energy dagger, as well as giving it a soft light, light armor penetration and a light wound bonus.
Replaces the diamond drill in their closet with an entrenching tool, which swaps between crowbar, pickaxe and shovel modes.
Gives the nuke op survival box the syndie box design, as well as a crowbar, screwdriver and mini welder.
Removes the nuke op leader's Krav Maga gloves.
Updates the esword and edagger sprites with ones i had lying around from 2019, they are more consistent.
Moves pistol sprites a bit up to center them.
2022-07-16 19:25:52 -04:00
magatsuchi
7d0f393f5d Tsu's Brand Spanking New Storage: or, How I Learned To Pass Github Copilot As My Own Code (#67478)
Currently, storage works as a subtype of /datum/component, utilizing GetComponent() and signals to operate. While this is a pretty good idea in theory, the execution was pretty trash, and we end up with alot of GetComponent() snowflake code (something that shouldn't even need to be used frankly), and a heaping load of scattered procs that lead into one another, and procs that don't get utilized properly.

Instead, this PR adds atom_storage and proc/create_storage(. . .) to every atom, allowing for the possibility of storage on quite frankly anything. Not only does this entirely remove the need for signals, but it heavily squashes down the number of needed procs in total (removing snowflake signal procs that just lead to one another), reducing overall proc overhead and improving performance.
2022-07-08 18:13:18 -07:00
SMOSMOSMOSMOSMO
76e2a9c292 You can attach a bell to your wheelchair (#67821)
* Bells can now be attached to wheelchairs.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-06-24 15:32:15 -04:00
itseasytosee
878e3b8d37 Implements a Demolition Modifier variable to items, affects damage vs structures and robots. (#66967)
Adds a modifier variable which can be used to increase or decrease a given items damage to structures, machinery, vehicles, and robots (including cyborgs, simple-bots, and anything else with the MOB_ROBOTIC biotype)
2022-06-06 15:29:57 -05:00
Wallem
4bcb073413 Adds a new desk bell item, for sadists. (#67199)
It's entirely unrealistic that there isn't a way for customers to annoy the hell out of any workers they desire with the simple press of a button.
Changelog

cl Wallem
add: Adds a desk bell, so you can let the service industry know how much you truly care about their hearing.
/cl
2022-06-01 08:19:36 +12:00
Kapu1178
6d470992cb This tail refactor turned into an organ refactor. Funny how that works. (#67017)
* Fuck you (refactors ur tails)

* Errors

* Wow. Pain.

* Fixes up probably everything

* finish up here

* Fixes hard del maybe

* original owner hard del

* garbage collection runtime

* suck my peen byond

* Mapped tails

* motherfucker.

* motherrfucker. again.

* Whooopppppsie

* yeah bad idea

* Turns out external organs literally just sat in nullspace forever if their parent was deleted, and didnt Remove() themselves, causing harddels.

* So anyways I repathed all organs

* Fixes

* really.

* unit test... test

* unit test-test but it passes linters this time because im a moh-ron

* I've lost track of what im doing at this point

* Hopefully fixes hard del?

* meh

* Update code/datums/dna.dm

* things n stuff

* repath from master pull
2022-05-30 21:18:34 -07:00
Tim
0c5b3ac1fd New illiterate quirk (#66648)
* New illiterate quirk that makes a person unable to read or write. This applies to books, PDAs, paper, computers, and other electronics.
* New brain trauma dyslexia that makes you illiterate until fixed.
* Ashlizards are now illiterate as a default starting trait. The mining shuttle computer has been updated to compensate illiterate mobs randomly smashing buttons that causes a shuttle launch.

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-05-23 20:06:52 -04:00
Tim
aaef545968 Revert "Add stamped requisition forms now give bonus credits (#66230)" (#66851)
This reverts commit f021767645.

This reverts commit f021767 from:

    Add stamped requisition forms now give bonus credits #66230

This bug was encountered when we were testing this PR but I thought it got fixed.
Why It's Good For The Game

Cargo crates will now reappear.
2022-05-10 15:28:10 +12:00
Tim
f021767645 Add stamped requisition forms now give bonus credits (#66230)
Requisition forms now grant bonus credits when they are stamped by the appropriate stamp listed under "Authorization Required:" on the form. Initially I was just going to have the req forms give the same amount of credits as the manifest but I was convinced to lower both of them so it doesn't unbalance crate returns too much.
2022-05-08 11:28:26 -07:00
Watermelon914
37489698a1 Steal objective can now be cashed out early for less reward as soon as you place the bug on. Removes smuggling objective and adds a new 'Destroy Machinery' objective (#66771)
Steal objective can now be cashed out early for less reward, but completing the time in its entirety will give extra TC and reputation.
The smuggling objective has been removed and replaced with the 'Destroy Machinery' objective, which focuses on disrupting workflow by destroying stuff like protolathes, telecomms and research servers.
Made the easier steal objectives worth slightly less TC
2022-05-08 11:19:22 -07:00
SmArtKar
442ef897bc Refactors firestacks into status effects (#66573)
This PR refactors firestacks into two status effects: fire_stacks, which behave like normal firestacks you have right now, and wet_stacks, which are your negative fire stacks right now. This allows for custom fires with custom behaviors and icons to be made.

Some fire related is moved away from species(what the fuck was it even doing there) into these as well.
Oh and I fixed the bug where monkeys on fire had a human fire overlay, why wasn't this fixed already, it's like ancient.

Also changed some related proc names to be snake_case like everything should be.

This allows for custom fire types with custom behaviours, like freezing freon fire or radioactive tritium fire. Removing vars from living and moving them to status effects for modularity is also good.
Nothing to argue about since there's nothing player-facing
2022-05-04 23:52:07 -07:00
Tim
d24de64f5f Segregate blindness code out of reading check (#66383) 2022-04-30 17:54:36 -05:00
Tim
0c9002808d Pens require gravity to write (#66310)
* TO BE CONTINUED

* Add zero gravity writing restrictions for pens

* Fix gravity check for writing

* Fix writing instrument var declaration

* Fix pen and crayon can_write proc

* Fix lenting issues with code docs

* Remove deprecated code

* Change code comment

* Add literacy checks and writing checks to items

* Remove deprecated code

* Remove deprecated code

* Remove deprecated code

* Remove duplicate code

* Fix grammar for space pens.

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>

* Trigger Build

* Optimize proc order for pen gravity

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-04-27 17:37:35 -07:00
Arkatos1
b98d91c095 updateDialog and updateUsrDialog cleanup (#66494)
This PR focuses on cleaning up two procs - updateDialog and updateUsrDialog. Both of which are/were used updating for old HTML UIs. As these UIs got converted to TGUI over time, these old code fragments started to pile up, often due to coders simply overlooking them. This resulted in them being dead code doing nothing when called, or randomly opening up windows when they shouldnt, for example when a vending machine is screwdrivered and UI cannot even be interacted with.

However, there were also some desirable uses - like opening a window when an ID is inserted into civilian bounty console, which you are then gonna obviously use to pick a bounty. I kept these uses and replaced them with proper ui_interact, so they now always work, instead of them working only when you had them set as a currently used machine on mob. The list of these changes is:

    Civilian Bounty Console will now always bring up its UI when you insert the ID.
    Air Alarm and APC will now always bring up its UI when you unlock their controls.
    Portable Chem Mixer, Chem Dispenser, Chem Heater, Improvised Chem Heater, Chem Spectometer and Chem Master will now always bring up their UI when you add or replace beaker to them.

Two old /Topic calls were cleaned up as well, as they were no longer relevant.

Removes dead or outdated code, adds sensible UX when working with certain UIs.
2022-04-25 18:58:57 -07:00
Ghilker
ffd1ae5fc0 Rebalanced Power consumption, increase for machines (#66059)
Machinery power consumption rebalance.
2022-04-20 09:50:54 +02:00
dragomagol
5489d906b1 Makes paper logging include the text being written (#65917)
Since #51534, it would appear that the actual contents of papers wasn't being logged.
Current paper logs are effectively useless. This makes them actually useful again.
2022-04-05 22:47:22 +01:00
John Willard
2db00c7dc5 standardizes default unfasten wrench (#65425)
I'll do more in the future but I'll limit myself to this because I'm tired, bored, and don't want to make so many PRs touching the same things that I have to deal with conflicts each time one is merged.
Just as an example, screwdriver's gotta be done as well, does the exact same thing wrenches do, I believe.
Standardizes (and touches) each time default_unfasten_wrench is used.

Fixes tool logs, since it relies on tool acts to exist, I'm trying to move as many tool acts to its proper proc. Like a spiritual successor to the tool superpack PRs.

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
2022-04-04 12:44:14 -07:00
Ghom
4d41a2186a Changes the values of the pen colour variable from color name to hexadecimal (#65553)
About The Pull Request

See the title. Hexadecimal values are better than color names for programming since they can be sanitized and are more easily converted to RGB(A) or HSV. Color names aren't really meant to be used in some functions and methods about colors.

TL;DR: color names don't work with the Color common package in the TGUI folder.
Why It's Good For The Game

This will remove the need of a hacky bandaid from /obj/item/canvas/proc/get_paint_tool_color that only covers about half the pen colors anyway.
Changelog

cl
fix: Fixed certain pens breaking painting on a canvas because of their peculiar colors.
/cl
2022-04-01 11:38:18 +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
Wallem
9458d3a801 Changes how fingerprints are applied to objects through gloves. (#65674) 2022-03-28 10:22:33 -07:00
Seth Scherer
6ac55f8936 Removes a forgotten devil proc in photocopier code (#65432)
Someone forgot this here (and even left it in when tgui'ing the
photocopier) So now i'm going to kill it
2022-03-14 21:08:24 +11:00
Gandalf
684eab3d31 Converts SFX keys into DEFINES (#65146)
About The Pull Request

Simply converts all instances of soundkeys that use get_sfx from strings into defines.

E.g. "sparks" is now SFX_SPARKS
Why It's Good For The Game

It makes life a lot easier when you're looking for a sound effect. You just type SFX_ and you get suggestions in VSC. Plus, it looks better.

image
Changelog

Not player facing.
2022-03-11 10:09:18 +13:00
Luc
afc1e44ee2 Tool act superpack 2 (#64428)
About The Pull Request

Continuation of #64375, extracting tool behavior from attackby() and moving it into discrete _act procs. This is about as many files as I had in the last version, as I still want this to be reviewable.

As before, I've tested everything in game and it works as it previously did.
Why It's Good For The Game

The more code moved out of attackby, the more modular things become.
Changelog

cl
refactor: Moves more tool behavior out of attackby().
/cl
2022-03-08 11:43:22 +13:00
Jeremiah
d8b1f31908 Tgui input hotfix (#64698) 2022-02-07 05:04:35 +02:00
Jeremiah
30253cf6a8 Tgui input refresh (#64331) 2022-02-05 19:44:59 +02:00
Tim
be355edab5 Refactor incapacitated optional arguments (#63771) 2022-01-31 00:04:07 -08:00
san7890
21830b1f90 The Lizard's Gas (Station) Update (#64304) 2022-01-26 18:10:12 -07:00
mozi_h
81bb34cd6d tgui filing cabinets (#64065)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2022-01-24 00:12:46 +02:00
Ron
27647c4316 paper rename cancel (#64191) 2022-01-20 18:43:48 -05:00
Seth Scherer
64eadb178c Fixes stamps being randomly applied to paper even when not blind (#64041)
ui_interact doesn't actually return true or false, and for some reason I
was under the impression that it was.
If you really think about it this is Shiz's fault for merging it after
20 minutes and NOT because i didn't properly test it.
2022-01-13 17:23:36 -05:00
LemonInTheDark
f8aad14ae8 Harddel Fix Pack #42 + Better Live Reftracking Support (#63877)
* Hard Del Fixes, Ref Tracking Changes
2022-01-12 22:46:13 +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
Seth Scherer
fa120701e7 You can now stamp papers while blind (#63983)
* fix

* documentation

* missing message

* better msg
2022-01-10 13:06:13 -05:00
Seth Scherer
9cf0bcd679 Pen description fix (#63799) 2022-01-05 13:36:41 -06:00
Jeremiah
bb0098eb59 Fixes paper runtime (#63830) 2022-01-05 13:32:13 -06:00
Fikou
4adebd7f02 modsuit works with speed potions + ai movement fix + file sortage (#63670)
modsuit examining now tells you about wire panels
fixes being able to remove stuff with the dna lock
fixes 63650
fixes 63633
sorts module files
2021-12-29 13:44:27 -08:00
Jeremiah
dcab86ba2c More standard tgui input conversions (#63464) 2021-12-24 13:04:18 +02:00
Jeremiah
1052bc19ed TGUI input box conversions 1 (#63313) 2021-12-11 14:21:35 -08:00
Jeremiah
60922e7cfc TGUI list input conversions (#63315)
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
2021-12-10 02:20:01 -08:00
twilightwanderer
4a5eacf34a Improve the bureaucracy system (#61323)
Adds a blank printing system.

Virtually every Space Station 13 server has its own system of bureaucracy. As a rule, it is some kind of Wiki page with markup tags and a few sample forms. And that's usually the end of it. With stamps and a filing system in place, people rarely use them. This PR takes it upon itself to remedy this situation by introducing form standards into the game itself and adding the ability to print them.

Co-authored-by: twilightwanderer <twilightwanderer@users.noreply.github.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-11-18 20:53:18 +02:00
esainane
b6f761468e [MDB IGNORE] dir sanity, primarily on WALLITEMs (#62601)
About The Pull Request

Wall items mostly use the direction from the floor to the wall in the named mapping helper. Wall items mostly use the direction from the wall to the floor for the internal dir variable.

This leads to a headache when it comes to working out what conflicts with what, and what needs placing where.

Wall frames provided a member, inverse, which specified whether or not to invert the direction of the item when looking for conflicts. It was also used to specify whether to look for conflicts outside of the wall (cameras and lights appear external to the wall) or inside the wall (most wall items). This flag was set for Intercoms, APCs, and Lights. Since APCs and Lights expect a floor-to-wall direction, and Intercoms expect a wall-to-floor direction, this means that APCs and Lights were getting the correct direction, and Intercoms were getting the wrong direction.

Some implications of this setup were:

    You could build an APC on top of another wall item, provided there was nothing external attached to the wall and the area didn't have an APC.
    You could stack Intercoms indefinitely on top of the same wall, provided you weren't in a one-tile wide corridor with something on the opposite wall.

Or both! Here's twenty Intercoms placed on the wall, and a freshly placed APC frame after placing all Intercoms and deconstructing the old APC:

endless-stack-of-intercoms

Not everything used this inverse variable to adjust to the correct direction. For example, /obj/machinery/defibrillator_mount just used a negative pixel_offset to be visually placed in the correct direction, even though the internal direction was wrong, and never set! This also let you stack an indefinite number of defib mounts on the same wall, provided it wasn't a northern wall... except you could do this to northern walls too, since defibs weren't considered a wall item for the purposes of checking collisions at all!

Ultimately, every constructable interior wall item either used this inverse variable to adjust to the correct placement, set a negative pixel_offset variable to have its offset adjusted to the correct placement, or overrode New or Initialize to run its own checks and assignment to pixel_x and pixel_y!
Inventory: Table of various paths, related paths, and the adjustments they used

Unfortunately, untangling /obj/structure/sign is going to be another major headache, and this has already exploded in scope enough already, so we can't get rid of the get_turf_pixel call just yet. This also doesn't fix problems with the special 2x1 /obj/structure/sign/barsign.

Some non-wall items have been made to use the new MAPPING_DIRECTIONAL_HELPERS as part of the directional cleanup.

tl;dr: All wall mounted items and some directional objects now use the same direction that they were labelled as. More consistent directional types everywhere.
Why It's Good For The Game

fml
Changelog

cl
refactor: Wall mounted and directional objects have undergone major internal simplification. Please report anything unusual!
fix: You can no longer stack an indefinite amount of Intercoms on the same wall.
fix: Defibrillator Mounts, Bluespace Gas Vendors, Turret Controlers, and Ticket Machines are now considered wall items.
fix: Wall mounted items on top of the wall now consistently check against other items on top of the wall, and items coming out of the wall now consistently check against other items coming out of the wall.
fix: The various directional pixel offsets within an APC, Fire Extinguisher Cabinet, Intercom, or Newscaster have been made consistent with each other.
fix: The pixel offsets of Intercoms, Fire Alarms, Fire Extinguisher Cabinets, Flashers, and Newscasters have been made consistent between roundstart and constructed instances.
fix: Constructed Turret Controls will no longer oddly overhang the wall they were placed on.
qol: Defibrillator mounts now better indicate which side of the wall they are on.
fix: Some instances where there were multiple identical lights on the same tile have been fixed to only have one.
/cl
2021-11-09 10:02:34 +13:00
John Willard
6c0aba5da4 removes double spaces AFTER symbols (#62515)
* removes double spaces AFTER symbols

* found more
2021-11-03 21:09:35 -04:00
Seris02
fc36aea489 runtime fix for borgs cryoing with upgrade modules + no more mmi laying around after they cryo, and various other runtime fixes (#62091)
human huds will no longer runtime and die when prefs aren't initalised
SSEconomy will no longer have to deal with pathed jobs inside accounts
Some of the negative/neutral quirks that use the mind have been relegated to last_mind instead for runtime purposes
Mafia saymode will no longer runtime when someone uses it with no current mafia game
Autolathe secondary_attack will no longer runtime/work only because of runtimes
MULTIPLE CHECKS FOR QDELETED STACKS BEFORE ADDING FINGERPRINTS
More player_list client checks
A lazyinitlist for proximity monitors, as they used lazyremove which nulls the list when it hits zero things in it
A check for cigarettes in case temperature exposure causes a reaction that removes all reagents
Catwalks no longer runtime every time someone walks on them
/obj/machinery/atmospherics/components/binary/crystallizer will no longer runtime on secondary_attack if someone can't interact
cyborg models will no longer assume the thing they're inside is a cyborg and runtime when it isn't (cryopods)
When a simplemob falls into nullspace, it will no longer runtime (goliaths falling into chasms and etc)
runtime fix in techweb.dm when using a card without a sanity check
runtime fix with folders when they have nothing in them
runtime fix with glowing eyes when the LAZYADD doesn't get called in regenerate_light_effets() and so doesn't initalise the list
2021-10-22 10:31:07 +01:00
Ghom
9c7d509354 Printer Circuit Component (#62012)
I'm adding a circuit component that can print text string on a paper object in a variety of colors and font typefaces (currently only web-safe ones are available, maybe i'll add some fancy ones in the future but they'd need to be imported either through @import of @font-face in a separate CSS not imported by every tgui UI).
It's important to note that because the UI sanitizes new text inputed by users and not what's already written on the paper (so the pen_color and pen_font don't be purged in the process), we can't safely have these strings "printed" into the info variable directly, because of that these values will be stored in two new list variables, one for the text and one for font color, face and the signature. When the paper sheet UI is opened, these will be sanitized and then parsed into the text, so the next time the paper is edited we can clear these two lists.
Obviously better than a hacky byond proc - parsemarkdown() is outdated af -, albeit a bit messy... like the rest of paper code.

Requires #62033.
2021-10-14 19:37:39 +01:00
Ghom
c9831d2709 Fixes two issues with paper code. (#62016) 2021-10-10 21:15:20 +02:00
Ghilker
b95c0366a4 _HELPERS/unsorted.dm has been sorted (#61882)
bring code up to latest standards, move many procs to named files inside _HELPERS
no idea where to put some of these procs, help is appreciated
made more files to contain some unique code, deleted unsorted.dm, we can rest now
2021-10-05 20:22:57 +01:00
Superlagg
236b7ee1e8 Changes paper bins to be easier to use (#61429)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-09-26 01:41:48 -07:00
tralezab
6c01cc2c01 every case of initialize that should have mapload, does (#61623)
## About The Pull Request

stop forgetting to include mapload, if you don't include it then every single subtype past it by default doesn't include it

for example, `obj/item` didn't include mapload so every single item by default didn't fill in mapload

![](https://media.discordapp.net/attachments/823293417186000909/875122648605147146/image0.gif)

## Regex used:

procs without args, not even regex

`/Initialize()`

procs with args
`\/Initialize\((?!mapload)((.)*\w)?`

cleanup of things i didn't want to mapload:
`\/datum\/(.)*\/Initialize\(mapload`
2021-09-24 17:56:50 -04:00