* Implements a new auto-tagging system for ID card which adds a config to auto-flag them as an intern. (#58236)
About The Pull Request
ID cards when equipped will check the player's living hours if the USE_LOW_LIVING_HOUR_INTERN flag is set. If their living hours is less than the first of the following (checked in order from 1st to 3rd until a valid value is found):
Config USE_LOW_LIVING_HOUR_INTERN_HOURS
Config USE_EXP_RESTRICTIONS_HEADS_HOURS
Hardcoded 15 hours
Then their ID card is tagged as Intern Assignment, unless they're a Head of Staff in which case they become an Assignment-in-Training.
PDAs, Wallets and Tablets also update any ID cards they hold, so equipping a PDA, Tablet or Wallet will also update any ID cards inside it.
This occurs automatically, even if the card does not belong to the owner. This only occurs when the user's assigned_role is a station job.
* Implements a new auto-tagging system for ID card which adds a config to auto-flag them as an intern.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Adds materials to PDAs (#57923)
Puts a small amount of iron, glass, and plastic into a PDA 'cause that sort of material usage makes sense to me
* Adds materials to PDAs
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* Autodocs the slippery component + changes the hardcoded slot whitelist to a variable (#57878)
* Autodocs the slippery component + changes the hardcoded slot whitelist to a variable
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Miscellaneous appearance fixes. (#57133)
* Fixes modular computer runtimes
- Adds a proc to eat the source arg of the update icon signal.
* Fixes a couple things not passing the right args
- Fixes the alien leap hallucination passing a string as the first arg to updat_icon
- Fixes the roulette machine passing the payout as the first arg to update_icon.
* Miscellaneous appearance fixes.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* stop people using message all when their pda doesn't allow it (#57005)
Fixes not checking for Send All permissions in Topic.
* stops people using message all when their pda doesn't allow it
Co-authored-by: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com>
* Refactors the Light Eater and gives it some flavortext. Some minor behavior changes included. (#55551)
Converts the effects of the nightmares light eater into a component and a couple elements
Adds some flavor text to the light eater
Makes the effects of the nightmare's light eater dispel if the armblade is destroyed
Probably a net increase in code quality
More flavortext
The nightmare's light eater effect can be dispelled if you are willing to sacrifice the armblade
* Refactors the Light Eater and gives it some flavortext. Some minor behavior changes included.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* [READY] Adds station traits: Small modifiers that can randomly be chosen each round
* conflicts
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Merge pull request #55798 from spessbro/please-assume-the-position
Integrates vibebots with the pda
* Integrates vibebots with the pda
Co-authored-by: 81Denton <32391752+81Denton@users.noreply.github.com>
* Fixes PDA bombing have equal chances to work on PDAs without manifest access vs PDAs with it (#55036)
* Makes extra difficulty actually work
0
* Actually fixes it as of what Fikou suggested
* no space, sorry
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
* Fixes PDA bombing have equal chances to work on PDAs without manifest access vs PDAs with it
Co-authored-by: Bond <58570888+TheBonded@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'. (#54665)
The PR aims to allow advanced tool users to be defined by traits rather than a hardcoded proc.
Also necessary for the CanUseTopic refactor I'm working on, which will be PRed separately for atomization purposes.
This PR also fixes an inconsistency with can_hold_items (since monkeys can actually hold items).
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* The clown PDA now has in-built comedy detection for when something happens to the clown and plays a fitting sound. (#54695)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* The clown PDA now has in-built comedy detection for when something happens to the clown and plays a fitting sound.
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Directional lighting component + light system (#54520)
Adds in a new type for the lighting system, the directional one. It piggybacks on the overlay lighting to create a directional effect + adds a nice visual cone mask to make the effect feel really directional.
Also: made the static light system respect the light_on variable.
It feels really nice to shine AT things you're looking at with flashlights and the such, it makes maintenance scouring much more immersive too.
Adds more paranoia as you dont see light behind yourself when you've got a flashlight. Plus makes ambushes more fun
* [READY]Directional lighting component + light system
Co-authored-by: Azarak <azarak10@gmail.com>
* Adds sounds for the PDA (#54499)
This makes the PDA play all sorts of nice sounds, aswell as sounds for ejecting or inserting the ID/pen/cartridge.
The noises for pressing buttons will need for your ringer to be ON, the other noises get played either way.
* Adds sounds for the PDA
Co-authored-by: Azarak <azarak10@gmail.com>
* Standardizes attack chain signal returns and fixes a tk bug (#54475)
The attack chain is a bit of a mess, and the introduction of signals hasn't helped in simplifying it.
In order to take a step into untangling this, I re-ordered the attack signals to no longer be by source type and instead to be grouped more modularly, as they are all members of the attack chain and function similarly. They all share the trait of potentially ending the attack chain via a return, but had several different names for it. I joined it into one.
Additionally, fixed a tk bug reported by @ Timberpoes by adding a signal return check at the base of /mob/proc/RangedAttack
Lastly, removed the async call of /datum/mutation/human/telekinesis/proc/on_ranged_attack, which was added as a lazy patch to appease the linter complaining about a sleep on a signal handler (namely in /obj/singularity/attack_tk). Fixed the problem using timers.
Also cleaned some code here and there.
* Standardizes attack chain signal returns and fixes a tk bug
Co-authored-by: Rohesie <rohesie@gmail.com>
* Replaces instances of NanoTrasen with Nanotrasen (#54473)
spellcheck: replaces instances of NanoTrasen with Nanotrasen
* replaces instances of NanoTrasen with Nanotrasen
Co-authored-by: Fikou <piotrbryla@onet.pl>
* 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>
* Fix skill related runtimes in mindless mobs. (#53691)
Fixes related to mindless mobs using skills
* Fix skill related runtimes in mindless mobs.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Overlay lighting component (#52413)
Sparks no longer lag, projectile beams move super smoothly, same with mobs and whatnot. This also allows for easy expansion into directional lights, field-of-view, wee-woo rotating lights or whatever.
It does have a downside: things right-clicked or checked through the alt+click tab will show the light overlay:
This is a BYOND limitation, very well worth it IMO.
🆑
add: Smooth movable lighting system implemented. Projectiles, sparks, thrown flashlights or moving mobs with lights should be much smoother and less laggy.
balance: Light sources no longer stack in range, though they still do in intensity.
/🆑
* Overlay lighting component
Co-authored-by: Rohesie <rohesie@gmail.com>
* tgchat (#52426)
Replaces goonchat with a tgui based chat panel
Fixes#52898Fixes#52663
It is as fast as goonchat was (if not faster in certain circumstances), and is very extensible. It has all the necessary code for sorting messages into categories, which means that one of the next features will be multiple tab support.
Additional features that you will get with tgchat right now:
Massively faster server-side performance compared to goonchat, especially if batching multiple messages to one client.
Message persistence across rounds and reconnects. (All messages are stored client-side in IndexedDB)
More robust scroll tracking. If you scroll up, it will not change the scroll position on new messages like goonchat did.
Multiple message combining. (Currently set to combine up to 5 messages over last 5 seconds).
If using the highlighting feature, it highlights the whole message as well as the matching word.
"Now playing" widget, with preview of the song title, a knob for adjusting the volume and a stop button.
Architecture is as following:
```
to_chat() -+
|
SSchat
(queue, batching)
|
window.send_message()
|
v
+-------------+
| tgui-panel |
|+-----------+|
|| tgchat ||
|+-----------+|
+-------------+
```
Subsystem is basically goonchat, but without all the garbage that slows the servers down (string concatenation, double urlencoding, sanitizing, etc). Now, instead of all that, it's being slowed down by json_encode in /datum/tgui_window/proc/send_message, which IMO is completely worth it, and allows sending various templates and widgets to tgchat.
/datum/tgui_window abstracts the whole window away from you, establishes a nice message-passing interface between DM and JS, with two message queues on each side, automatically loads js/css assets for you, basically does everything. You as a developer only have to worry about sending/receiving messages and write javascript.
tgui-panel is a slimmed down version of tgui, and functions as a container for various widgets, and tgchat is one of them. It of course can be expanded with more stuff.
It's also a separate entry point and a JS bundle, so it's not bloating the main tgui bundle, and is currently sitting at about 230kB.
* tgchat
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* 10K hours
60,000 minutes
hahah
sure if you want a trailing newline i can do that
default cloak gets default skill
lazy list and no equip good
necessary ig
Update code/datums/skills/_skill.dm
Co-Authored-By: nemvar <47324920+nemvar@users.noreply.github.com>
Update code/datums/skills/gaming.dm
Co-Authored-By: Angust <46400996+Angustmeta@users.noreply.github.com>
WIP PDA skill monitor program
hacky fixes till i refactor skills
refactors skills a bit, adds admin skill edit menu
If you have a failing, it's that you're always demanding perfection
...IF you have a failing
i think that's it for the admin skill manger
appeases lord flord
bruh
level names
FUCK!!
unga
Update code/modules/vehicles/vehicle_key.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/topic.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/skill_panel.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Update code/modules/admin/skill_panel.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Apply suggestions from code review
frick
Co-authored-by: Rohesie <rohesie@gmail.com>
EOL and dumb spaces
more rohsie bait
tgui: Query Windows Registry for BYOND cache directory
hell yeah brother
update tgui and dmi
CLRF and bat file
typo ig
* tgui and new janicloak that i accdiently changed on another branch
* jani
* gamer cloak
* trim trailing whitespace
* tgui
* bruh
* variable renaming
* 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
About The Pull Request
Removes minor and major crimes to simplify them, they are just "crimes" now.
Adding a crime is now 2 1 pop-ups instead of 3.
Instead of adding details in sechuds, you can add it in sec consoles or by viewing crime in hud.
Why It's Good For The Game
My goal was to simplify adding crimes to encourage security to actually do that.
Since the space law is only a roleplay suggestion, we don't need that distinction.
Changelog
cl
del: Deleted minor and major crimes (they are just crimes now).
tweak: Adding a crime (via sec huds) is now only 1 pop-up, seriously try it.
add: You can now add crime details in security consoles.
/cl
* Makes raw HTML and browser datum popups UTF-8 aware
Admin menus specifically really shouldn't break just because you named some guy "☺s the Clown"
* Fixed new_player.dm
* Fucking filing cabinets
Living and machine stat vars are pretty different, one uses flags and other number-defines.
This should make some other mass-replacements and searches a bit easier.
* Unicode support Part 2 -- copytext()
This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved.
I replaced a ton of
````
var/something = sanitize(input())
something = copytext(something, 1, MAX_MESSAGE_LEN)
````
with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there.
This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs.
* Makes the code functional
* Assume color hex strings are always # followed by ascii.
Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there.
* Removes ninjaspeak since it's unused
* update_icon() improvements
Fixes some update_icon() calls to properly call parent and use update_overlays() and update_icon_state().
The rest of obj/item fuck it
* Suggested fixes, also passes the linter
* I always forget . = ..() is faster than return ..() FOR SOME FUCKING REASON
* Actually this is better
* Signilzes datum/action to update its icon when its connected item does.
* Unicode support Part 1
Makes all calls to ascii2text() and text2ascii() unicode aware as well as all calls in code/__HELPERS/text.dm.
Adds defines for the footext_char() procs to maintain 512 support.
I did some cleanup on the text helpers since a lot of them were really, really bad.
reject_bad_text() and reject_bad_name() have an arg to reject non-ascii chars which defaults to TRUE.
* Give travis a more recent beta
* Ultimate compat
Added the _char procs I was missing
Test the build instead of the version because Lummox is a goddamn moron
* Suggested fixes, removes the last of the dd_ helpers
* Reading the reference is very important!
* Minor code improvements and a comment
* Typo
The grille one could use a lower level solution eventually. As in
separation of simple animal attack/visuals/aftereffects but that's
bigger refactor.
* Fixes explosion dismemberment runtime.
* Fixes removing pen from PDA runtime.
* Mulebot bullet act runtime.
* Trying to refuel plasmacutter with fuel runtime.
* Fixes grille runtime.
* Teslium reaction runtime
* lavaland elite win runtime
* PDA cart swapping, eject hotkey and verb
* Update PDA.dm and action.dm
- Toggle light action button
- Proper use of mob/user instead of usr when appropriate
- Fixes UI not updating when ejecting or inserting cartridge or ejecting ID
- Makes toggle_light item action work with PDAs