Commit Graph

42 Commits

Author SHA1 Message Date
san7890 de3fb72973 Adds Radio Circuit Component Signaler to list-signalers (#76613)
## About The Pull Request

Fixes #76503

Probably important for this stuff to be logged.
## Why It's Good For The Game

Helps admins figure out the signallers that are signalling, and who
triggered the signaller.
## Changelog
🆑
admin: If a circuit component outputs a radio signal, it should now be
logged in list-signalers.
/🆑
2023-07-10 18:19:32 +01:00
LemonInTheDark ae5a4f955d Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request

Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.

This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.

[Renames comp_lookup to listen_lookup, since that's what it
does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced)

[Moves signal procs over to their own
file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc)

[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e)

[Does something similar to the attackby comsigs (PARENT ->
ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e)

[And finally passes over the examine
signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302)

## Why It's Good For The Game

Code makes more sense, things are better teased apart, s just good imo

## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
2023-06-09 06:14:31 +00:00
Watermelon914 9fd0b4e770 Fixes bypassing integrated circuit cooldowns with module components. (#75581)
## About The Pull Request
See title.
In order for this change to work, these components will not work if
there is no shell, but this will change nothing user-facing because all
player-facing circuits require shells to function in the first place
anyways.

## Why It's Good For The Game
Fixes a cooldown bypass bug.

Closes #75580

## Changelog
🆑
fix: Fixed bypassing component cooldowns with module components.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2023-05-22 18:55:11 -06:00
AnturK 84f69359a0 More horrible 515 proc compatibility. (#71333)
So i left over some basic `/whatever/proc/format` uses in the original
PR this fixes it.

Notable exceptions to the rule:
- Paths in add_verb/remove_verb, we need full path instead of a name
there to access verb metadata so we can't use proc ref macros there.
- regex.Replace, found out that it does not accept call by name. Instead
i added new REGEX_REPLACE_HANDLER so we can at least try to mark these.

There's still leftover global procs that do not use GLOBAL_PROC_REF but
they functionally equivalent so that's for later.

I don't see any reasonable way to grep for this. But if you got any
ideas please share.
2022-11-22 07:55:43 +00:00
AnturK 4d6a8bc537 515 Compatibility (#71161)
Makes the code compatible with 515.1594+

Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword

And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.

@tgstation/commit-access Since the .proc/stuff is pretty big change.

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-11-15 03:50:11 +00:00
tattle d91390a447 [IDB IGNORE] The Great Sweep: Moving dmis into subfolders (part 1) (#69416)
Moves singulo and supermatter dmis into obj/engine, renamed from obj/tesla_engine
Moves Halloween, Christmas, and misc holiday items to obj/holiday
Moves lollipops to obj/food
Moves crates, closets, and storage to obj/storage
Moves assemblies to obj/assemblies
Renames decals.dmi to signs.dmi ...because they're signs and not decals
Moves statues, cutouts, instruments, art supplies, and crayons to obj/art
Moves balloons, plushes, toys, cards, dice, the hourglass, and TCG to obj/toys
Moves guns, swords, shields to obj/weapons
2022-08-24 20:49:35 -03:00
Seth Scherer f1a363c825 Converts a shitload of istypes to their more concise macros (#69260)
* Converts a lot of istypes() to use their istype macro helpers.
2022-08-18 22:08:44 -04:00
Timberpoes 786ac5c855 [MDB Ignore][Bounty][Complete Refactor] Papercode Redux: Too Many Damn Files <Map Conflict Edition> (#68612)
Papercode refactor
2022-08-02 19:27:42 +02:00
MrMelbert cdc50e27eb Fixes some cases which references are used in trait sources, potentially causing hard deletes (#67974)
About The Pull Request

Fixes some cases in which actual references were used in trait sources instead of keys (or ref() keys).

This can cause some rare and difficult to find hard deletes.

Trait sources should be a string key relating to the source of it, not an actual reference to what added it. References within trait sources are never handled in Destroy(), because it's not expected behavior, meaning it can cause hanging references.

So, I went through with a regex to find some cases and replaced them.
I used the following and just picked through the few by hand to find erroneous ones.
ADD_TRAIT\(.+, .+, [a-z]+\)
REMOVE_TRAIT_TRAIT\(.+, .+, [a-z]+\)
Why It's Good For The Game

Less hard deletes, probably.
Changelog

cl Melbert
code: Some traits which mistakenly were sourced from a hard reference are no longer.
/cl
2022-07-04 12:02:17 +12:00
Mothblocks 3161faa499 Fixes laser pointer crashing (#67907)
Fixes #67885.

I don't know if this works because I can't reproduce locally, but I can reproduce on servers so I'll let you know next Sybil round It works
2022-06-22 17:27:12 +01:00
Watermelon914 273eac1096 Added further limitations on the sound emitter circuit component (#67540)
Added limitations on the sound emitter component

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2022-06-19 01:56:10 -07:00
dragomagol 7baf8c3cad Logs circuit speech (#67066)
* logging circuit speech

Co-authored-by: tattle
2022-05-18 13:39:43 -04:00
Bond 23c268f1e3 Adds new sounds to the circuit sound synthesizer (#66324)
adds Lizard Scream, Moth Buzz, Toy Squeak, Xenomorph Hiss, Warp Whistle, Poster Rip, Coinflip, Flash, Flashbang, Laugh Track, Whip, Gavel, and Megaphone to the circuit sound synthesizer
please comment other sounds you want to see in this since its easy to add and gives more creativity to circuit makers
2022-04-21 15:06:29 +01:00
Bond 002241f0e1 Circuit laserpointers (#66175)
* unfinished circuit laserpointer module

If this makes a pr I will be very mad

* Almost done making it function

* adds it to the research path

* lets it be logged

* Makes it work and printable

* removes felinid moving to save time dilation + removes cyborg stun because just no

* minor changes

* removes unused var oops

* guh?? (alphabet)
2022-04-19 18:55:48 +03: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
AndrewL97 619acc1624 Fix skin tone sorting and refactor color procs (#63554)
* Remove superfluous hash from hex2rgb call
Add stack_trace to hex2rgb to catch future nonsense
2021-12-22 21:07:53 -08:00
Watermelon914 bb8bcd2473 Made admin circuits more abstract, they no longer end up in the contents of the shell. (#62630)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-11-08 14:55:19 -08:00
Watermelon914 44a2af780d Integrated the component printer into the integrated circuit UI. You can now link integrated circuits to component printers (#62287)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-10-28 11:42:57 -07:00
Ghom d9f4153a41 clickon signal procs cleanup (fixes inability to examine things in certain situations). (#62180)
Title. The clickon proc calls params2list only after the component signal was sent notwhitstanding clickon comsig procs also needing to access these parameters in order to work properly, which means every one of these comsig procs has its own params2list(params) call. This problem isn't exlusive to these comsig procs. For some reason the params text string is passed down to the melee click chain, afterattack and afterattack_secondary instead of the params/modifiers list... buuut we'll get there later. TL;DR params2list is being called more times than necessary because of a suboptimal old code.

Another issue: Some of these comsig procs ignore parameters such as shift, which is used to examinate things and access popup menus, alt, ctrl and/or middle mouse button. This is the case of the honorbound mutation datum, shy and shy in room components, mechas and the clown car. This is of course also getting fixed.
2021-10-19 13:52:59 +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 b78b9fde74 Adds the CIRCUIT_FLAG_REFUSE_MODULE circuit flag. (#62033)
Components like the MMI one can't be added to circuits more than once since they may register signals with same proctype and similar things which make for some tangled up race conditions if more than one is present.
Unfortunately this safety can be bypassed - with little gain alas, an MMI can't be inserted by attacking the component with it. it needs a shell - by using a module component. That's no good. So I'm adding a flag that can be used to stop certain components from being added to module components.
2021-10-11 19:28:08 +01:00
Watermelon914 126411f405 Refactors how components are triggered and refactors how ports are ordered (#60934)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-09-03 02:22:39 -07:00
LemonInTheDark 1f5e76a39f [s] Audits object say() uses to make handling text more safe (#61147)
Made all say()s deal with encoding, audited all uses of say() to prevent double encoding or like, manually inserting span(). 
I left some stuff without sanitize that only draws from the code, since it's hell to clean up otherwise. That
and I let admins do whatever the fuck they want
2021-09-02 08:36:36 +01:00
Watermelon914 4fb589ba7b fixes html execution with circuits (#61143)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-31 16:39:27 -07:00
TiviPlus 5a59713592 [s] Patch a server crashing exploit (#61057)
if you create a bunch of signallers then spam the send signal button you can grind the server to a halt at low numbers and crash it at high numbers of signallers

This is an imperfect fix as a proper fix would refactor signal datums to use a subsystem but I dont feel like rewriting all of signal code thank you very much

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-08-26 14:23:47 -07:00
Watermelon914 05ede8dc30 Adds Circuit variables (#60590)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-12 18:30:50 -07:00
Gurkenglas e0fad671fd Input ports now connect to multiple output ports. Remove combiner. (#60494)
* tgui bsod

* debug disconnections

* prelim

* recomment

* set_value -> put ._.

* DAMN IT

* reinsert subsystem

* prepare

* unditch signals

* remove combiner

* remove combiner some more

* how did router.dm get here? deleting.

* These two COMSIGS should be one.

* critical typo

* inline cast

* have your signals

* Have your set_input & set_output.

* make compile

* upgrade save/load to n-to-n-wires

* have your documentation

* have your unsafe proc

* pay no attention to the compile errors

* unlist the ref

* paste my for block back in ._.

* fix manual input

* oops pushed too soon

* Have your !port.connected_to?.length

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-08-11 18:48:29 +03:00
TheSmallBlue 2eabd28a06 Fixes a small problem with the pathfinding path and the robot fix merge (#60751) 2021-08-08 00:20:25 -07:00
Watermelon914 0deb859b3c Moves most circuit defines to files (#60705)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-07 16:16:18 -07:00
Watermelon914 13296f5f74 Refactors port types completely and adds the option type. Refactors options to use this new type (#60571)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-04 09:06:48 -07:00
Gurkenglas aa018a857a Circuit component descriptions and module names are now visible to the naked eye. (#60545) 2021-07-31 21:19:43 -07:00
Watermelon914 ac2efd9b86 Removes Destroy overrides from most circuit components (#60492)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-07-28 18:31:42 -07:00
TheSmallBlue c96effce0a Adds a Pathfinding circuit component (#60095) 2021-07-26 04:08:33 -07:00
Watermelon914 11dd7a852b Adds crew monitor usb connections and fixes the soundemitter's frequency port (#59942)
Adds crew monitor usb connections and fixes the soundemitter's frequency port
Allows you to view health and stuff.
2021-07-03 14:43:35 -03:00
Watermelon914 3356f5d2ab Fixed cooldowns for speech and soundemitter circuit components. Brought speech component more in line with other components. (#59958)
Fixes to the cooldowns. Also circuits now use an input trigger/output trigger system which the speech component hadn't yet adopted because it was made before that system was introduced and left out when changing most components to use this system.

Also temporarily disables input/output signal ports for the prebuilt speech relay circuit until I can properly code in a way to load circuits.
2021-07-03 14:42:42 -03:00
Watermelon914 02f0fe75fa Adds the sound emitter circuit component (#59866)
Adds the sound emitter circuit component. Allows the integrated circuit to play a sound of varying volume and frequency.
2021-06-30 15:38:31 -03:00
Watermelon914 7e9e2df721 Adds USB to arrest consoles. Adds list circuit components. (#59850)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-06-29 13:23:14 -07:00
Mothblocks 23790c6c5e Fix missing SIGNAL_HANDLER (#59826)
Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.
2021-06-27 15:43:49 +01:00
Watermelon914 921416b5d8 Adds the airlock shell, refactors USB code to be easier to use, implements USB cables for the binary valve and more. (#59728)
Adds the airlock shell. The circuit has full control over the airlock.
Refactors USB code to be easier to use for less experienced coders.
Implements USB cables for the binary valve to be able to open/close the valve.
Adds a private channel for radios that only lets circuits with the same owner's ID to interact with it.
2021-06-24 14:22:19 -03:00
Watermelon914 2c0288ffe0 Adds the MMI circuit component. Allows inputting signals into circuit component ports (#59743)
Adds the MMI component which outputs signals whenever they click somewhere/try to move.
Allows inputting signals into ports, making it easier to debug integrated components.
2021-06-24 14:14:29 -03:00
Watermelon914 f92403f3ed Added circuit component UI details, added multiplexer and allowed inserting components directly into shells. (#59635)
Adds the multiplexer circuit component - en.wikipedia.org/wiki/Multiplexer
Circuit components can now be directly inserted into shells rather than having to take the integrated circuit out.
Special information can be accessed from components now through the "Info" button besides the eject button on a component.
2021-06-23 18:34:19 -03:00
Watermelon914 f2b39b6803 More circuit components. Restructures the circuit components folder to be more organised. (#59459)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-06-04 21:38:30 -07:00