* Medical/Security records now use the max/min age.
* merge conflict
* Refactors crew records (#72725)
I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.
- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)
<details>
<summary>previews</summary>
Editable fields & security console

Medical records

Look and feel of the more current version

</details>
TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler.
Manifest_inject is made readable.
Probably bug fixes
🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* I've got something that now actually works
Just got to incorporate the records into what players can actually see.
* Turns out that client has already been transferred after all
* Adds the past records in the TGUI records (they're kinda ugly but it works, so y'know)
* Whoops
* Hate you too sometimes Prettier
* Fixes ghost roles using LITERAL records, which caused problems
* Fixes the leaks caused by ghost roles not getting their name right because of the stupid freaking special() proc
* I hate list operations man they're so stupid
* Fixes the stars on the crew manifest!
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: KathrinBailey <53862927+KathrinBailey@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Fixes a typo in comments (#73418)
## About The Pull Request
What it says on the tin.
## Changelog
Nothing any users would notice.
* Fixes a typo in comments
---------
Co-authored-by: Bloop <vinylspiders@gmail.com>
* Refactors the detective scanner to fix potentially getting stuck in the 'scanning' state (#73058)
## About The Pull Request
Detective scanners make use of a `scanning` boolean to determine whether
or not you can perform another action with it.
It gets set to `FALSE` in its procs, but if any of those procs runtime
for whatever reason this could lead to that never happening.
Which in turn leads to it getting stuck in the `scanning = TRUE` state
indefinitely.
---
This PR just moves the functions into wrapper functions so that should a
runtime occur, the boolean will still get set to `FALSE`. Also changed
the boolean's name from `scanning` to `scanner_busy` because it is also
used for the print function.
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/18241
## Why It's Good For The Game
Code resiliency
## Changelog
🆑
fix: fixes a potential bug that can cause the detective scanner to get
stuck in a scanning state indefinitely
/🆑
* Refactors the detective scanner to fix potentially getting stuck in the 'scanning' state
---------
Co-authored-by: Bloop <vinylspiders@gmail.com>
* Fixes DNA scanner not picking up fibers (#72295)
## About The Pull Request
Fixes#72293
Copy paste error
## Why It's Good For The Game
Fibers are important
## Changelog
🆑 Melbert
fix: Det's scanner sees fibers again
/🆑
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Fixes DNA scanner not picking up fibers
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Fixes forensics scanners breaking on scanning blood. (#71981)
## About The Pull Request
Fixes#71973
For some reason it attempted to append `[reagents[volume]]` to the
string
`reagents` is
A. not indexed by volume
B. not a list, but a reagent datum
Replaces it with just a readout of the reagent's volume, cleans up some
associated code
## Why It's Good For The Game
Scanning blood is good and has important information
## Changelog
🆑 Melbert
fix: Detective Scanner can scan stuff that contains blood again.
/🆑
* Fixes forensics scanners breaking on scanning blood.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Modularizes the forensics scanner, and letting items modify it. (#71109)
Overhauls the fornesics scanner system, letting items modify the readout
and adding additional information through the COMSIG_DET_SCANNED signal.
Buffs the forensics scanner by letting it reveal more info, makes the
code look nicer, and allows for a bit more flavour text to be added to
items.
* Modularizes the forensics scanner, and letting items modify it.
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
* Balloonify the forensic scanner and cut on `to_chat` spam (#70820)
## About The Pull Request
Turns all the minor `to_chat` messages that the forensic scanner made
into balloon alerts.
Makes the `visible_message` be ignored by the scanner's user, as it was
creating 2 messages on the chat box 4noresin.
Adds a 3 second `do_after` when you try to delete logs from your scanner
to help avoid accidental deletion of logs.
Kills a pair of single letter variables while I was there.
And gave better clarity on an error message for the scanner saying it
was either busy or had no logs.
## Why It's Good For The Game
Better UX for the forensic scanner.
Using it spammed your chat with too many pointless messages that work
better as short balloon alerts.
## Changelog
🆑 Guillaume Prata
qol: The forensic scanner uses balloon alerts for most of it's simple
feedback messages, enjoy having an easier time hearing the radio
chatter.
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Balloonify the forensic scanner and cut on `to_chat` spam
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* [MDB Ignore][Bounty][Complete Refactor] Papercode Redux: Too Many Damn Files <Map Conflict Edition>
* Fixes merge conflicts and compilation errors, alongside fixing the joker card to make it fully functional again
* Fixed a bunch of info variables in map files
* Alright this is why I wanted this merged yesterday
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Tsu's Brand Spanking New Storage: or, How I Learned To Pass Github Copilot As My Own Code
* Delete storage.dm
* yippee
* shit
* holy shit i am stupid
* more fixes
* fuck
* woops
* Refactors the forensics component into a datum
* Refactors the forensics component into a datum
* Refactors the forensics component into a datum
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Traitor bugs transfer fibers + prints when planted in a room (#64079)
Planting a bug down in a room will transfer the fibers and prints from the held bug to the placed bug
Adds some warnings for newer players that they may be leaving fingerprints, and lets them know how to deal with it
Puts in a missing doc comment
Docced + better var names for old helpers
* Traitor bugs transfer fibers + prints when planted in a room
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* MOD update: Modular Cores
* Fixing all dem conflicts
* Okay now it's going to compile too
* Fixing some Trigger() (they triggered me)
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* runtime fix for nulled forensic component runtime (#62029)
not actually certain if this is a fix or a cover up of the real problem to be honest...
edit: nevermind, found the actual problem and made another commit that will fix it.
Runtime in detective_work.dm, line 35: Cannot execute null.add fingerprint(). x 36
* runtime fix for nulled forensic component runtime
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* EVEN MORE HARDDEL FIXES (#60228)
Fixes a ton of harddels, sourced from #59996
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.
See you on the other side
Makes the cryopod control computer into a weakref, never trust bee code
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @ stylemistake
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything
Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @ MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.
<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->
## Why it's not good for the game
I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.
* EVEN MORE HARDDEL FIXES
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code)
* Mirror
* genetically-editable mutant bodyparts and colors - skyrat edition
Co-authored-by: Funce <funce.973@gmail.com>
* Modifies right click logic so that it is not the same priority as modifier keys. (#59656)
Strips out the existing right click code - Due to the myriad of ways right clicking has been implemented, dedicated signals and procs for right clicking without modifiers are fundamentally incompatible with our system of primary and secondary attacks.
Adds additional signals to attacking code. These signals allow atoms to cancel the attack chain early on secondary attacks, or override the standard procs and not send signals to prevent any undesired behaviour from signal handlers.
Items that used RightClick procs have been converted to attack_hand_secondary.
The slaughter demon, having its own set of snowflake code as poor OOP principles have been applied in UnarmedAttack() procs with lacking calls to parent procs and arbitrary redefinition of behaviour, checks for a right click in its own UnarmedAttack() and performs a bodyslam off that.
Storage components now hijack the secondary attackby stage via signals to handle their opening and closing shortcuts on right click. When you right click a storage component equipped item with an object in your active hand, the object has an opportunity to perform its logic in pre secondary attack code and cancel the attack chain. If it does not cancel the attack chain in pre-attack, then the storage component takes over for attackby and, if possible, opens the relevant inventory and ends the attack chain.
The forensic scanner is a proof-of-concept of this working in action. With its scan logic moved from afterattack code to pre attack code for right clicking, right clicking with the scanner will now perform a scan where previously one was impossible. Left clicking still does what it always does - Scans at the very end of the attack chain.
The logic still isn't perfect - For example, you still can't attack containers in melee even in combat mode (you'll either open them or put your weapon into them regardless of which option you choose) - But this is a better setup overall which allows for items to at least override this behaviour in pre-attack if needed.
* Modifies right click logic so that it is not the same priority as modifier keys.
* a
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* fix a lot of shit
* i hate you
* firealarm/cyborg
* amend
* more fixes
* why is this FUCKING needed
* Update code/modules/detectivework/detective_work.dm
Co-authored-by: Funce <funce.973@gmail.com>
* Update code/modules/detectivework/detective_work.dm
* Update code/modules/detectivework/detective_work.dm
Co-authored-by: Funce <funce.973@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* moves the definition for transfer_blood to the file for gloves (#57352)
* moves the definition for transfer_blood to the file for gloves
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Rags fixes for smothering (#54428)
Makes it so that the rag can be used to transfer reagents to a carbon again.
The check was set to does the carbon have any reagents when it should have een does the rag have reagents.
* Rags fixes for smothering
Co-authored-by: NightRed <nightred@gmail.com>
* Converts A && A.B into A?.B (#54342)
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
* Converts all A && A.B into A?.B
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is
Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Couls <coul422@gmail.com>
* Don't initialize the atom_colours list on atoms until it's actually needed
* Moved bloody_hands var to mob/living/carbon/human instead
* Added COMSIG_COMPONENT_CLEAN_RADIATION signal to reduce moms spaghetti
The shower and suit storage unit now calls this signal instead of either doing it manually or doing it via the washed proc
* Cleaned up carbon washing, renamed washed to wash
* The wash proc now doesn't take the washer as first arg because that wasn't used anywhere
* The wash strength is no longer optional
* Carbons now overrides the wash proc instead of using the signal
* Properly check for obscuredness before washing any equipped items
* Properly wash all items and bloody hands etc
* Added clean_lips proc for humans for cleaning any lipstick
* Cleaned up washing. Washy stuff now calls wash instead of calling the clean signal directly
* Renamed is_cleanable to ismopable, gives this category a more fitting purpose. Many things beyond floor decals are cleanable. It is now also determined using the atom layer instead to make it more generic.
* Properly utilize the is_cleanable define
* Added wash override for turfs where they also wash any mopables on the same tile
* Space cleaner and cleaning element etc now simply washes the mob instead of doing its own manual cleaning on ~some~ equipped items
* Non-component washables now simply override wash instead of registering for the clean signal
* Fixed some left over clean signal registers not returning true
* Added clean_strength var to space cleaner
* Moved human wash proc next to the other washing procs
* Also wash glasses and mask if not obscured when washing face
* Fixed attempting to "scoop up" cleanable decals using a rag
* Fixed plasmaman spacehelm icon not updating when washed
Also removed a duplicated worn_overlays proc
* Fixed head icon not updating when washing lipstick
* Moved radioactive clean signal register to where it should be
* Added atom radiate VV verb for debugging
* Redesigned the CLEAN constants into a more sensible flags setup
This makes it more dynamic, cleaning apparatuses can clean more specific than just a cleaning strength.
* CLEAN_TYPE_* flags indicate a specific cleanable, such as blood, fingerprints or disease
* CLEAN_* consts consist of a combination of cleaning types to make cleaning apparatuses have a consistent behaviour on what they clean
* Fixed broken rad removal logic in showers
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* Removed unneccesary bool from sink code
* Fixed wrongly named variable in turf wash
* Renamed bloody_hands to blood_in_hands
Co-authored-by: Rohesie <rohesie@gmail.com>
* Converts everything to use setAnchored() + other fixes
* Fixed singulo debug
* singulo again
* forgot to move the vv_edit proc
* caught that this time :)
* changes
* Update code/game/atoms_movable.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
* Case of lower
* More changes
* Ruins the nice 420 diff, brainfart when doing the second batch of conversions
* More changes
* Next batch. I think
* Converts even more paths
* Restarts bots
* Capital Free Zone
* Come on travis, do something
* Renames areas
* Bots, please stop dying
* Updates CONTRIBUTING.md and updates a few paths I missed.
* APC recgarftzfvas
/obj/item/computer_hardware/recharger/apc to /obj/item/computer_hardware/recharger/apc_recharger
* Initial update
* tgui ofcourse
* Small fixes
* More lint fix
* Updated to support signatures and adding to paper
* Sign and adding to paper work, need to tune it a bit though
* Ok, signatures and adding work, still working on stamps
* Stamps now, fix rotate and cleanup tommow
* Alrighty! Lets try for some testing!
* Stupid travis
* annnd the bundle
* Minor fixes
* DONE. Still have some code cleanup, but all the major features work now
* Requested changes cleaned up formating
* Dammmn you bundle!
* Fixed the preview issue
* Updated bundle
* Ok, some more fixes and clean up
* Ugh damn you tgui bundle
* Update tgui.bundle.js
* Renames a few variables. Also reorders fallback order again.
Renames item_state to inhand_icon_state
Renames mob_overlay_icon to worn_icon
Renames mob_overlay_state to worn_icon_state
worn_icon_state/mob_overlay_state now never gets used for inhands.
* Fixes some comments
* Fixes map issue
* Restart lints
* Properly resolves conflicts
This disallows evidence bags from holding any subtypes of obj/item/storage, so that evidence bags can't hold other storage items, that hold evidence bags holding storage items that hold evidence bags holding storage items etc.
Ideally, they should probably be a storage subtype themselves, but this will keep them from holding effectively infinite storage.
* Replica pods notify ghosts, can show the blood DNA of injected samples
* basically im monky
* h
* removes garbo, adds hints that "blood DNA" is just the UE