mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-04-24 09:17:33 +01:00
088409bbe376a7adcd4d1fb747cf4a5e4f257c5b
27 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
3690bd3d8a |
Add distance output to direction circuit component, resizes several shells (#86577)
## About The Pull Request The direction component outputs the direction of an entity if it's within 7 tiles of the circuit. Since it already checks the distance, I added distance as one of its outputs. Besides that, I did a pass over the generics and shells and resized many of them. Most I resized to be small or tiny, except for the airlock shell, which I set to be bulky because it's a whole ass door. The shells I didn't touch remain at 'normal' size. 1) All handheld shells set to small, compact remote set to tiny 2) all components and the generic of the circuit set to tiny 3) drone shell set to small 4) airlock shell set to bulky ## Why It's Good For The Game Returning the distance spares any would be circuiteers from having to do a labyrinthine set of calculations to determine distance themselves. Making most circuits more portable makes them more attractive for people to tote around. ## Changelog 🆑 Bisar qol: The 'direction' circuit component now also returns the distance of its target. balance: Most circuit shells and the generic component and generic circuit have had their size reduced. balance: The airlock circuit shell has had its size increased. /🆑 --------- Co-authored-by: Metekillot <ubuntu@ip-172-26-7-23.us-east-2.compute.internal> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
96b8a39008 |
Circuit health analyzer/state components now work on targets inside lockers (#85649)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Makes circuit health analyzer/scanner components check distance to target turf instead of target itself similarly to (most) other components. (There are exceptions, presumably due to balancing? concerns, but this feels like it should not have been one) This doesn't feel intentional so I marked it as a fix, given that BCIs stopping being able to scan their occupant is rather nonsensical ## Why It's Good For The Game Currently BCIs with health analyzer components stop working if the owner goes into a locker which is pretty stupid. Most components also only check for turf distance, and while this could theoretically be used to pinpoint someone's hiding spot there are far better ways to do so with circuits ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and its effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 fix: Circuit health analyzer/state components now work on targets inside lockers /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> |
||
|
|
0db2a23faf |
Adds a new power storage type: The Megacell. Drastically reduces power cell consumption/storage. [MDB Ignore] (#84079)
## About The Pull Request As the title says. A standard power cell now only stores 10 KJ and drains power similar to how it did before the refactor to all power appliances. The new standard megacell stock part stores 1 MJ (what cells store right now). APCs and SMESs have had their power cells replaced with these megacell stock parts instead. Megacells can only be used in APCs and SMESs. It shouldn't be possible to use megacells in any typical appliance. This shouldn't change anything about how much 'use' you can get out of a power cell in regular practice. Most should operate the same and you should still get the same amount of shots out of a laser gun, and we can look at expanding what can be switched over to megacells, e.g. if we want mechs to require significantly more power than a typical appliance. Thanks to Meyhazah for the megacell icon sprites. ## Why It's Good For The Game Power cell consumption is way too high ever since the power appliance refactor that converted most things to be in joules. It's a bit ridiculous for most of our machinery to drain the station's power supply this early on. The reason it's like this is because regular appliances (laser guns, borgs, lights) all have a cell type that is identical to the APC/SMES cell type. And it means that if we want to provide an easy way to charge these appliances without making it easy to charge APCs/SMESs through a power bug exploit, we need to introduce a new cell type to differentiate between what supplies power and regular appliances that use power. This is primarily what the megacell stock part does. This moves us back to what it was originally like before the power refactor, where recharging power cells wouldn't drain an exorbitant amount of energy. However, it maintains the goal of the original refactor which was to prevent people from cheesing power generation to produce an infinite amount of power, as the power that APCs and SMESs operate at is drastically different from the power that a regular appliance uses. ## Changelog 🆑 Watermelon, Mayhazah balance: Drastically reduces the power consumption and max charge of power cells balance: Added a new stock part called the battery, used primarily in the construction of APCs and SMESs. add: Suiciding with a cell/battery will shock you and potentially dust you/shock the people around you if the charge is great enough. /🆑 --------- Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com> |
||
|
|
f6d28662a3 |
Add circuit component cameras (#83578)
## About The Pull Request This PR introduces a limited set of camera components that can be used by surveillance security consoles and the PDA/laptop camera app. <img width="366" alt="components" src="https://github.com/tgstation/tgstation/assets/80724828/0e628863-9998-46d6-8822-e0a44543b4c2"> There is four camera components, each limited to a specified shell circuit type. Additionally, drone circuit shells can now use the recharge stations too, much like how mobs with BCIs can recharge. ### New Components <img width="136" alt="drone camera" src="https://github.com/tgstation/tgstation/assets/80724828/fd045871-56bf-44a6-bb4f-ebe895d56d3d"> * Drone Camera This camera component captures the surrounding area. It has an option to set the camera range (near 5x5/far 14x14). <img width="136" alt="bci camera" src="https://github.com/tgstation/tgstation/assets/80724828/16bf2dd1-823b-4d66-8249-5d0f1bb1b779"> * BCI Camera This camera component uses the active user's eyes as a camera function. If the user's sights are damaged, the range will be forced to the near setting. If the user is unconscious/dead/blinded or has no eyes, the stream will be cut off. It has an option to set the camera range (near 5x5/far 14x14). <img width="136" alt="polaroid camera" src="https://github.com/tgstation/tgstation/assets/80724828/7c4d53df-b4af-4f7c-8942-a63842510720"> * Polaroid Camera Add-On This camera component streams to a camera network. The camera range is hardcoded to the near setting (5x5). <img width="136" alt="airlock camera" src="https://github.com/tgstation/tgstation/assets/80724828/5d9e9d55-49fc-45a7-99c8-aaf1ae08f6d1"> * Airlock Camera This camera component streams to a camera network. The camera range is hardcoded to the near setting (5x5). ### Features * The cameras can be EMP'd and will be disabled for 90 seconds if successful * When the cameras are active, they will actively drain the cell's power per second (near range uses 3kJ & far range uses 8kJ) * Advance camera console/AIs can use these cameras, however the camera light is disabled (they will be useless in dark areas) ### Screenshots In Action <details> This is the drone camera viewed on a security camera console<br> <img width="425" alt="near" src="https://github.com/tgstation/tgstation/assets/80724828/e5247828-0fee-4552-9e70-5e5ee897c117"><br> This is the same drone, now set to the far range setting<br> <img width="425" alt="far" src="https://github.com/tgstation/tgstation/assets/80724828/e58e3e85-aa90-4f1a-9dff-957c65764b77"><br> </details> ## Why It's Good For The Game This promotes emergent gameplay and improves the overall usefulness for drones as they can be 100% used remotely. ## Changelog 🆑 add: Added new circuit camera components qol: Circuit drones can now recharge at recharge stations /🆑 --------- Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com> |
||
|
|
53518e043b |
Circuit editor QoL and new circuit components (#82969)
## About The Pull Request This PR introduces a number of minor quality of life improvements to already existing circuit components, and adds three new components. <img width="600" alt="preview" src="https://github.com/tgstation/tgstation/assets/80724828/85d39b6d-b055-430e-8996-0da088616887"> ## Why It's Good For The Game This improves the overall experience for circuits. ### UI changes <img width="550" alt="grid aligned" src="https://github.com/tgstation/tgstation/assets/80724828/cc7b43b5-292f-4643-beab-e01ae675fb19"> Grid align is now an option for circuit designers. It will round objects to the nearest 10px units internally, and can be toggled on/off by the new additional button beside the component menu button. This makes circuits easier on the eyes as things are pixel perfect aligned. <img width="814" alt="tooltips" src="https://github.com/tgstation/tgstation/assets/80724828/0d31c98f-3be9-46e0-ab37-20bac3799112"> All three buttons have been given tool tips. ### Tweaked Components <img width="136" alt="voice activator" src="https://github.com/tgstation/tgstation/assets/80724828/21dd0f65-cb98-4bd5-aeb0-63315e842cb6"> * Adds a on/off flag to the voice activator component -- This saves power for circuits as you're not forced to use a compare flag check to turn off voice activation <img width="136" alt="speech" src="https://github.com/tgstation/tgstation/assets/80724828/9137b76c-3077-4597-8411-2d9694b39e9e"> * Adds a quiet mode flag to speech component -- This is ideal when you want a device to speak, but don't want other people to hear. A good example would be a handheld translator that you only want to hear yourself. ### New Components <img width="136" alt="ntnet list literal" src="https://github.com/tgstation/tgstation/assets/80724828/657c851b-d442-4a63-8650-410cb8e76089"> * An NTNet Send component that allows everything to be input much like the list literal component -- This makes sending stuff over NTNet easier for the user, and use less power as it won't require an additional list literal component <img width="136" alt="compare health state" src="https://github.com/tgstation/tgstation/assets/80724828/0bed076c-3aa1-4931-af90-2b9eb8e1ae9a"> * A health comparison component that checks the entity's health state, and can return true or false depending if the entity is alive, sleeping, unconscious, critical or dead -- This could be achieved by using a health sensor and a compare component, however it lacks the ability to know when a entity is unconscious or sleeping <img width="136" alt="toggle" src="https://github.com/tgstation/tgstation/assets/80724828/7017b6bf-937a-42ad-87f3-4f1134853ac3"> * A quick toggle component to allow the switching between a true and false state -- This could be achieved by using a logic component and self linking, however this makes it far easier for newcomers to make something as simple as an on/off switch (such as a handheld translator which uses the front button to turn on/off) ## Changelog 🆑 qol: Add tooltips to circuit editor buttons qol: Add grid alignment mode to circuit editor add: Added new compare health state component add: Added new NTNet send list literal component add: Added new toggle component qol: Added activity toggle to voice activator component qol: Added quiet mode to speech component qol: NTNet send component will not use power/trigger if NTNet is offline /🆑 |
||
|
|
d36a5af64f |
Removes material breakdown flags, traits & miscellaneous fixes. (#80389)
## About The Pull Request 1. Removes material breakdown flags i.e. all flags with the format `BREAKDOWN_XXX`. These flags do nothing, there are no special checks to transform materials based on these flags, they are passed around just because certain procs require them for syntax purposes only. Apparently there were plans to make these flags do something special from the comment |
||
|
|
569d8f5a72 |
Refactored the TTS subsystem to more properly handle message garbling. Added a volume preference for TTS. (#75559)
TTS subsystem refactor. --------- Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> |
||
|
|
48e36ef2c7 |
Saycode refactor, unit tests, and fixes (#69799)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> Fixes #69798 Fixes #71621 When using hypnosis on a victim, the language should be accounted for and whether the victim can properly hear it. Before the hearing code would magically translate any message, this is no longer the case. This also fixes the language barrier involving hearing for: - Mind echo trauma - Phobia trauma - Hypnotic trigger trauma - Split Personality brainwashing trauma - Codeword hearing - Hypnotize status effect - Impure Inacusiate reagent ## Why It's Good For The Game <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> Better consistency, improved readability, and less bugs in the future. ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 fix: Fix hypnosis, mind echo trauma, phobia trauma, hypnotic trigger trauma, split personality brainwashing trauma, codeword hearing, and impure inacusiate reagent all bypassing language and hearing checks. If you try to give commands to a victim in a language they don't understand, they will no longer magically understand the words. fix: Fix sign language having accent modifications refactor: Refactored saycode to be more robust, readable, and have more unit tests. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
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>
|
||
|
|
0ea35e01c7 |
Changes reagentscanner circuit component to use Table (#69745)
Changes components\atom\reagentscanner to use table list from Assoc list. Added purity output to components\atom\reagentscanner. At time of making this its impossible to iterate through the output of reagentscanner via loops or numerical index and to determine the amount or the reagent scanned you needed to know its associated value which is less than idea. Queried this issue on coderbus meeting 3 then asked Watermelon and he agreed that a change would be good. Added a "purity" to the table outputs to make shells of this component "desirable" to chemistry who need to use Ph_meter to check exact purity. If this not allowed I’m willing to make an \atom\reagentscanner\adv variant that will comparable to Ph_meter. I intend to give the same treatment to materialscanner. |
||
|
|
04552deb5c |
Fix missing SIGNAL_HANDLERs (#63404)
More missing signal handlers caught by dm-lua |
||
|
|
21c89ba12b |
Reagents scanner circuit component (#62704)
It allows people to make circuits objects that interface with reagents. |
||
|
|
45e7aeda84 |
Material Scanner circuit component (#62677)
* Material Scanner circuit component * get_turf(src) to get_location() |
||
|
|
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> |
||
|
|
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> |
||
|
|
682e7132b5 |
cleanup of _HELPERS/game.dm (#61859)
some more cleanup, game.dm this time |
||
|
|
6fde2a7b9f | Adds the Proximity Pinpointer circuit component! (#61574) | ||
|
|
a80026018a |
Adds the "speaker name" port to the voice activator circuit component (#61602)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> |
||
|
|
b6df5b0046 |
Admin signal handler circuit component (#61246)
* Refactors how components are triggered and refactors how ports are ordered * Fixed trigger problems * Cleanup * Tweaked the code a bit * Fixes compile time errors * Fixes CI * Removed the callback datum that each port had. * Tweaked add_option_port * Fixed sleep problem * Uses regex datums and macros for text-manipulation (#61042) * bane component to element. nullrod now uses it for revenants. (#60640) * bane component to element. nullrod uses it for revenants. * TRUE to FALSE * Update field_generator.dm (#60918) * Automatic changelog generation for PR #60918 [ci skip] * More thermomachine fixes (#60998) fix error when typing the mole efficiency (instead of 0.1 it was 0.001, didn't push the change) fix infinite power consumption (capped) fix efficiency not being tied to laser tiers (issue connected to infinite power consumption) Also fix #61006 (Thermos not working at all because of the efficency stuff added recently) * Automatic changelog generation for PR #60998 [ci skip] * Automatic changelog compile [ci skip] * colossus-type projectiles no longer explode sealed vehicles (#61030) * Automatic changelog generation for PR #61030 [ci skip] * Automatic changelog compile [ci skip] * makes QDEL_IN() not runtime due to using a ternary operator on an arg, fixes several runtimes that happen every emitter firing (#61078) `QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity, instance_key), qdel_in > 0? qdel_in : 5)` the use of a ternary here in hitscan code got parsed as `qdel_in > 0? qdel_in : 5 > GC_FILTER_QUEUE ? WEAKREF(item) : item` and since qdel_in is 3 for emitters this was passing only the argument 3 into qdel() when the timer callback was invoked. so every tile that an emitter covers when it fires on master runtimes with a bad del exception and effect doesnt delete * Atmos re-Defined (#60855) This PR takes the atmospherics.dm in _DEFINES and split it into several files to lower the mess, increase readability and improve on the code for later uses Also added some docs here and there * Allows you to cancel TGUI alerts (#61072) This was requested by someone downstream. Some TGUI alerts offer two options e.g. (Kill Bob, Kill Janice), In byond alerts you'd be able to cancel by pressing the X, but tgui alerts don't support this. I've added an option to enable the normal X in the top right, so you can cancel out of alerts if you enable it. * tgui: Silicon Station Alerts (#61070) This PR unifies all Station Alert menus into one datum system. This also means that the old html menus will be converted to tgui, which is a case for cyborg and AI menus. All menus above differ very little, practically only by amount of type of alerts they show except for the AI menu, which also has access to cameras in the alert areas and knows number of the alert sources. * Automatic changelog generation for PR #61070 [ci skip] * Rewords the traitor panel's policy tooltip (#61098) Fulp's spacelaw isn't a suggestion, which makes the upstream comment in the tgui kind of an unintentional griffon. * Automatic changelog generation for PR #61098 [ci skip] * Many smart pipe fixes (#60981) * Smart pipes now actually go over smart pipes This was ostensibly the main feature of smart pipes, so should be fairly important Parentheses are technically not required around the |, but I think it's important to emphasise the importance of parentheses around bitwise operators as this was apparently broken since |
||
|
|
126411f405 |
Refactors how components are triggered and refactors how ports are ordered (#60934)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> |
||
|
|
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> |
||
|
|
aa018a857a | Circuit component descriptions and module names are now visible to the naked eye. (#60545) | ||
|
|
ac2efd9b86 |
Removes Destroy overrides from most circuit components (#60492)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> |
||
|
|
44779b794c |
makes get_hearers_in_view() faster AGAIN, fixes issue with previous optimization (#60219)
fixes #60197 woke up today with a ridiculous idea of semi-automatic compile time loop unrolling, wasnt worth the complexity in the least but it made the basis of this PR which i then continued work on. makes area_sensitive_contents into a more general system of important_recursive_contents where we can define reasonable uses to replace recursive contents iteration of the type found in get_hearers_in_view() as long as everything that uses it isnt something incredibly common to the point that it noticeably increases memory usage. |
||
|
|
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> |
||
|
|
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. |
||
|
|
f2b39b6803 |
More circuit components. Restructures the circuit components folder to be more organised. (#59459)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> |