mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-05 22:43:46 +00:00
ddcb10c430fe51434bb10201d5433c07cd113eaa
116 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bb70889f6e |
TG Upstream Part 1
3591 individual conflicts Update build.js Update install_node.sh Update byond.js oh my fucking god hat slow huh holy shit we all fall down 2 more I missed 2900 individual conflicts 2700 Individual conflicts replaces yarn file with tg version, bumping us down to 2200-ish Down to 2000 individual conflicts 140 down mmm aaaaaaaaaaaaaaaaaaa not yt 575 soon 900 individual conflicts 600 individual conflicts, 121 file conflicts im not okay 160 across 19 files 29 in 4 files 0 conflicts, compiletime fix time some minor incap stuff missed ticks weird dupe definition stuff missed ticks 2 incap fixes undefs and pie fix Radio update and some extra minor stuff returns a single override no more dupe definitions, 175 compiletime errors Unticked file fix sound and emote stuff honk and more radio stuff |
||
|
|
4c4930c71d | Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit | ||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
1880003270 |
Reworks silicon/ai access checking & fixes some ui_act's (#84964)
## About The Pull Request Currently to check for Silicon access, we do: ``if is silicon or is admin ghost or has unlimited silicon privileges or has machine remote in hand`` What has unlimited silicon privileges? Bots, Drones, and admin ghosts. To check for AI access, it just checks for AI instead of silicon, and doesnt check for unlimited silicon privileges. This was kinda silly, so I thought I should make this a little easier to understand. Now all silicon/ai traits come from ``AI_ACCESS_TRAIT`` or ``SILICON_ACCESS_TRAIT``. I made a single exception to keep Admin ghost, since now instead of being a var on the client, we moved it to using the same trait but giving it to the client instead, but since we have to keep parity with previous functionality (admins can spawn in and not have this on, it only works while as a ghost), I kept previous checks as well. No more type checks, removes a silly var on the mob level and another on the client. Now while I was doing this, I found a lot of tgui's ``ui_act`` still uses ``usr`` and the wrong args, so I fixed those wherever I saw them, and used a mass replace for the args. Other changes: - machinery's ``ui_act`` from https://github.com/tgstation/tgstation/pull/81250 had ``isAI`` replaced with ``HAS_AI_ACCESS``, this has been reverted. Machine wands and admin ghosts no longer get kicked off things not on cameras. This was my fault, I overlooked this when adding Human AI. - Human AI's wand gives AI control as long as it's in your hand, you can swap to your offhand. I hope this doesn't end up going horribly, otherwise I'll revert this part. It should let human AIs not have their UI closed on them when swapping to eat food or use their door wand or whatnot. - Bots previously had special checks to scan reagents and be unobservant, I replaced this with giving them the trait. I also fixed an instance of unobservant not being used, so now statues don't affect the basic creature, whatever that is. ## Why It's Good For The Game This is an easier to understand way of handling silicon access and makes these mobs more consistent between eachother. Other than what I've mentioned above, this should have no impact on gameplay itself. ## Changelog 🆑 fix: Statues don't count as eyes to creatures. fix: Human AIs and Admin ghosts no longer get kicked off of machines that aren't on cameranets. /🆑 |
||
|
|
4b4e9dff1d |
Wallening [IDB IGNORE] [MDB IGNORE] (#85491)
## What's going on here Kept you waitin huh! This pr resprites most all walls, windows and other "wall adjacent" things to a 3/4th perspective, technical term is "tall" walls (we are very smart). If you're trying to understand the technical details here, much of the "rendering tech" is built off the idea of split-vis. Basically, split a sprite up and render it on adjacent turfs, to prevent seeing "through" walls/doors, and to support seeing "edges" without actually seeing the atom itself. Most of the rest of it is pipelining done to accommodate how icons are cut. ## Path To Merge Almost* all sprites and code is done at this point. There are some things missing both on and off the bounty list, but that will be the case forever unless we force upstream (you guys) to stop adding new shit that doesn't fit the style. I plan on accepting and integrating prs to the current working repo <https://github.com/wall-nerds/wallening> up until a merge, to make contribution simpler and allow things like bounties to close out more easily This pr is quite bulky, even stripping away map changes it's maybe 7000 LOC (We have a few maps that were modified with UpdatePaths, I am also tentatively pring our test map, for future use.) This may inhibit proper review, although that is part of why I am willing to make it despite my perfectionism. Apologies in advance. Due to the perspective shift, a lot of mapping work is going to need to be done at some point. This comes in varying levels of priority. Many wallmounts are offset by hand, some are stuck in the wall/basically cannot be placed on the east/west/north edges of walls (posters), some just don't look great good in their current position. Tests are currently a minor bit yorked, I thought it was more important to get this up then to clean them fully. ## What does it look like?       ## Credits <details> <summary>Historical Mumbojumbo</summary> I am gonna do my best to document how this project came to be. I am operating off third party info and half remembered details, so if I'm wrong please yell at me. This project started sometime in late 2020, as a product of Rohesie trying to integrate and make easier work from Mojave Sun (A recently defunct fallout server) with /tg/. Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man is insane) was working with tall walls, IE walls that are 48px tall instead of the normal 32. This was I THINK done based off a technical prototype from aao7 proving A it was possible and B it didn't look like dogwater. This alongside oranges begging the art team for 3/4th walls (he meant TGMC style) lead to Rohesie bringing on contributors from general /tg/, including actionninja who would eventually take over as technical lead and Kryson, who would define /tg/'s version of the artstyle. Much of the formative aspects of this project are their work. The project was coming along pretty well for a few months, but ran into serious technical issues with `SIDE_MAP`, a byond map_format that allows for simpler 3/4th rendering. Due to BULLSHIT I will not detail here, the map format caused issues both at random with flickering and heavily with multiz. Concurrent with this, action stepped down after hacking out the rendering tech and starting work on an icon cutter that would allow for simpler icon generation, leaving ninjanomnom to manage the project. Some time passed, and the project stalled out due to the technical issues. Eventually I built a test case for the issues we had with `SIDE_MAP` and convinced lummox jr (byond's developer) to explain how the fuckin thing actually worked. This understanding made the project theoretically possible, but did not resolve the problems with multi-z. Resolving those required a full rework of how rendering like, worked. I (alongside tattle) took over project development from ninjanomnom at this time, and started work on Plane Cube (#69115), which when finished would finally make the project technically feasible. The time between then and now has been slow, progressive work. Many many artists and technical folks have dumped their time into this (as you can see from the credits). I will get into this more below but I would like to explicitly thank (in no particular order) tattle, draco, arcanemusic, actionninja, imaginos, viro and kylerace for keeping the project alive in this time period. I would have curled up into a ball and died if I had to do this all myself, your help has been indispensable. </details> <details> <summary>Detailed Credits</summary> Deep apologies if I have forgotten someone (I am sure I have, if someone is you please contact me). I've done my best to collate from the git log/my memory. Thanks to (In no particular order): Raccoff: Being funny to bully, creating threshold decals for airlocks aa07: (I think) inspiring the project ActionNinja: Laying the technical rock we build off, supporting me despite byond trying to kill him, building the icon cutter that makes this possible ArcaneMusic: Artistic and technical work spanning from the project's start to literally today, being a constant of motivation and positivity. I can't list all the stuff he's done Armhulen: Key rendering work (he's the reason thindows render right), an upbeat personality and a kick in the ass. Love you arm Azlan: Damn cool sprites, consistently Ben10Omintrix: You know ben showed up just to make basic mobs work, he's just fuckin like that man BigBimmer: A large amount of bounty work, alongside just like, throwing shit around. An absolute joy to work with Capsandi: Plaques, blastdoors, artistic work early on CapybaraExtravagante: Rendering work on wall frames Draco: SO MUCH STUFF. Much of the spritework done over the past two years is his, constantly engaged and will take on anything. I would have given up if not for you Floyd: Early rendering work, so early I don't even know the details. Enjoy freedom brother Imaginos16: A guiding hand through the middle years, handled much of the sprite review and contribution for a good bit there Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of effort dissecting feedback with a focus on making things as good as they can be at the jump Infrared: Part of the impetus for the project, made all the xenomorph stuff in the MS style Jacquerel: A bunch of little upkeep/technical things, has done so much sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES) Justice12354: Solved a bunch of error sprites (and worked out how to actually make prs to the project) Thanks bro! Kryson: Built the artstyle of the project, carrying on for years even when it was technically dying, only stopping to casually beat cancer. So much of our style and art is Kryson KylerAce: Handled annoying technical stuff for me, built window frame logic and fully got rid of grilles. LemonInTheDark: Rendering dirtywork, project management and just so much fucking time in dreammaker editing sprites Meyhazah: Table buttons, brass windows and alll the old style doors Mothblocks: Has provided constant support, gave me a deadline and motivation, erased worries about "it not being done", gave just SO much money to fill in the critical holes in sprites. Thanks moth MTandi: Contributed art despite his own blackjack and hookers club opening right down the road, I'm sorry I rolled over some of your sprites man I wish we had finished earlier Ninjanomnomnom: Consulted on gags issues, kept things alive through some truly shit times oranges: This is his fault Rohesie: Organized the effort, did much of the initial like, proof of concept stuff. I hope you're doin well whatever you're up to. san7890: Consulting on mapper UX/design problems, being my pet mapper Senefi: Offsetting items with a focus on detail/the more unused canidates SimplyLogan: Detailed map work and mapper feedback, personally very kind even if we end up talking past each other sometimes. Thank you! SpaceSmithers: Just like, random mapping support out of nowhere, and bein a straight up cool dude Tattle: A bunch of misc project management stuff, organizing the discord, managing the test server, dealing with all the mapping bullshit for me, being my backup in case of bus. I know you think you didn't do much but your presence and work have been a great help Thunder12345: Came out of nowhere and just so much of the random bounties, I'm kind of upset about how much we paid him Time-Green: I hooked him in by fucking with stuff he made and now he's just doin shit, thanks for helping out man! Twaticus: Provided artistic feedback and authority for my poor feeble coder brain, believed in the project for YEARS, was a constant source of ❤️ and affirmation unit0016: I have no god damn idea who she is, popped out of nowhere on the github one day and dealt with a bunch of annoying rendering/refactoring. Godspeed random furry thank you for all your effort and issue reports Viro: A bunch of detailed spriting moving towards 3/4ths, both on and off the wallening fork. If anyone believed this project would be done, it was viro Wallem: Artistic review and consultation, was my go-to guy for a long time when the other two spritetainers were inactive Waltermeldon: Cracked out a bunch of rendering work, he's the reason windows look like not dogwater. Alongside floyd and action spent a TON of time speaking to lummox/unearthing how byond rendering worked trying to make this thing happen ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin bugaboo that was living in my brain like it was nothing. Love you brother And finally: The Mojave Sun development team. They provided a testbed for the idea, committed hundreds and hundreds of hours to the artstyle, and were a large reason we caught issues early enough to meaningfully deal with them. Your work is a testament to what longterm effort and deep detailed care produce. I hope you're doing well whatever you're up to. Go out with a bang! </details> ## Changelog 🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan, Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd, Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson, KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom, oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner, SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016, Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team! add: Resprites or offsets almost all "tall" objects in the game to match a 3/4ths perspective add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: san7890 <the@san7890.com> Co-authored-by: = <stewartareid@outlook.com> Co-authored-by: Capsandi <dansullycc@gmail.com> Co-authored-by: ArcaneMusic <hero12290@aol.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com> Co-authored-by: KylerAce <kylerlumpkin1@gmail.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com> Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com> Co-authored-by: tattle <article.disaster@gmail.com> Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com> Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com> Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com> Co-authored-by: Rob Bailey <github@criticalaction.net> Co-authored-by: MMMiracles <lolaccount1@hotmail.com> |
||
|
|
8c4cf753f5 | Remove data systems in favor of global datums (#82943) | ||
|
|
bc4e7d3b4e | Remove data systems in favor of global datums (#82943) | ||
|
|
55d1c715e5 |
Pulls2 (#27514)
* New docking port sprites (#82729)
* Adds text to lootpanel items [no gbp] (#82722)
## About The Pull Request
Just some qol, this captures a small portion of the item name and fixes
some icon clipping issues
I clipped it at 5 because monke


## Why It's Good For The Game
Handy if youre in a rush and won't upgrade byond to fix the issue
## Changelog
🆑
fix: Lootpanel additions: Condensed item names for the quick of draw
/🆑
* Fixes tgui alert buttons (#82714)
<!-- 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
Been on my mind for a long time
I did this while relatively inexperienced (how do I center a div etc)
Fixes an issue inherent to our stack implementation where reversing the
direction caused strange spacing issues. This effectively reverses the
extra margins in css so it looks identically spaced whether reversed/not
<details>
<summary>before/after</summary>
Before (normal buttons)

Before (large buttons)

After (normal buttons)

After (large buttons)

Long buttons (normal)

Long buttons (large buttons (I am 35 and yet still fight the forces of
chaos))

</details>
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Looks better, runs smoother, no clipping
<!-- 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. -->
## 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: TGUI Alerts shouldn't have such wonky buttons any more
/🆑
<!-- 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: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* MetaStation: Replaces the tools in the Primary Surgery Theatre with filled surgery trays (#82730)
## About The Pull Request
Replaces the tools on the tables with 2 surgery trays.

## Why It's Good For The Game
Makes surgery a bit less painful in the surgery theatre, Using tools
from a tray is much nicer than having to open the context menu on the
piles of tools on the tables.
## Changelog
🆑
qol: Replaced the surgical tools in the Primary Surgery Theatre with 2
Surgery Trays.
/🆑
* Fixes smart pipe & cryo gas reallocation (#82701)
## About The Pull Request
**1. Smart Pipe Problem**
- Fill a pipe with any gas, plasma for e.g.
- Unwrench the pipe to deconstruct
- The pressure sends you flying but notice plasma is nowhere to be seen
from the now destroyed pipe
**2. Cryo pipe connector problem**
The gas gets reallocated when the object is deleted. We only want this
when its deconstructed not deleted to prevent any side effects
This PR fixes them
## Changelog
🆑
fix: smart pipes release their gases into the air when unwrenched
fix: cryo pipe connector component has no side effects of gas
reallocation when deleted
/🆑
* Fix Primal Instincts (#82741)
## About The Pull Request
#82539 randomly made these two lines switch their AI controllers to idle
rather than on, when the intent was for them to wake up immediately to
do make the mob attack or fight or do something
## Changelog
🆑 Melbert
fix: Primal Instincts and Living Flesh should be a tad more reactive
/🆑
* Fix handcuffing (#82760)
## About The Pull Request
Changed this to an early return but then didn't invert the condition
## Changelog
🆑 Melbert
fix: You can handcuff people with 2 arms and you can no longer handcuff
people with 0 arms
/🆑
* Gets rid of UNIT_TESTS compiler warning (#82695)
## About The Pull Request
Basically every single CI Run is throwing the following warning:
```txt
code/modules/unit_tests/lootpanel.dm:24:warning (unused_var): new_box: variable defined but not used
```
You may find an example here:
https://github.com/tgstation/tgstation/actions/runs/8698627681/job/23855921813#step:9:24
This is pretty silly but I don't really know why we even have this
variable (I assume there's something far more complicated underneath the
surface based on what the unit test is asserting), but assuming it is
important let's just insert a do-nothing procedure to get rid of the
compiler warning while ensuring the unit test is actually operating as
it should.
I also don't really like the fact that this is a warning instead of an
error but let's tackle this problem one step at a time by at least
getting rid of the compiler warning in a quick advance PR while I dwell
on this issue (is there a way to get the Dreamchecker linter to look at
the unit test files? it's caught perfectly fine in the langserver)
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Makes dropdowns better (#82697)
## About The Pull Request
Kind of a pain to work with, confusing people with its prop names (many
such cases!)
After recently discovering deathmatch it's very obvious to me how broken
it is, so I made it less so
(now comes with a complete ui upgrade!)
It now scrolls with the selection and to the selection on open, which
felt like major QoL
<details>
<summary>pics/vids</summary>
In motion

Deathmatch got some UI facelifts


Fixes #75741

</details>
## Why It's Good For The Game
Better UX
Bug fixes
Potential exploit patched (ui validation for ai voice changer)
Fixes #81506
## Changelog
🆑
fix: Dropdowns received some much-needed QoL, like having the scrollbar
follow your selection.
fix: AI voice changer now shows its current voice selection.
fix: Deathmatch screen has been touched up.
fix: Prefs menu has their dropdowns simplified, hopefully fixing issues
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
* Fixes the NT SWAT helmet sprite (#82743)
* Mass Item Creation (#82455)
## About The Pull Request
Have you ever had to click the "Make" button a dozen times for a chef
making soup? I've also had it, so with this PR you can press the button
and everything will repeat itself as long as possible.
## Why It's Good For The Game
Makes life easier for chefs, now they can play chess on their cool
smartphone and craft food. (actually you can transfer it to other items
as well, see for yourself).
* Adds Retain volume flag on the ants reaction (#82718)
Fixes #82575
We'd expect feeding ants to always result in more ants I imagine.
* Borg movement now has sounds (#82704)
## About The Pull Request
adds sound effects to cyborgs when they move
Demo:
https://imgur.com/a/7Mu98pQ
Open to feedback on this sound so please tell me what you think.
## Why It's Good For The Game
a hunk of metal moving at you without any sound is frightening
## Changelog
🆑 grungussuss
sound: cyborgs now have sounds to indicate they are moving
/🆑
* Use cell defined constants for various stuff (#82594)
## About The Pull Request
This re writes most cell power usage cases with 2 defines
`STANDARD_CELL_CHARGE`(Joules) & `STANDARD_CELL_RATE`(Watts) so changing
cell capacity values in the future won't cause discrepancies.
## Changelog
🆑
code: most cell power usages are scaled with defined constants to help
adapt to future changes
/🆑
* Plumbing machinery power & processing tweaks (#82702)
## About The Pull Request
- Plumbing machinery begins processing only when wrenched & ends
processing when unwrenched. The machines plumbing component
`/datum/component/plumbing/process()` already does this but the
underlying machines processing proc for e.g.
`/obj/machinery/plumbing/synthesizer/process()` is always processing
regardless of its wrenched state or not. We can optimize this & save
power when unwrenched
- Fixes #82621. This adds plumbing machines `idle_power_usage` on top of
its `active_power_usage` ensuring it only uses power when actively doing
work, So if your factory is say full of reagents & cannot do any more
work it will use less energy i.e almost enter an stand by mode,
efficiency
- Plumbing grinder chemical will grinds & juice stuff correctly i.e.
prefer grinding over juicing most of the time
## Changelog
🆑
fix: plumbing machinery begins processing only when wrenched & ends when
unwrenched
fix: plumbing machinery uses energy only when wrenched & doing work,
will stop/use less energy when idle
fix: plumbing grinder chemical will grinds & juice stuff correctly i.e.
prefer grinding over juicing for most stuff
/🆑
* Carps migrating through the station no longer idle so they don't get stuck after spawning until someone walks by. (#82744)
## About The Pull Request
Carps migrating through the station no longer idle so they don't get
stuck after spawning until someone walks by.
## Why It's Good For The Game
Bugfix for Carp Migrations.
## Changelog
🆑
fix: Carps migrating through the station no longer idle so they don't
get stuck after spawning until someone walks by.
/🆑
* Alt click no longer conflicts with mech suit [no gbp] (#82758)
## About The Pull Request
Get in the gundam shinji!!!
Context: Mech users hold ALT to disable strafe, which would trigger the
lootpanel to come up while committing war crimes (annoying!)
This prevents the panel from appearing and fixes the previous behavior,
meaning you can alt click your own mech to disable strafing.

It also makes toggling strafe a balloon alert with sound. Parties for
all occupants!!
## Why It's Good For The Game
Fixes #82753
## Changelog
🆑
fix: Mecha pilots are no longer bothered by incessant loot panels while
holding ALT for strafe disable.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds a Wizard-themed map to the deathmatch (#81640)
## About The Pull Request
Deathmatch is severely lacking in HIGH IMPACT MAGIC LARPING. So I added
a big ass wizard arena. The arena itself is based off the wizard den.
Loadouts:
**Wizard:** Standard all-rounder. Got magic missile, jaunt, and
forcewall. Regular gear.
**Pyromancer:** Fire guy. Red robes, fireball, smoke.
**Electromancer:** Zappy guy. Lightning and tesla shock.
**Necromancer:** Is a skeleton. Has Scream for Me and blink.
**LARPer:** Straight from Station & Spessmen. Fake robes and can only
throw lightning and repulse.
**Chuunibyou:** Classic animage. Got chuuni buff and magic cards.
**Battlemage:** Melee fighter. Got some armor and a big hammer with
instant summons.
**Apprentice:** Underpowered until they find a mystery box. Got charge.
**Gunmancer:** Who needs magic when you have guns? Starts with an m1911,
lesser gun summons, and knock.
**Monkeymancer:** Is a monkey. Can summon monkeys and gorillas. Has a
banana.
**Chaosmancer:** Jumbled robes. Starts with a chaos rod. Can rod form
and summon traps for high chaos.
**Funnymancer:** It's just a clown with a banana staff.
The map itself is a pretty standard arena with a long sightline in the
middle. Each participant spawns in their own room complete with a magic
item box. The very southern portion of the ship has a standard mystery
gun box. Soon after the round starts, a hostile gelatinous cube in the
center of the map will break out and attack whoever it sees. Inside its
enclosure is a free death wand. Map has been tested to make sure
deathmatch participants can't escape the deathmatch.
## Why It's Good For The Game
Deathmatch provides a unique opportunity for people to play with
mechanics they will not often get to use. Allowing people to play wizard
for a few minutes shouldn't cause too much harm aside from admin logging
from explosions, which hopefully a fix is in the pipeline for.
## Changelog
:cl:Motho
add: Added wizard-themed deathmatch map.
add: Added mystery wand box.
/🆑
* Makes viewers() defines (#82767)
* Fixes Pseudo circuit delay & some missed cell define usages (#82771)
## About The Pull Request
- Fixes #82688
If the circuit cost is<= 1% of `STANDARD_CELL_CHARGE` then the delay is
5 seconds, if the circuit cost is >= 50% of `STANDARD_CELL_CHARGE` then
delay is 1 minute. All other delay values are interpolated in between
these 2.
- Pseudo circuits don't use power when used on cooldown
- Makes `INSPECTOR_ENERGY_USAGE_*` defines values use standard cell
values
## Changelog
🆑
fix: pseudo circuit adapter computes recharge delay durations correctly
& won't use power when on cooldown
code: uses standard cell defines for N-spect scanner
/🆑
* Lava/Plasma River tiles now immerse you in them (#82736)
## About The Pull Request
This adds the "immerse" element to lava tiles.

It's a tad hard to see because you're super on-fire, but it still looks
nice.
## Why It's Good For The Game
Eye candy, pretty...
## Changelog
🆑 Rhials
qol: Lava and plasma rivers now immerse you in them.
/🆑
* Adds `ALLOW_RESTING` to a bunch of items (#82761)
## About The Pull Request
Allows you to alt-click a bunch of items while resting.
Fixes #82788
## Why It's Good For The Game
Some of these, such as storage, are bugfixes. You shouldn't need to be
standing up to configure a spray can, or change the direction of your
bedsheet
Others are just sensible changes.
## Changelog
🆑 Melbert
fix: You can open bags with alt click while resting again
qol: Many items which previously required you to stand to alt-click now
don't, such as bedsheets and spray cans
/🆑
* Fixes sight range on lootpanel [no gbp] (#82765)
## About The Pull Request
When asked to make lootpanel visible at range they did not just mean
_any range_
AI alt click was a little weird (still is) but now it works
(TM BUG)
Fixes #82768
* Adds Omnitools for engineer and medical cyborgs, reducing on inventory clutter. (#82425)
[This PR is a bounty requested by Ophaq and worked on by
Singul0.](https://tgstation13.org/phpBB/viewtopic.php?f=5&t=36013)
All of the following description in this PR is written by Ophaq as to
what this PR entails:
In this PR, the medical and engineering cyborg's tools are completely
reworked and condensed into an arm similar to the implant a carbon would
get. The tools are shown in a radial wheel around the character to quick
select what is needed instead of looking for it in a cluttered bag of
items. There are a few tools such as the blood filter for the medical
cyborg, as well as the welder, gas analyzer, and t-ray scanner for the
engineering cyborg excluded from the radial wheel. mostly due to their
inherent inmodularity


Each cyborg gets two arms in case the player wishes to have one on the
side to quick swap to, like having a scalpel in one arm and a hemostat
in the other on the hotbar for convenience or just preference. An
upgraded version of the tools has been added to each respective cyborg
upgrade node with somewhat faster action speed. The upgrade replaces the
arms and transforms them into the "advanced" version which is currently
the same sprite as the regular but just a faster and more efficient
version. The sprites for the surgical arm currently look good but may
need replacing later if someone who wishes to resprite them down the
line decides to do so.
As it currently stands, the medical cyborg's magical bag of gadgets
takes up a lot of your screen space and as a player who plays medical A
LOT, this was a MUCH NEEDED quality of life feature.
The amount of clutter in a medical cyborg's bag makes it in my opinion,
hard to see at the bottom of the screen and a nuisance to constantly
close compared to other models. My standard set up for playing medical
cyborg on the hotbar is 1=med analyzer, 2=usually a secondary surgery
tool or injector, and 3=another surgery tool. The flow of gameplay
during surgery ends up being surgery tool, hit 3 and drop it, surgery
tool, repeat or for efficiency using X to swap between the two surgery
tools I need on 2 and 3. This gets tedious especially after so many
hours of playing medical cyborg. I know some people may disagree, but I
think it would help a lot of help to speed up this flow of gameplay
during surgery and declutter.
By turning the medical cyborg's toolset into an omni-surgery tool which
functions like the surgery arm implant's radial wheel, this would
greatly declutter by like an entire row and make things easier on
medical cyborg players. Having a secondary in the bag helps with
efficiency for those players who like having an extra tool on their
hotbar and swapping back and forth would also improve efficiency and
make less swapping by hitting Z needed. Additionally with the upgraded
version as an optional upgrade in the mediborg tech, this also lets them
be on par with players who use advanced tools late game but not at the
level of alien tools where players would obviously out compete a
mediborg in terms of action speed.
Engineering models also benefit from this rework but at a slightly
different and lesser way whereas certain tools are excluded such as the
welder, due to the way they work on refill and the gas scanner and t-ray
scanner not counting as tool components are not included in the arms.
Syndicate versions of the engineering and medical cyborg also get these
arms, unupgraded.
🆑
add: Adds an omnitoolset for both engineering and medical cyborgs,
containing various basic tools
qol: Engineer and Medical module inventory space is now significantly
decluttered
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Fixes dropdown displaytext not working for numeric values (#82778)
## About The Pull Request
https://github.com/tgstation/tgstation/pull/82697 broke the prefs menu
downstream; we have a couple of dropdown choices that are numeric but
that make use of `display_names` to map those choices to appropriate
strings.
The code was assuming that `value` would always be a string when calling
`capitalizeFirst(value)`. Basically it should be doing
`display_names[value]` when `display_names` are present.
## Why It's Good For The Game
Fixes an oversight/bug.
## Changelog
🆑
fix: dropdowns that use display_names as an alias for numeric values
will no longer cause tgui bluescreens
/🆑
* [NO GBP] HPLC can purify inverted chems (#82727)
## About The Pull Request
- Fixes #82725
Inverted chems are now coloured green and classified as clean (like
before my general maintenance PR) which means they can be purified
again.
Only chems that are too impure to use & have an inverted chem value are
coloured red in the UI and not when they are just of the inverted type
## Changelog
🆑
fix: HPLC can purify inverted chems and are now coloured green(clean) in
the UI
/🆑
* Lathes compute their local storage size correctly (#82770)
## About The Pull Request
Basically we have to add the material container before we call parent
Initialize(which calls `RefreshParts()`), else the container doesn't get
initialized early and we skip over computing storage sizes
## Changelog
🆑
fix: off station & round start lathes with local storage don't have
infinite storage size.
/🆑
* Arcmining QoL: GPS component to scanned vents and vent(pin)pointer (#82724)
## About The Pull Request
Scanning ore vents will now tag them on GPS so you can find them easily
when you are prepared (and remove them when they are tapped). Also adds
special pinpointer to help with finding unscanned vents in a first
place. And adds missing uranium overlays for scanned vents. Because why
not.
<details>


</details>
## Why It's Good For The Game
While looking at mineral density to find vents is somewhat fun and
entertaining, having some sort of upgrade to make finding them easier
adds a bit of a progression. Also re-finding already scanned vents can
be a bit annoying. You need to fill your backpacks with GPSs and tag
them manually. It is also inconsistent with geysers that are added to
positioning after you scan them. And with tendrils, which are always
visible.
## Changelog
🆑
add: added ventpointer that points toward nearby ore vents and can be
bought with mining points
balance: scanned ore vents can now be found with GPS
fix: fixed ore vents missing overlay icon for uranium
/🆑
* Fix oven tray runtime (#82782)
## About The Pull Request
Fixes a lil typo from the interaction refactors that broke the ability
to load oven trays from containers
## Why It's Good For The Game
squamsh bug
## Changelog
🆑
fix: loading oven trays from serving trays and other containers works
again
/🆑
* Fix flaky test detection (#82790)
- Add missing job pagination.
- Fix multiple jobs being able to fail if they aren't in
`CONSIDERED_JOBS`
* Add utf8 support for state laws button (#82789)
## About The Pull Request
Adds UTF-8 support for state laws HTML page. Now it supports more than
just English
## Why It's Good For The Game
Support for other symbols, such as cyrillic

* Update highest available sound channel (#82780)
Current channels are:
```
```
So, the highest available now is 1013
Updating the thing which everyone forgot for 7 years. Not that many
special channels were added either way
* Revert "Borg movement now has sounds" (#82795)
Reverts tgstation/tgstation#82704
The sound ingame appears much louder than the original author intended.
Not to mention that the sound loops stack for every borg moving near
you.
* Use defines for "General Research" where it's not used (#82785)
## About The Pull Request
There is a define for it, so why not use it?
## Why It's Good For The Game
Defines good
* [READY] the unfuckening of clothing rendering (#79784)
refactors clothing visors to use the same system, including masks being
toggled and stuff like riot helmets toggling using the same system and
welding helmets and such
adds a handler that updates all visuals in slots that an item has
obscured, each visual proc calls that so you no longer have weird shit
happening like having to hardcode a proc for heads where you need to
also update hair, mask, glasses everytime you put on an item
one thing here i could also do is make check_obscured_slots return the
HIDEX flags instead of item slots, because in 99% of cases its hardcoded
to be ran against specific slots (like eye code running it against the
glasses slot), but maintainers didnt seem to like that :/
fuck this 2003 bullshit
theres like several bugs here i fixed but i forgot them all and they are
small
* Allows vv investigate /appearance + better checking image (#82670)
* Fixes Alien Numerical Identifier Transfer System (#82762)
## About The Pull Request
Fixes #82756
I'm not sure what the root cause of the issue is or why it broke so
recently (this has been a thing since #49150) but I went and cleaned up
the code and ensured that we always reset the `name` to the `initial()`
value we have for it if we determine that we need to transfer over the
`numba` from the old xenomorph. This is done by a new proc which is a
lot less convoluted from the old system (always respecting var-edited
names and stuff like that) that should make it flow a lot better and
make it more hardy against double-addition of the `numba` to the name.
## Why It's Good For The Game
Having two numbers in your name is weird, should only have one.
[x] I tested this PR
## Changelog
🆑
fix: Evolved aliens should no longer have two numbers in their name.
/🆑
* [NO GBP] Fixes runtime in advanced camera console (#82699)
## About The Pull Request
We only unset machine if we have a user who has logged in
## Changelog
🆑
fix: Fixes runtime in advanced camera console when power is turned off
/🆑
* Refactors how basic ais do their success/failures (#82643)
* Rocky DLXIII: Fitness to Athletics, Athletics skill influences Boxing against Boxers, Boxing overhaul, Evil Boxing (#82611)
as the only meaningful reward
Basically just a rebranding so that it is more broad in its concept. It
isn't just about peak physique. It's about how you can apply it too.
Reaching Legendary rewards you with the Golden Gloves.
I started it in this pr here
https://github.com/tgstation/tgstation/pull/80635
But this is a more significant overhaul of boxing from the ground up.
Namely, it now is majorly influenced by the Athletics skill, and also
more thoroughly aligns with conventional punching in its current state.
However, a major component of this is that boxing's breadth of mechanics
is only relevant when used against another boxer. Non-boxer targets are
only ever going to get smacked by a stamina punch, as it is currently
(and more or less the same values too). Additionally, boxers cannot
punch someone who is either unconscious or in stamina crit, so it can't
be used to maintain stamcrit.
- Boxing now has a One-Two Punch mechanic. Swapping between the left and
right mouse buttons to punch and maintaining this causes every second
punch to do more damage (to boxers). Breaking this chain by punching
with the same button twice will cause you to lose damage (against
boxers).
- Boxing now can have crits occur below 50 stamina damage (against
boxers). However, to knock someone out clean, the target must be
staggered from a previous crit first. (Or I guess be staggered at all,
maybe their shoelaces were tied or something). Crit probabilities are
determined by adding your Athletics probability skill bonuses to your
unarmed effectiveness, and then reduced by the targets own Athletics
skill bonuses. It is hard for two athletes to knock each other out in
one blow. It is trivial for a legendary boxer to knock out a novice in a
single punch. Cybernetically enhanced boxers are dangerously effective
at boxing.
- Boxers can block other boxers by using throw mode, but the chances of
doing so is based on Athletics skill bonuses. A successful block causes
the attacker to take stamina damage (as does the blocker, but less so).
- Participating in boxing increases the Athletics skill. Your gains are
probably slower than normal training, but you at least get some reward
for doing so. Only relevant if your opponent is a boxer. Get a sparring
partner!
So this is all well and good, but what if you're a scoundrel with no
care for the other person in this equation? Well, that's where Evil
Boxing comes in. Evil Boxing has absolutely no restrictions at all, and
can freely use its boxing abilities against anyone. Even non-boxers. You
can even grab people! Wow, what a scumbag. I bet you even king hit
people. Thankfully, only an admin can make you into an Evil Boxer.
(against boxers)
Both mutations have a flimsy increase to instability of 5 because of how
incredibly particular the bonus is.
Strength now reduces the amount of stamina damage inflicted via
exercising by half. Strength also adds a +2 damage bonus on boxing
punches while boxing against boxers (this doesn't influence normal
unarmed attacks whatsoever, or boxing against nonboxers). Obviously,
evil boxers just get this benefit against everyone because they're
knaves.
Stimmed increases the duration of the exercised status effect by one
factor. (That is, if you have no other modifiers, it will double the
duration on its own)
@Jacquerel was racking their brain trying to come up with an alternative
to the skill rewards of Fitness. At the moment, sprite growth is not
only a really bad bonus (it does literally nothing but make you big, and
thus is actually a detriment due to how intrusive sprite size is with
interaction, and plays weird with other sprite changing effects), but
isn't really all that interesting for all the effort put in.
Problem is, how do you make Fitness meaningful without making it a
powergame mechanic? Simple! You make it applicable to a really niche,
self-contained but still utilized game mechanic that is engaging to
participate in and makes you meaningfully very good in it. AND scratches
that power scaling itch that many players have.
Boxing is reasonably self-contained as is, but pretty bland due to how
old it is. While maintaining that self-contained nature, I hoped to
expand the interactivity of boxing a little bit by giving it a small
mini-game in of itself. And also introduce ways to simulate the idea of
boxing a bit better.
The idea of being an Evil Boxer is funny. For every Rocky, there is a
[Insert Rocky Villain Here that isn't Creed]. But in this case, it's
probably some Syndicate douchebag looking to punch clowns into a coma
and inspire the mime to take up shadowboxing in revenge.
🆑
add: Replaces Fitness with Athletics; same skill, but now more
specifically applicable to boxing.
add: Athletics does not increase sprite size.
balance: Overhauls Boxing to add a lot more depth to the interactions.
Only applicable to other boxers, however. You can still punch the snot
out of non-boxers though. But only up to stamcrit or unconsciousness. No
hitting someone who can't fight back!
balance: Adds Evil Boxing, which is the evil and fucked up version of
boxing that you kill people with and are allowed to flout the sacred
rules of boxing as you please. Everyone is a victim!
/🆑
* Cargo ui refactor -> TS (#82745)
Refactors cargo ui, fixing some visual bugs, just making it look better
in general
Should be no gameplay effect other than it looking better
<details>
<summary>pics</summary>




Fixes #81442

Made a type grabber for backend data in case you want to make your own
typescript uis
`logger.log(getShallowTypes(data))`

Otherwise cargo's data is unreadable
</details>
Any UI over 500 lines should get broken up to reduce cognitive load
~~Any ui in javascript shouldn't exist~~
Cargo UI is better
Typescript
🆑
fix: Cargo's supply console has been upgraded visually.
/🆑
---------
Co-authored-by: EricZilla <81941674+EricZilla@users.noreply.github.com>
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
* Makes lavaland stone tiles prevent immersion (#82807)
## About The Pull Request
Adds the same trait that lavaproof rods have to the stone tiles, so
things can continue being visually outside of the lava
## Why It's Good For The Game
this shit looks goofy

## Changelog
🆑 FlufflesTheDog
fix: Stone tiles (and things on them) no longer get immersed in lava
/🆑
* Getting up from prone, z movement, and mod de/activation don't do cogwheels (#82794)
Adds `hidden` to getting up (from prone), moving up (z-movement), moving
down (z-movement), and de/activating MODsuits
- Getting up from prone happens very often, makes it a bit hard to
differentiate when people are doing actions or just crawling around.
- If we want feedback for getting up, should just be a chat message.
- Moving up and down is just movement. Only affects using the verbs.
- Same as before: If we want feedback, it should just be a chat message.
- Other methods of moving up/down (IE, ladders) are untouched / retain
their cogwheel.
- De/activating modsuits have their own visual feedback and sound
effects associated. Both feels unnecessary.
🆑 Melbert
qol: Getting up from prone, moving up or down a z-level (not via
ladders, naturally. Like flight), and de/activating your modsuit no
longer shows cogwheel effect
/🆑
* [NO GBP]Inversely scale mechanical favor with STANDARD_CELL_CHARGE. (#82801)
## About The Pull Request
Makes the mechanical sect cell sacrifice favor adjustment inversely
scale with STANDARD_CELL_CHARGE. This reduces it by a factor of 1,000.
## Why It's Good For The Game
So they don't get 1,000 times the favor as intended from a cell.
## Changelog
🆑
fix: Fixes mechanical sect gaining 1,000 times the favor from a cell
sacrifice.
/🆑
* Fix all types of damage to the head causing brain damage (#82763)
## About The Pull Request
5 months ago when I separated this stuff out to its own proc I forgot a
damagetype check.
## Changelog
🆑 Melbert
fix: Only brute damage causes brain damage when applied to the forehead,
rather than all damage types
/🆑
* Converts ListInputModal to actually be a Modal | Adds ListInputWindow which uses it (#82792)
## About The Pull Request
If we say something is a Modal it should actually be a Modal
## Why It's Good For The Game
You can now use this system in other windows if you want.
Fixed the misnomer.
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Higher capacity SMES variant for low maintenance areas; miners can access their maintenance area on mining base, gulag no longer saps all power from the main base (#82713)
## About The Pull Request
Creates a higher capacity version of the SMES unit that spawns in with
super capacity cells, as well as a full version. Places the full version
into all the AI sats (which all have independent grids for the most
part), some remote space ruins and the mining base. These SMES units are
intended for areas where players aren't expected or cannot reasonably be
expected to constantly monitor power usage within the length of a
standard round.
Miners can access their power stations, telecommunications box and
atmospheric station on the mining base. They're really the only people
who care, after all.
The gulag's SMES (also now upgraded) no longer saps power from the main
base due to having its input terminal rigged to the main base power
grid, and thus demanding all power from the grid greedily. To revert
this in-game is a single power cable placed back east of the SMES unit.
## Why It's Good For The Game
The power changes made some of the once largely low-maintenance areas
much more likely to run out of power more quickly than you would expect.
These aren't areas expected to be maintained or monitored by engineering
(probably because they're not easily accessed), and they're just kind of
troublesome to deal with on a round-to-round basis.
Mining had this problem triple-fold. It had significant drain with no
convenient method of installing power generation at all, miners couldn't
access what power generation there was without using their 'skeleton
key' to open the way (only engineers could, and they aren't expected to
come down to mining at all), and even then, there was the gulag SMES
just eating all the power anyway. I'm pretty sure that SMES unit was the
biggest culprit of them all, but I think this conveniently future proofs
these issues for the time being.
## Changelog
🆑
add: Adds a higher capacity SMES unit to lower maintenance areas and
maps.
fix: Miners can actually access and fix their engineering issues on the
lavaland base via the engineering section of the base.
fix: The gulag SMES unit is no longer needlessly draining the entire
power grid of the main mining base.
/🆑
* Revert "Higher capacity SMES variant for low maintenance areas; miners can access their maintenance area on mining base, gulag no longer saps all power from the main base (#82713)"
This reverts commit
|
||
|
|
ba5c112a86 |
Huge Mirror fixes (#27488)
* Fixes incorrect operator usage in mecha code (#82570) ## About The Pull Request I completely screwed up and told the original PR author of #82415 ( |
||
|
|
c1a775efe1 |
Implements data systems (#82816)
## About The Pull Request Subsystems currently come in two different flavors: 1. Systems that process at intervals with the master controller 2. Global data containers that do not fire And I think they should be split up... This moves 4 non firing, non init subsytems -> datasystem ## Why It's Good For The Game Clarity in code |
||
|
|
6596d75edc |
Gulag Adjustments Two (#82561)
## About The Pull Request I have received feedback that after the prior changes in #81971, the gulag is still a little bit too subject to RNG. The main culprit (as in my previous PR) is Iron being kind of cheap and the fact that unlike the old Gulag you no longer have any way of headhunting more valuable materials (everything appears as boulders on your ore scanner). My solution to this is wider than the last one of tweaking point values, but also much simpler: Just make every boulder you mine be worth the same amount of points regardless of what is inside of it. On the average test I made I could comfortably mine about 40-45 boulders in ten minutes. We'll make some adjustments to that rather than leaving 40 as the target number; Most players upon being teleported to the gulag are going to spend a few minutes whining and bemoaning their fate instead of getting straight to work. I had the benefit of being able to make sure my run started as soon as a storm ended so I wouldn't need any kind of midpoint break. I was also always the only person playing on my local instance, there hadn't been any other pesky prisoners before me who had already mined out all the nearest available deposits. And of course, let us not forget, I am an MLG master league ss13 player who was surely performing well above average. So we'll round that down to: Each boulder is worth 33 points, meaning you need to collect 31 boulders to complete a 1000 point (roughly ten minute) sentence. How do I ensure that every boulder is worth the same amount of points? Well it's pretty easy. One boulder = one material sheet. One material sheet = 33 points. Simple. "Now Jacquerel", I hear you not saying because you don't want me to know about this thing you would prefer to do instead of hitting rocks outside; "if I simply smash all of the tables and microwaves and botany trays and bed in the gulag I can easily get like 65 sheets of Iron, which is almost enough to buy the freedom for two entire people!" Unfortunately I knew you were going to try and do that and the prisoner point machine will only give you points for material sheets which have been printed from the material smelter (well, any material smelter actually but you should probably use the one in the gulag). You'll be able to tell because if you examine a valid material sheet it will mention a little maker's mark on it, which is absent in the beat-up iron that you get from smashing furniture to bits. Also glass is worth 0 points. Don't waste time digging up that shit. As glass has had all of its point value removed, I have added a "work pit" to the gulag to compensate. You can pull boulders out of this indefinitely via effort, however it also stamcrits you every time. It's not very fun to do this, but that's because I would prefer you to go find the rocks out in the field instead. This is a last resort. You can do this if there's no boulders left to mine or if you really really really hate mining and would rather very slowly click on one tile repeatedly to get your boulders instead. As a tiny bonus doing this gives workout experience. This isn't a totally ideal solution but I think it'll do for now. ## Why It's Good For The Game What we want out of the gulag is: - Something where officers can vaguely approximate an expected sentence duration. - A task that requires players to actually be spending that time doing something to get out of here. - Produces at least some amount of useful materials. In I think roughly that order. I hope this change accomplishes all three of these in a way that is somewhat predictable rather than throwing darts at a board. ## Changelog 🆑 balance: Gulag mining has been rebalanced so that every boulder is worth the same amount of points to mine for a prisoner regardless of what it contains, and should be more consistent. add: A vent which boulders can be hauled out of by hand has been added to the gulag which you can use if there's nothing left to mine. It is very slow, but at least it gives you a workout... /🆑 |
||
|
|
9079534cf1 |
[MIRROR] Use a common list for acceptable silo materials (#26817)
* Use a common list for acceptable silo materials (#81790) ## About The Pull Request This list containing the same material values was copy pasted all over. It's already cached in the subsystem so let's just use that. Renamed ore category into silo category. ## Changelog 🆑 code: Use a common list for acceptable silo materials for some stuff. Renamed ore category into silo category. /🆑 * Use a common list for acceptable silo materials --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> |
||
|
|
55ef6a6219 |
Use a common list for acceptable silo materials (#81790)
## About The Pull Request This list containing the same material values was copy pasted all over. It's already cached in the subsystem so let's just use that. Renamed ore category into silo category. ## Changelog 🆑 code: Use a common list for acceptable silo materials for some stuff. Renamed ore category into silo category. /🆑 |
||
|
|
e56e5b5f66 |
[MIRROR] New Processing Unit UI (#26237)
* New Processing Unit UI (#81029) Made a new TGUI for Ore Processing Unit, removed all `updateUsrDialog` calls. * New Processing Unit UI --------- Co-authored-by: Interception&? <137328283+intercepti0n@users.noreply.github.com> |
||
|
|
4748dca7d6 |
New Processing Unit UI (#81029)
Made a new TGUI for Ore Processing Unit, removed all `updateUsrDialog` calls. |
||
|
|
33d7bdecc2 |
[MIRROR] Removes material breakdown flags, traits & miscellaneous fixes. [MDB IGNORE] (#25836)
* 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 |
||
|
|
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 |
||
|
|
aa3e795e36 |
[MIRROR] Cuts down on unnecessary non-TGUI stuff [MDB IGNORE] (#24896)
* Cuts down on unnecessary non-TGUI stuff (#79590) ## About The Pull Request Removes INTERACT_MACHINE_SET_MACHINE on machines that don't use a non-TGUI UI. Removes set_machine from TGUI things that forgot to remove them previously. Decouples advanced camera consoles from UI procs since it doesn't actually use one. ## Why It's Good For The Game TGUI machines don't need to be using these procs and vars, and this makes it more clear what does and doesn't use a TGUI menu from a glance. I explain it a bit better [here](https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA) if you're interested. ## Changelog No player-facing changes. * Cuts down on unnecessary non-TGUI stuff --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
b52ce868bc |
Cuts down on unnecessary non-TGUI stuff (#79590)
## About The Pull Request Removes INTERACT_MACHINE_SET_MACHINE on machines that don't use a non-TGUI UI. Removes set_machine from TGUI things that forgot to remove them previously. Decouples advanced camera consoles from UI procs since it doesn't actually use one. ## Why It's Good For The Game TGUI machines don't need to be using these procs and vars, and this makes it more clear what does and doesn't use a TGUI menu from a glance. I explain it a bit better [here](https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA) if you're interested. ## Changelog No player-facing changes. |
||
|
|
2bd7b5706c |
[MIRROR] [NO GBP] Fixes active conveyor belts not moving movables spawned on top of them. [MDB IGNORE] (#22703)
* [NO GBP] Fixes active conveyor belts not moving movables spawned on top of them. (#77104) There's one instance of the old signal I've missed from #76376, all because lists treat undefined keys like text strings. * [NO GBP] Fixes active conveyor belts not moving movables spawned on top of them. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
57a923130e |
[NO GBP] Fixes active conveyor belts not moving movables spawned on top of them. (#77104)
There's one instance of the old signal I've missed from #76376, all because lists treat undefined keys like text strings. |
||
|
|
6a5f3c50c4 |
[MIRROR] Material container & related stuff ui refactors & clean-up [MDB IGNORE] (#22667)
* Material container & related stuff ui refactors & clean-up (#76220) ## About The Pull Request **1. Material container clean-up & refactor** - Replaced `total_amount` var with `total_amount()` proc, this var can be easily computed by summing up all material amounts rather than storing it as a var which is tedious to update & keep track of when materials are added/removed - Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`, and `get_categories()`. These procs are not used anywhere in the codebase so let's remove them & make some space. - Callbacks are replaced with signals, the callbacks don't need to be explicitly garbage collected & having macros & procs marked with `SIGNAL_HANDLER` makes your intentions more readable & explicit. - Fixes #76151 All material adding, removal, checking operations are "Integer" operations, i.e. the final value is rounded & them made 1 if the final value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better name]. No more dealing with decimal value materials The problem was after the protolathe was upgraded with better parts all the design costs were multiplied with a decimal `efficiency_coeff` value, this means even though in the UI the cost was displayed as 60 bluespace crystals its actual cost was `60.0001` something in the backend causing this check for materials to fail & print the error message. - Replaced `GetComponent(/datum/component_material_container)` with just a simple ref to the material container when adding the component, so we can save some overhead from calling this proc - Gave all procs a ton of documentation with documentation having documentation - Fixes #76506 RCD and other devices that uses the silo link upgrade now have the correct material usages - Fixes #72096. It wasn't just a problem with ancient protolathe but with all machines that used `datum/component/remote_materials` the problem was remote materials would add an instance of `datum/remote/material_container` if it wanted to use local storage but this component would get added before `datum/component/remote_materials` could be registered i.e. it comes before remote_materials in the component list. So when the machine is destroyed it will first destroy `material_container` & then `remote_materials` therefore destroying the materials before they could get ejected - Silo link is established when parent is registered with remote materials raher than adding an external timer which is faster - Everything that uses a material container will auto eject their sheets when destroyed - Moved this & remote materials into its own folder for better organization **2. Material UI Changes** - Removed the x25 & x50 print buttons from the autolathe, now they just have x5 & x10 buttons like the protolathe, These buttons were of no use since you could just type the exact amount you want to print in the `[Max: <some amount>]` side bar. The code to compute these buttons was just plain right nasty & some of it unused in the UI. - The material eject button in the material bar does not gray out when you can eject exactly one sheet - All material cost are integer values rounded - Fixes #76253 Exosuit Fabricator sends the material container static data to the UI so its material bar is not greyed out when there are sufficient materials to eject - Component printer material bar sends the material container static data to the UI so its material bar is not greyed out when there are sufficient materials to eject - Autolathe Material bars now display number of sheets available - Max printable amount of items are now computed & updated correctly in the UI. They were displaying wrong values & now get updated when items are printed, materials are removed - Silo hold actually works now. When a machine is put on hold it calls this proc |
||
|
|
e92ae5b75b |
Material container & related stuff ui refactors & clean-up (#76220)
## About The Pull Request **1. Material container clean-up & refactor** - Replaced `total_amount` var with `total_amount()` proc, this var can be easily computed by summing up all material amounts rather than storing it as a var which is tedious to update & keep track of when materials are added/removed - Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`, and `get_categories()`. These procs are not used anywhere in the codebase so let's remove them & make some space. - Callbacks are replaced with signals, the callbacks don't need to be explicitly garbage collected & having macros & procs marked with `SIGNAL_HANDLER` makes your intentions more readable & explicit. - Fixes #76151 All material adding, removal, checking operations are "Integer" operations, i.e. the final value is rounded & them made 1 if the final value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better name]. No more dealing with decimal value materials The problem was after the protolathe was upgraded with better parts all the design costs were multiplied with a decimal `efficiency_coeff` value, this means even though in the UI the cost was displayed as 60 bluespace crystals its actual cost was `60.0001` something in the backend causing this check for materials to fail & print the error message. - Replaced `GetComponent(/datum/component_material_container)` with just a simple ref to the material container when adding the component, so we can save some overhead from calling this proc - Gave all procs a ton of documentation with documentation having documentation - Fixes #76506 RCD and other devices that uses the silo link upgrade now have the correct material usages - Fixes #72096. It wasn't just a problem with ancient protolathe but with all machines that used `datum/component/remote_materials` the problem was remote materials would add an instance of `datum/remote/material_container` if it wanted to use local storage but this component would get added before `datum/component/remote_materials` could be registered i.e. it comes before remote_materials in the component list. So when the machine is destroyed it will first destroy `material_container` & then `remote_materials` therefore destroying the materials before they could get ejected - Silo link is established when parent is registered with remote materials raher than adding an external timer which is faster - Everything that uses a material container will auto eject their sheets when destroyed - Moved this & remote materials into its own folder for better organization **2. Material UI Changes** - Removed the x25 & x50 print buttons from the autolathe, now they just have x5 & x10 buttons like the protolathe, These buttons were of no use since you could just type the exact amount you want to print in the `[Max: <some amount>]` side bar. The code to compute these buttons was just plain right nasty & some of it unused in the UI. - The material eject button in the material bar does not gray out when you can eject exactly one sheet - All material cost are integer values rounded - Fixes #76253 Exosuit Fabricator sends the material container static data to the UI so its material bar is not greyed out when there are sufficient materials to eject - Component printer material bar sends the material container static data to the UI so its material bar is not greyed out when there are sufficient materials to eject - Autolathe Material bars now display number of sheets available - Max printable amount of items are now computed & updated correctly in the UI. They were displaying wrong values & now get updated when items are printed, materials are removed - Silo hold actually works now. When a machine is put on hold it calls this proc |
||
|
|
46d84e6119 |
[MANUAL MISSED MIRROR] Replaces lava and chasm's "safeties" and ignoring turf slowdown on catwalks with traits and a new element (#22384)
Replaces lava and chasm's "safeties" and ignoring turf slowdown on catwalks with traits and a new element. (#76376) This adds a new element for movables that grants turfs they're in traits, changes lava and the chasm component to check for traits instead, ditto for turf slowdown. It also implements another trait that prevents wet floor from slipping people, as well as some other changes (feel free to opine on them really): - Tables and conveyor belts now stop turf slowdown, much like catwalks, as I imagine people walking on them are not really touching the floor. (I'd include protection against lava too... until they melt, but that'd mean finding a way to have these objects burn in the first place, and lava code is still stupid despite a years old refactor I did) - Tables also stop slippery turfs from slipping (bananas, soaps etc. still apply). I wish there were a way to make some objects slippery by coating them in water vapor or splashing water/lube, but that's outside the scope of this PR. - Fixed an edge case in which a mob standing on a lava turf would be left permanently visually on fire if the lava is changed to another kind of turf. - Removed unused code from stone tiles. I'm going to include these traits in that global list for admin-added traits... tomorrow perhaps. 💤 Replacing some hard-coded mechanics with easier to use traits and an element, which I also need for the submerge element PR. 🆑 refactor: Replaced hardcoded "safeties" for lava, chasms and ignoring turf slowdowns on catwalks with traits. balance: much like catwalks, tables and conveyors also disable turf slowdowns. balance: slippery turfs won't slip you when walking on a table. fix: Fixed an edge case in which a mob standing on a lava turf would be left visually but permanently on fire if the lava is changed to another kind of turf. /🆑 Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
d4cdd6b63e |
Replaces lava and chasm's "safeties" and ignoring turf slowdown on catwalks with traits and a new element. (#76376)
## About The Pull Request This adds a new element for movables that grants turfs they're in traits, changes lava and the chasm component to check for traits instead, ditto for turf slowdown. It also implements another trait that prevents wet floor from slipping people, as well as some other changes (feel free to opine on them really): - Tables and conveyor belts now stop turf slowdown, much like catwalks, as I imagine people walking on them are not really touching the floor. (I'd include protection against lava too... until they melt, but that'd mean finding a way to have these objects burn in the first place, and lava code is still stupid despite a years old refactor I did) - Tables also stop slippery turfs from slipping (bananas, soaps etc. still apply). I wish there were a way to make some objects slippery by coating them in water vapor or splashing water/lube, but that's outside the scope of this PR. - Fixed an edge case in which a mob standing on a lava turf would be left permanently visually on fire if the lava is changed to another kind of turf. - Removed unused code from stone tiles. I'm going to include these traits in that global list for admin-added traits... tomorrow perhaps. 💤 ## Why It's Good For The Game Replacing some hard-coded mechanics with easier to use traits and an element, which I also need for the submerge element PR. ## Changelog 🆑 refactor: Replaced hardcoded "safeties" for lava, chasms and ignoring turf slowdowns on catwalks with traits. balance: much like catwalks, tables and conveyors also disable turf slowdowns. balance: slippery turfs won't slip you when walking on a table. fix: Fixed an edge case in which a mob standing on a lava turf would be left visually but permanently on fire if the lava is changed to another kind of turf. /🆑 |
||
|
|
24552f5f95 |
[MIRROR] Refactors for material container, ammo box & recycler [MDB IGNORE] (#21519)
* Refactors for material container, ammo box & recycler * Mirror! * Modular! --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Funce <funce.973@gmail.com> |
||
|
|
2922d36500 |
Refactors for material container, ammo box & recycler (#75422)
**1. Material Container Refactors**
a. `/datum/component/material_container/proc/insert_item()`
- Will now do stack spliting i.e. it will consume as many sheets from a
stack as possible and leave out the rest, It was moved from a player
interaction feature in `user_insert()` to this low level allowing many
things to take advantage of it
- Will now delete the item for you if it could salvage any materials
from it, you don't have to do it explicitly anymore if insertion was
successfull (i.e. this proc returns an non zero value) If you inserted a
stack and not all of it's sheets were inserted from the above point then
you still have to check it explicitly
- Will now invoke `after_insert` if any materials were salvaged
b. `datum/component/material_container/proc/user_insert() `
- Will now split the stack by the requested amount making precise
insertion work again & Fixes #72288
- will now consume all contents inside of the object reccursively, this
means items like ammo boxes will no longer have to adjust their custom
materials based on how much ammo they contain because `user_insert()`
will loop through all its contents and salvage the metal of every bullet
inside the box contents so this means
|
||
|
|
c4d4e1da63 |
[MIRROR] Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. [MDB IGNORE] (#20916)
* Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. * AI GEN RUN ONE --------- Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
f2fd69a49a |
Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. (#75052)
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you all here (through the automatic reviewer request system). So, mineral balance! Mineral balance is less a balance and more of a nervous white dude juggling spinning plates on a high-wire on his first day. The fact it hasn't failed after going on this long is a miracle in and of itself. This PR does not change mineral balance. What this does is moves over every individual cost, both in crafting recipes attached to an object over to a define based system. We have 3 defines: `sheet_material_amount=2000` . Stock standard mineral sheet. This being our central mineral unit, this is used for all costs 2000+. `half_sheet_material_amount=1000` . Same as above, but using iron rods as our inbetween for costs of 1000-1999. `small_material_amount=100` . This hits 1-999. This covers... a startlingly large amount of the codebase. It's feast or famine out here in terms of mineral costs as a result, items are either sheets upon sheets, or some fraction of small mats. Shout out to riot darts for being the worst material cost in the game. I will not elaborate. Regardless, this has no functional change, but it sets the groundwork for making future changes to material costs much, MUCH easier, and moves over to a single, standardized set of units to help enforce coding standards on new items, and will bring up lots of uncomfortable balance questions down the line. For now though, this serves as some rough boundaries on how items costs are related, and will make adjusting these values easier going forward. Except for foam darts. I did round up foam darts. Adjusting mineral balance on the macro scale will be as simple as changing the aforementioned mineral defines, where the alternative is a rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~ Items individual numbers have not been adjusted yet, but we can standardize how the conversation can be held and actually GET SOMEWHERE on material balance as opposed to throwing our hands up or ignoring it for another 10 years. |
||
|
|
9a594755f3 |
[MIRROR] Renames delta time to be a more obvious name [MDB IGNORE] (#20507)
* Renames delta time to be a more obvious name * updates to our code --------- Co-authored-by: oranges <email@oranges.net.nz> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
4c48966ff8 |
Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is not completely accurate, as subsystems can be delayed, however it's useful to have this number as a multiplier or ratio, so that if in future someone changes the subsystem wait time code correctly adjusts how fast it applies effects regexes used git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i 's/DT_PROB/SPT_PROB/g' git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i 's/delta_time/seconds_per_tick/g' |
||
|
|
27492ff60d |
[MIRROR] Autounlock techwebs are shared between machines that use them. [MDB IGNORE] (#18734)
* Autounlock techwebs are shared between machines that use them. (#72515) ## About The Pull Request Did you know that for every Autolathe, Limbgrower, Biogenerator, ORM, and Smelter that was built, an entire new techweb was made? The average round has 2 ORMs (smelters count) if not more from ORM deconstruction objective, 2 biogenerators, several autolathes and generally 0-1 limbgrower, I think there's more techwebs being created than we need. Creating a whole techweb was a pretty terrible way to optimize this, so I made a global list that stores these techwebs. Created on demand, these autounlocking techwebs now share between the machines that use them. It also generate all hacked nodes which will be visible if the machine is hacked, instead of 'researching' them for each hacked individual machine. The 'specialized' techweb subtype was removed because its sole purpose was to allow autounlocking to be a subtype of it. Now autounlocking is just the direct subtype. I also removed mechfab autounlocking type because it wasn't used, mechfabs use techwebs directly. Autolathes and Limbgrowers now locally store 'imported designs' which are things uploaded from technology disks. Outside of this, the autounlocking techweb subtype now stores 'hacked designs' which unlocks when the machine is emagged. While doing this, I saw ORMs and Biogenerators had disks you can insert into them, but I did not find anything that can actually be uploaded to them (I saw Alien Alloys as a possibility, but there's no such disk to allow uploading this alloy to the machine, and I didn't think an entire system for 1 single alloy was worth keeping around), so I removed this unused feature from both machines. I merged 'Hacked' and 'Emagged' categories because they served the same purpose, 'hacked' being on hacked autolathes and 'emagged' being on hacked (emagged) limbgrowers. Tech disk techwebs (which is created every time a disk is made, however I hope to change this in the future) into it's own subtype, so admins understand where its from when looking in VV panel (because I was confused when I saw them at first). ``autolathe_crafted`` proc was removed because it was entirely unused too. Now it looks like this, which I consider an improvement:  ## Why It's Good For The Game We no longer initialize a brand new techweb for no reason whatsoever. Each techweb made is making entire lists of experiments and research papers, all of which is never to be seen in-game and is completely useless to the player. Cutting down on these techwebs is a good first step to this needless initializing. ## Changelog 🆑 qol: Removed the tech disk part of the ORM's UI as it was entirely unused, now it's a little more compact with less scrolling needed. refactor: Autolathes, Limb growers, Biogenerators, ORMs and Smelters now share techwebs with other machines of their types, rather than all make new techwebs each time. This means they only build their nodes once, including hacked ones. Instead of researching nodes on hacking the machine, they now show hacked ones depending on if it's hacked. /🆑 Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com> * Autounlock techwebs are shared between machines that use them. Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com> |
||
|
|
6d757e8bec |
Autounlock techwebs are shared between machines that use them. (#72515)
## About The Pull Request Did you know that for every Autolathe, Limbgrower, Biogenerator, ORM, and Smelter that was built, an entire new techweb was made? The average round has 2 ORMs (smelters count) if not more from ORM deconstruction objective, 2 biogenerators, several autolathes and generally 0-1 limbgrower, I think there's more techwebs being created than we need. Creating a whole techweb was a pretty terrible way to optimize this, so I made a global list that stores these techwebs. Created on demand, these autounlocking techwebs now share between the machines that use them. It also generate all hacked nodes which will be visible if the machine is hacked, instead of 'researching' them for each hacked individual machine. The 'specialized' techweb subtype was removed because its sole purpose was to allow autounlocking to be a subtype of it. Now autounlocking is just the direct subtype. I also removed mechfab autounlocking type because it wasn't used, mechfabs use techwebs directly. Autolathes and Limbgrowers now locally store 'imported designs' which are things uploaded from technology disks. Outside of this, the autounlocking techweb subtype now stores 'hacked designs' which unlocks when the machine is emagged. While doing this, I saw ORMs and Biogenerators had disks you can insert into them, but I did not find anything that can actually be uploaded to them (I saw Alien Alloys as a possibility, but there's no such disk to allow uploading this alloy to the machine, and I didn't think an entire system for 1 single alloy was worth keeping around), so I removed this unused feature from both machines. I merged 'Hacked' and 'Emagged' categories because they served the same purpose, 'hacked' being on hacked autolathes and 'emagged' being on hacked (emagged) limbgrowers. Tech disk techwebs (which is created every time a disk is made, however I hope to change this in the future) into it's own subtype, so admins understand where its from when looking in VV panel (because I was confused when I saw them at first). ``autolathe_crafted`` proc was removed because it was entirely unused too. Now it looks like this, which I consider an improvement:  ## Why It's Good For The Game We no longer initialize a brand new techweb for no reason whatsoever. Each techweb made is making entire lists of experiments and research papers, all of which is never to be seen in-game and is completely useless to the player. Cutting down on these techwebs is a good first step to this needless initializing. ## Changelog 🆑 qol: Removed the tech disk part of the ORM's UI as it was entirely unused, now it's a little more compact with less scrolling needed. refactor: Autolathes, Limb growers, Biogenerators, ORMs and Smelters now share techwebs with other machines of their types, rather than all make new techwebs each time. This means they only build their nodes once, including hacked ones. Instead of researching nodes on hacking the machine, they now show hacked ones depending on if it's hacked. /🆑 Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> |
||
|
|
090174da7a |
[MIRROR] Biogen shows default reagent container icons instead of beakers [MDB IGNORE] (#18503)
* Biogen shows default reagent container icons instead of beakers (#72247) ## About The Pull Request With the new crafting menu some reagents now have default container assigned. I applied these to visualize reagents in biogen UI too. <img alt="060ybChTkI" src="https://user-images.githubusercontent.com/3625094/209483256-e4159a05-46ae-47b8-bc42-9d003cf6c303.png"> ## Why It's Good For The Game Better representation of a reagent. ## Changelog 🆑 qol: Biogenerator shows default reagent containers instead of beakers /🆑 * Biogen shows default reagent container icons instead of beakers Co-authored-by: Andrew <mt.forspam@gmail.com> Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com> |
||
|
|
fd1ea8d5b5 |
Biogen shows default reagent container icons instead of beakers (#72247)
## About The Pull Request With the new crafting menu some reagents now have default container assigned. I applied these to visualize reagents in biogen UI too. <img alt="060ybChTkI" src="https://user-images.githubusercontent.com/3625094/209483256-e4159a05-46ae-47b8-bc42-9d003cf6c303.png"> ## Why It's Good For The Game Better representation of a reagent. ## Changelog 🆑 qol: Biogenerator shows default reagent containers instead of beakers /🆑 |
||
|
|
a70a6a8055 |
[MIRROR] Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED [MDB IGNORE] (#17670)
* Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED * modular RegisterSignals Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: tastyfish <crazychris32@gmail.com> |
||
|
|
fa7688d043 |
Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED (#71056)
- Makes QDELETED use isnull(x) instead of !x, giving about 0.2 to 0.25s of speed. - Make disposal constructs only update icon state rather than go through expensive overlay code. Unfortunately did not have much effect, but is something they should've been doing nonetheless. - Makes RegisterSignal only take signals directly as opposed to allocating a fresh list of signals. Very few consumers actually used this and it costs about 0.4s. Also I think this is just a bad API anyway and that separate procs are important `\bRegisterSignal\((.*)list\(` replaced with `RegisterSignals($1list(` |
||
|
|
f7c26bbf25 |
515 Compat (#17465)
* ONLY SKYRAT CHANGES * ACTUALLY SKYRAT CHANGES * yolo, revert later * Update alternate_byond_versions.txt Co-authored-by: AnturK <AnturK@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>
|
||
|
|
4eac66d790 |
[MIRROR] Labor camp machines - Fixes & Code improvement [MDB IGNORE] (#15392)
* Labor camp machines - Fixes & Code improvement (#68584) About The Pull Request Visible changes (all the fixes): Labor point checkers now says the prisoner ID's stats rather than being a to_chat, it also displays their info much better. Labor stacker no longer duplicates your points at no cost by attacking the machine with materials, instead it processes it just like it would when sucking materials up. Labor stackers additionally now update their input/outputs when they are rotated through shuttles, as it doesn't work on the current version of Lavaland (there's no issue report up on this yet though, oddly). Adds a check if you actually have a goal before checking if you can send the shuttle up, preventing prisoners who were sent without a point goal (permanently) from being able to go up whenever they wanted by simply clicking on the button before it greyed out. The rest (code improvement): Added more early returns Removed single letter vars Renamed terribly named vars and added comments to some of them. Removed machinedir in favor of checking their view() when syncing machines, as I didn't find checking an entire side of the map next to an object to be very intuitive. Lets Lavaland use labor camp machines again Closes #67764 Just cool general fixes +1 Changelog cl fix: Labor camp Prisoners without a sentence can no longer send themselves back up whenever they wanted by clicking the button fast enough. fix: Prisoners can no longer get infinite labor camp points by clicking the stacking machine with ores. fix: All ore machines now properly change their direction when they dock a shuttle in a separate direction, fixing Lavaland's labor camp stacking machine. qol: Labor camp's point checker now states all the information you need, rather than being a paragraph of text that just appears in chat. /cl * Labor camp machines - Fixes & Code improvement * MAP RESET * Update labour_skyrat.dmm Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
ed48ec641c |
Labor camp machines - Fixes & Code improvement (#68584)
About The Pull Request
Visible changes (all the fixes):
Labor point checkers now says the prisoner ID's stats rather than being a to_chat, it also displays their info much better.
Labor stacker no longer duplicates your points at no cost by attacking the machine with materials, instead it processes it just like it would when sucking materials up.
Labor stackers additionally now update their input/outputs when they are rotated through shuttles, as it doesn't work on the current version of Lavaland (there's no issue report up on this yet though, oddly).
Adds a check if you actually have a goal before checking if you can send the shuttle up, preventing prisoners who were sent without a point goal (permanently) from being able to go up whenever they wanted by simply clicking on the button before it greyed out.
The rest (code improvement):
Added more early returns
Removed single letter vars
Renamed terribly named vars and added comments to some of them.
Removed machinedir in favor of checking their view() when syncing machines, as I didn't find checking an entire side of the map next to an object to be very intuitive.
Lets Lavaland use labor camp machines again
Closes #67764
Just cool general fixes +1
Changelog
cl
fix: Labor camp Prisoners without a sentence can no longer send themselves back up whenever they wanted by clicking the button fast enough.
fix: Prisoners can no longer get infinite labor camp points by clicking the stacking machine with ores.
fix: All ore machines now properly change their direction when they dock a shuttle in a separate direction, fixing Lavaland's labor camp stacking machine.
qol: Labor camp's point checker now states all the information you need, rather than being a paragraph of text that just appears in chat.
/cl
|
||
|
|
4af0dd0b8f |
[MIRROR] addresses reviews on the tram pr made after merge, fixes diagonal movement bugs [MDB IGNORE] (#14943)
* addresses reviews on the tram pr made after merge, fixes diagonal movement bugs (#68033) * addresses reviews on the tram pr made after merge, fixes diagonal movement bugs * wew Co-authored-by: Kylerace <kylerlumpkin1@gmail.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> |
||
|
|
fe7513d282 | addresses reviews on the tram pr made after merge, fixes diagonal movement bugs (#68033) | ||
|
|
f3bc070303 |
[MIRROR] COMSIG_ATOM_CREATED -> COMSIG_ATOM_INITIALIZED_ON [MDB IGNORE] (#12444)
* COMSIG_ATOM_CREATED -> COMSIG_ATOM_INITIALIZED_ON (#65809) Co-authored-by: TiviPlus <572233640+TiviPlus@ users.noreply.com> * COMSIG_ATOM_CREATED -> COMSIG_ATOM_INITIALIZED_ON Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com> Co-authored-by: TiviPlus <572233640+TiviPlus@ users.noreply.com> |
||
|
|
41c1378320 |
COMSIG_ATOM_CREATED -> COMSIG_ATOM_INITIALIZED_ON (#65809)
Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com> |
||
|
|
645b90d34a |
proximity monitors cleanup (plus connect_range and connect_containers components) (#10192)
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> Co-authored-by: Gandalf <jzo123@hotmail.com> |
||
|
|
12bf03aa08 |
proximity monitors cleanup (plus connect_range and connect_containers components) (#62755)
I'm refactoring proximity monitors and fields, removing lots of bloat from both that's hardly even used. Proximity monitors no longer generate effect objects to track the surrounding area, should be less cpu expensive and easier to maintain (or phase out), read and use. This PR also adds a couple components which may be needed for future stuff (for starters, the mirror reflection PR #62638 could use the connect_range comp) Improving old old, ugly old code and adding some useful backend components. Tested and working. |
||
|
|
c23bd1cb8c |
[MIRROR] every case of initialize that should have mapload, does (#8374)
* every case of initialize that should have mapload, does * E Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com> Co-authored-by: Gandalf <jzo123@hotmail.com> |
||
|
|
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  ## 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` |
||
|
|
56d4291ef6 |
[MIRROR] Reverts Entered() passing dir instead of old loc (#6646)
* Reverts Entered() passing dir instead of old loc (#59910) * Reverts Entered() passing dir instead of old loc Co-authored-by: Rohesie <rohesie@gmail.com> |