mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-30 11:01:35 +00:00
57cc38c789aa8b664f69de6ccc19ec19cdccafde
1771 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
6700880a5b |
[NO GBP] Fix overlay lighting messing up alert overlays (#87362)
## About The Pull Request Closes https://github.com/tgstation/tgstation/pull/87357 Adds a `IS_LIGHTING_UNDERLAY` define, and a `strip_light_underlays` helper that uses it (thanks @Kapu1178 for the code) ### Before  ### After  ## Changelog 🆑 Absolucy, Kapu fix: Fix overlay lighting (such as lanterns) messing up alert overlays, i.e the rod of asclepius alert. /🆑 |
||
|
|
0c519008cb |
Master-overlayed screen alerts (i.e aura healing) now use appearance cloning instead of directly overlaying the master (#87281)
## About The Pull Request This reworks the `/mob/proc/throw_alert(new_master = ...)` to use appearance cloning instead of just directly adding the master atom as an overlay. There's several advantages to this: - We don't have to change anything about the original target at all - Setting the plane/layer, adding the overlay, then resetting it to before (as it does without this PR), feels like an awful hack ngl. - We can ensure the target is always facing south, and has no pixel x/y/z shift. <details> <summary><h3>Proof of testing / screenshots</h3></summary> I had the healing rod holder standing on a table when the alert was added, to ensure that the pixel_x/y/z reset worked.   </details> ## Why It's Good For The Game Ensures the aura healing alerts and such always look consistent - no pixel offsets, always facing south, with more reliable code. ## Changelog 🆑 refactor: Refactored how some screen alerts, such as aura healing, show atom overlays. /🆑 |
||
|
|
3e3b6a09bc |
All melee weapon damage temporarily slows cyborgs rather than just thrown weapon damage (#87119)
## About The Pull Request Cyborgs will now be temporarily slowed down when hit with **any melee weapon**, based on the strength of the weapon. Thrown weapons maintain their behavior of slowing cyborgs, and they also now scale based on strength of the weapon. Thrown weapon slowdown is also stronger (3x stronger) than just hitting them. So you are still incentivized(?) to use the existing mechanic. To catch up to them, I guess. ## Why It's Good For The Game So, this mechanic was added as a new counterbalance to cyborgs due to no longer being stunned in a single flash. But 1 year later I polled the community, and the results speak for themself:   It is my opinion that this mechanic is too obscure and a bit obtuse to work as a "mechanical counter" to the cyborg. "Yeah to catch up to a cyborg you have to throw a floor tile or a potted plant at them." "You mean I can't just *hit* them with the potted plant?" "No, you gotta chuck it." This PR aims to address that by tweaking the mechanic to trigger on any weapon attacks. Which in my mind, makes sense. "Hitting borgs with stuff will slow them down temporarily" is easier to parse and observe in practice than "THROWING stuff at borgs will slow them down". ## Changelog 🆑 Melbert balance: Cyborgs are now slowed down when hit with any melee weapons, rather than ONLY when they are hit by THROWN melee weapons. The stronger the weapon, the stronger the slowdown. Thrown weapons are still more effective at slowing than just hitting them directly, however. /🆑 |
||
|
|
a9d0fce8c8 |
Fixed Chameleon clothing not updating your sprite in some cases (#87100)
## About The Pull Request Whenever you equip or unequip a piece of clothing (or change the appearance of a chameleon item while wearing it), the game checks to see if your sprite needs to update the parts of your body that are obscured by that clothing. However, it only actually updates your sprite if the item covers a part of your body that is relevant to your sprite. If you equip an item that hides a part of your body (such as a chameleon helmet set to something that hides your hair), then transform that item into a form that no longer covers anything, it will see that the item covers nothing important and skip trying to update your appearance. Removing this check will cause update_body() calls to occur slightly more often, but in the cases where it actually shouldn't update, the sprite update code will detect that the rendering key for each limb has not changed and exit without making any sprite changes, so the performance hit will be minimal. Similar situation with face-covering chameleon items and sec huds: You could equip a face-covering chameleon item to make your sec hud arrest status disappear, change the item to something that does not cover your face, and then remove it, and your sec hud arrest status would not update. ## Why It's Good For The Game ## Changelog 🆑 fix: Fixed chameleon clothing sometimes making you bald or hiding other parts of your sprite. /🆑 Fixes #83570 |
||
|
|
96c0c0b12c |
Fish infusion (#87030)
## About The Pull Request I'm adding a new infusion ~~(actually four, but two of them are just holders for specific organs tied to a couple fish traits)~~ to the game. As the title says, it's about fish. The infusion is composed of three primary organs, plus another few that can be gotten from fish with specific traits. The primary organs are: - Gills (lungs): Instead of breathing oxygen, you now need to stay wet or breathe water vapor. - fish-DNA infused stomach: Can safely eat raw fish. - fish tail: On its own, it only speeds you up on water turfs, but it has another effect once past the organ set threshold. It also makes you waddle and flop like a fish while crawling (I still gotta finish sprites on this one) Other organs are: - semi-aquatic lungs: A subtype of gills from fish with the 'amphibious' trait, falls back on oxygen if there's no water. Can also be gotten from frogs, axolotl and crabs. - fish-DNA infused liver: From fish with the 'toxic' trait. Uses tetrodotoxin as a healing chem instead of a toxin. Also better tolerance to alcohol if you want to drink like a fish (ba dum tsh). - inky tongue: From fish with the 'ink production' trait. Gives mobs the ability to spit ink on a cooldown, blinding and confusion foes temporarily. The main gimmick of this infusion revolves around being drenched in water to benefit from it, In the case you get the gills organ, this also becomes a necessity, to not suffocate to death (alternatively, you can breathe water vapor, without any benefit). To enable the bonus of the organs set, three organs need to be infused. They can be gills, stomach, tail and/or liver, while the inky tongue doesn't count towards it. Once the threshold is reached, the following bonus are enabled: - Wetness decays a lot slower and resists fire a bit more. - Ink spit becomes stronger, allowing it to very briefly knock down foes. - Fishing bonuses and experience - Resistance to high pressures - Slightly expanded FOV - drinking water and showers mildly heal you over time. - for felinids: You won't hate getting sprayed by water or taking a shower. - While wet: - - If the fish tail is implanted, crawling speed is boosted. - - You no longer slip on wet tiles. - - You also become slippery when lying on the floor. - - You get a very mild damage resistance and passive stamina regeneration, and cool down faster. - - You resist grabs better. - - get a very weak positive moodlet. - However, being dry will make you quite squisher, especially against fire damage, slower and give you a modest negative moodlet. While working on it, I've also noticed a few things that explained why tetrodotoxin (TTX) did jackshit at low doses, because livers have a set toxin tolerance value, below which, any amount of toxin does nothing. Also I've felt like reagents like multiver & co were a bit too strong against a reagent that's supposed to work at very low doses, with slow metabolization, so I've added a couple variables to buff TTX a bit, making it harder to purge and resistant to liver toxin tolerance (also added a bit of lungs damage). ## Why It's Good For The Game I wanted to take a shot at coding a DNA infusion and see how chock-full I could make it. DNA infusions are like a middle point between "aha, small visual trinket" and organs with generally ok effects. I seek to make something a bit more complex ~~(also tied to fishing ofc because that's more or less the recurrent gag of my recent features)~~ primaly focused around the unique theme of being strong when wet and weaker when dry. EDIT: The PR is now ready, have a set of screenshots of the (fairly mid) fish tails (and gills, barely visible) on randomly generated spessman and one consistent joe:  ## Changelog 🆑 add: Added a new infusion to the game: Fish. Its main gimmick revolves around being stronger and slippery when wet while weaker when dry. balance: Buffed tetrodotoxin a little against liver tolerance and purging reagents. /🆑 |
||
|
|
5374784ff8 |
Inventory slots will dim when unusable due to equipment or bodyparts, rather than just for species hardcoded slots (#86935)
## About The Pull Request Closes #54039 Rather than only dimming inventory slots your species are unable to use, unusable inventory slots in general are dimmed. For example, not wearing a jumpsuit shows this:  ## Why It's Good For The Game Makes it a bit more transparent what you can and can't wear given your current equipment or status. ## Changelog 🆑 Melbert qol: Unusable inventory slots (as according to your bodyparts or equipment) will now be dimmed (similarly to how unusable inventory slots are dimmed for certain species like Golems). /🆑 |
||
|
|
c7e14784b3 |
Refactors health doll, replaces "wounded" screen alert (#87011)
## About The Pull Request The screen alert for being wounded is deleted Instead, your health doll will now glow red on any (and all) wounded limbs https://github.com/user-attachments/assets/83565684-3e19-4753-8034-d8de6574e2b8 To accomplish this, the doll was refactored a bit. No longer operates off of overlays, now uses vis contents across every limb, and just updates the icon state of all those vis contents ## Why It's Good For The Game Wounds really spam the hell out of you with screen alerts and it often blocks you from seeing more relevant alerts that you care about The mere presence of a minor dislocation on your leg prevents you from noticing that you are no longer breathing. This is a bit troublesome This can be resolved in other ways, of course - adding a priority value to alerts? - but instead, I think we can just make better use of our existing hud elements I find this decently intuitive, at a glance. - The old screen alert gave you a tooltip saying you could click the alert to examine yourself. - Clicking on the health doll examines yourself the exact same way. - So, players may see their doll glowing red, and click on it to self examine, to see the report of them having a wound on their leg or chest or whatever. ## Changelog 🆑 Melbert del: Having any wounds no longer gives you an alert in the top right qol: Having any wounds now make the corresponding bodypart on your health doll (the lil dude on the right side of the screen) glow red. refactor: Refactored how the hud's health doll shows up for humans. Report any oddities /🆑 |
||
|
|
22d319fa86 |
Weather planes from The Wallening to fix multi-z weather overlays (#86733)
## About The Pull Request I started doing this for Yogstation, but ended up doing all my testing on TG code since there's more debug tools to use, and @LemonInTheDark said I should upstream it when I was done. So I'm just gonna start here. The whole point of this is to stop multi-z maps from stacking weather overlay effects like  Old pic I know, but you get the point Now it behaves as expected https://github.com/user-attachments/assets/6d737eae-2493-4b48-8870-e4ac73dcbbeb https://github.com/user-attachments/assets/b253aa97-c90d-4049-a97d-940b0ec386d0 <details> <summary>Note: this does not fix the issue of areas out of your view not updating their appearance. 90% sure that's a Byond™️ issue</summary> https://github.com/user-attachments/assets/3db5ce28-2623-4d3e-a5f4-bd561d96010a </details> ## Why It's Good For The Game Isolating weather to its own planes is good for having better control over how it behaves. Since weather overlays are tied to areas it makes them kinda hacky to begin with, but this is a step in reigning them in. ## Changelog 🆑 fix: fixed multi-z weather overlays stacking and not hiding overlays above you /🆑 |
||
|
|
3f0b4abb8d |
Replaces world.icon_size (and some magic numbers) with defines (#86819)
## About The Pull Request All usages of world.icon_size in code have been replaced with new `ICONSIZE_X`, `ICONSIZE_Y` and `ICONSIZE_ALL` defines depending on context Replaces some "32" magic numbers with the defines A few bits of code have been modified to split up x/y math as well ## Why It's Good For The Game Magic number bad, code more readable, code more flexible and I'm told there's an access cost to doing world.icon_size so minor performance gains ## Changelog 🆑 tonty code: made some code relating to the world's icon size more readable /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑 |
||
|
|
a4e9a56b4c |
Small refactor on station trait lobby buttons. (#86624)
## About The Pull Request So, I've been looking into manually loading job traits today, and it seems the buttons don't appear until you reconnect. Upon further investigations, it turns out that the code doesn't support showing lobby buttons outside of SSstation init. To add injury only up to three buttons can be displayed for some stupid reason (the lack of code for x offsets), plus the buttons aren't relocated when one is removed, thus possibly leaving behind an empty gap. This PR fixes all of that, while removing some crumbs of shitcode from new players' HUDs and making sure to remove datum traits and references are removed when the trait is deleted (usually never the case outside VV).  ## Why It's Good For The Game Lobby buttons should ALWAYS be shown to the player if the relative trait is loaded, the only exception being the conditions set by the trait itself (for job traits is the job age and whether the game has started or not), while the offsets of the lobby buttons should stay synced with how many are being displayed to the new player at any given time, so if a button is deleted, the others are relocated to avoid having leaving an empty gap behind. Beside, this is necessary for the lobby button for the playable pun pun to show up during Monkey Day. ## Changelog N/A, all backend. |
||
|
|
0382e0b9ac |
Z Level Button: Redone and ReBETTER. (#86465)
## About The Pull Request Second crack at my z-level changing HUD button. I felt that my last attempt left a lot to be desired, so here I am with it again! <details> <summary> Images </summary> Widescreen:   Non-widescreen:   Basic/Simple mobs:  </details> TODOs: - [x] Apply to cyborgs - [x] Apply to xenomorphs - [x] Sprites: Glass UI Style - [x] Sprites: Detective UI Style - [x] Sprites: Clockwork UI Style - [x] Sprites: Operative UI STyle I still wanted to get the PR up to both get feedback on this method and to see if I could garner a little bit of help with the spriting bit (PLEEEEASE) ## Why It's Good For The Game The current button leaves a lot to be desired, mainly: - It isn't applied to every possess-able mob - It has weird positioning and sizing that doesn't match anything else in the game - It's confusing and inconsistent to use (it straight up would not work for observers, and I had to add the option to do alt click to go down) This PR aims to fix all this, and more! - One, big, long button that matches other similar ones that already exist! - Click the up arrow to go up, click the down arrow to go down. Always. No fuzz! - Two types: Horizontal and Vertical! Choose whichever fits your needs! ## Changelog 🆑 qol: The z-level button got a refresh! It's now applied to more places and it should be simpler to use. /🆑 |
||
|
|
8b4fd0c334 |
Revert "Refactor some usages of get_step_towards in loops to use get_steps_to instead" and subsequent fix (#86585)
## About The Pull Request
This reverts commit
|
||
|
|
39e58f8b20 |
Refactor some usages of get_step_towards in loops to use get_steps_to instead (#86020)
## About The Pull Request BYOND 515 added a new proc called `get_steps_to` - which is basically `get_step_towards`, but instead it returns a list of directions! Ain't that nifty and useful? So we can just calculate the path once. Several helper procs - `can_see`, `CheckToolReach`, and `get_hearers_in_LOS`, use `get_step_towards` in a loop, so I've refactored them to just calculate the path once using `get_steps_to`, and then loop through the returned path of directions. ## Why It's Good For The Game In theory, should micro-optimize performance, by only calculating the pathfinding once. ## Changelog 🆑 refactor: Refactored some functions related to line-of-sight and reach to improve performance. /🆑 |
||
|
|
91baa94ac5 |
event based incapicated and able_to_run (#86031)
## About The Pull Request this is a revival of #82635 . i got permission from potato to reopen this, he did almost all the work. i only just solved the conflicts and fixed all the bugs that were preventing the original from being merged (but it should be TMed first) ## Why It's Good For The Game slightly improves the performance of basic mob AI ## Changelog 🆑 LemonInTheDark refactor: able_to_run and incapacitated have been refactored to be event based /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: ZephyrTFA <matthew@tfaluc.com> |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
e1bf793264 |
Spelling and Grammar Fixes (#86022)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
d2c7806047 |
Spelling and Grammar Fixes (#85992)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
e47ba6480f |
[NO GBP] Fixes examine balloons not being click transparent even while inactive (#85969)
## About The Pull Request This solution sucks, but byond is after our mortal souls and I wasn't able to find anything better. Something is very wrong with mouse_opacity and the only working solution was making the plane master invisible while its inactive. Closes #85968 ## Why It's Good For The Game They no longer eat your clicks while invisible ## Changelog 🆑 fix: Fixed examine balloons not being click transparent even while inactive /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
8b0cd15e2c |
Makes map view hiding a bit more robust against unusual circumstances (#85900)
While in the middle of a destroy chain the mob can no longer be associated with the client you need to clear huds from. This allows you to just pass a client into a different proc and has some more error checking to hopefully avoid visible issues for players if something goes wrong. This fixes a runtime I cam across while working on something else. |
||
|
|
69e3c0eaf1 |
Wallmount balloons are now clickable (#85887)
## About The Pull Request You can now click wallmount balloons to click the parent object. Doing so removes the shift key modifier, allowing you to interact with them instead of examining https://github.com/user-attachments/assets/d5b5ba95-4401-484a-a1a1-e738fa3ea99c ## Why It's Good For The Game Sideways wallmounts are hard to click, and this is an easy and intuitive way to solve that issue. Also oranges paid me to do this. ## Changelog 🆑 qol: Wallmount balloons are now clickable /🆑 |
||
|
|
310be26041 |
Adds attack_dir to multiple common damage sources, fixes mechs' directional armor (#85726)
## About The Pull Request Closes #81260 Closes #74022 Currently mechs are the only atoms utilizing attack_dir but I added it in multiple other places that were missing it to ensure that if something else uses it it won't break in those scenarios ## Changelog 🆑 fix: Mechs' directional armor now actually works /🆑 |
||
|
|
fcc8a21bcb |
Fix inventory item interactions sometimes being blocked due to not counting as adjacent when not on a turf (#85478)
## About The Pull Request So it seems that currently `can_perform_action(target, ...)` being called for an inventory item while you're inside of another object, say a closet or a pAI card, blocks with the message "You are too far away!". Looking into this, it seemed to be due to `CanReach(target)` failing, which seemed to be due to `Adjacent(target)` not actually recognizing these as being adjacent when not on a turf. This seemed to be because it only really passes when either on a turf or if the object we're checking adjacency with is the loc of the object we're checking adjacency from. After talking about it in the code channel, we decided to go for adding a simple inverse check to make it symmetric. Being, we add a second `neighbor?.loc == src` check parallel to our existing `neighbor == loc` check. This seems to fix the issue. ## Why It's Good For The Game Kinda weird if being in a closet means somehow your inventory is no longer adjacent to you for interactions, saying you're too far away. Especially for pAIs, whom are always in this situation when not in holoform (pAI in card, PDA in pAI). ## Changelog 🆑 fix: Fixes getting a "You are too far away!" interaction block on inventory items when inside of another object. This includes accessing storage or using your PDA from a closet, or as pAI using your digital messenger while inside of your card. /🆑 |
||
|
|
0fc7c567a7 |
Optimizes hunger appearance work (#85299)
## About The Pull Request If our appearance is fully dependant on hunger state, there's no reason to do ANY work if the state hasn't changed, also don't churn underlays for no reason. ## Why It's Good For The Game This has relatively high cost and it's an easy win |
||
|
|
c67a85d375 |
Add our_view to screen_loc_to_offset in view_audit_buttons (#85300)
## About The Pull Request
Relative positions are calculated incorrectly in widescreen mode without
this. To demonstrate, call
```
screen_loc_to_offset("EAST-4,SOUTH", null) = [-128,32]
```
When passed to offset_to_screen_loc, this will be clamped to (32,32)
```
offset_to_screen_loc(-128, 32, view = our_view) = "1,1"
```
And returned as 1,1 - moving the action button incorrectly.
By including our_view in the call to `screen_loc_to_offset`, this entire
problem is avoided.
## Why It's Good For The Game
If someone sets a floating action button to be relative to EAST, SOUTH,
or CENTER, they run into this bug. As far as I can tell, nothing
currently does this and therefore it isn't meaningful, but I've run into
this twice now downstream.
## Changelog
🆑
fix: Fixed action buttons relative to EAST,SOUTH, or CENTER being
improperly moved during view_audit_buttons()
/🆑
|
||
|
|
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> |
||
|
|
523dc774f2 |
Callouts and MODsuit quick module pickers now track user (#85418)
## About The Pull Request Callout and MODsuit quick picker (Ctrl + MMB) radials are now user-bound, meaning that they won't change their screen position if you move. ## Why It's Good For The Game Those aren't radials bound to specific objects and rather appear at your cursor purely for convenience. In case of callouts this is especially important as you're most likely running while casting them which will make your mouse move over and trigger a random option as you don't have to click to use them. ## Changelog 🆑 qol: Callouts and MODsuit quick module pickers now track user /🆑 |
||
|
|
2e8f45737c |
Players can now reorder items inside storages by dragging them (#85318)
## About The Pull Request https://github.com/user-attachments/assets/8949965f-a78a-4f3d-b528-afcdfe5c4e72 Drag'n'dropping items inside of an open storage that you can access will reorder them. I had to register dropping onto items themselves instead of cells as they ignore icon transparency when in storage for QOL reasons, so bear with that. ## Why It's Good For The Game Reordering your storage currently requires taking out all items in front of position that you want a certain item to be and putting them back in which could be rather annoying with large storages. ## Changelog 🆑 qol: You can now reorder items inside storages by dragging them /🆑 |
||
|
|
bab0287356 |
Mining headset upgrade - Callouts and volume boosters (#85008)
## About The Pull Request  Shift + middle clicking while wearing a mining headset will open a callout radial, after moving your mouse over one of the options a callout emote will appear where you pointed (No need to click on the radial button). Callouts have a 3 second cooldown to prevent spam and glow in the dark due to how dark lavaland is (normal point emotes do not) There are 6 options: pointing, danger, attack, mine, defend and reposition. Your callouts are colored in your runechat color. This is done via a component so later if needed it could be added to other headsets/mobs/items. Callouts also can initiate basic mob orders, being a better way to command your minebots in combat. Additionally, they also boost your speech back to normal levels in low-pressure environments, ensuring that your runechat is still nice and readable. ## Why It's Good For The Game This would make coop mining much more enjoyable, as stopping to type mid-fight is more often than not a death sentence on lavaland. With arcmining's vents cooperating is actually beneficial, and I feel like we should incentivize miners to do it more often by providing them with tools for it. ## Changelog 🆑 add: Mining headsets now allow you to make callouts via pointing. You can use them to communicate with fellow miners or order your army of bots and raptors! add: Mining headsets keep your voice loud and clear in low-pressure environments (not vacuum!) /🆑 |
||
|
|
8616257e3e |
Monkeymancers can interact with runes (#85289)
## About The Pull Request Hey hey party people. I watched a monkeymancer round last night. It was hilarious, but the guy couldn't activate his ritual rune. Sucks! Turns out, monkies don't call `attack_hand()`, they call `attack_paw()`. This means that monkey dexterity was never the problem stopping the rune from activating, but the fact that the attack chain was never even trying to interact with the rune effect in the first place. I've added a new atom interaction flag that routes through attack_paw, so now monkies can be given their own specific interaction behaviors for cases like this.  ## Why It's Good For The Game Closes #85267. Also makes it a bit easier to make interact behaviors scalable to monkies in the future. ## Changelog 🆑 Rhials fix: Monkey wizards can now interact with grand ritual runes. /🆑 |
||
|
|
5f80128fa9 |
Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## About The Pull Request it's - conjunction of "it" and "is" its - possessive form of "it" grammar is hard, and there were a lot of places where "it's" was used where it shouldn't have been. i went and painstakingly searched the entire repository for these instances, spending a few hours on it. i completely ignored the changelog archive, and i may have missed some outliers. most player-facing ones should be corrected, though ## Why It's Good For The Game proper grammar is good ## Changelog 🆑 spellcheck: Numerous instances of "it's" have been properly replaced with "its" /🆑 |
||
|
|
9855ee0966 |
Cult vs Heretic overall polishing (#84908)
## About The Pull Request Renamed the Crimson Focus to the Crimson Medallion Fixed harvesters not being properly bound to their master, nor dying when they do Fixed heads totally overriding cultist sacrifice rewards Heretic blade now converts to a nullblade Added wooshing, shaking, and glowing to flinging around with the heretic blade Removed the probability to not gain a reward when sacrificing a cultist ## Why It's Good For The Game > Renamed the Crimson Focus to the Crimson Medallion I heard bradley say this and it sounded better, differentiated it from the amber focus, gave it a unique identity > Fixed harvesters not being properly bound to their master, nor dying when they do Now you can track your master through the arrow though > Fixed heads totally overriding cultist sacrifice rewards Whoops > Heretic blade now converts to a nullblade Everyone loves these and it fits more-ish > Added wooshing, shaking, and glowing to flinging around with the heretic blade I am the flavor master > Removed the probability to not gain a reward when sacrificing a cultist This was 'pre-balancing' which is a cardinal sin in my books. It shouldn't exist without a good reason, plus the implementation is poor. ## Changelog 🆑 spellcheck: Renamed the Crimson Focus to the Crimson Medallion fix: Fixed harvesters not being properly bound to their master, nor dying when they do fix: Fixed heads totally overriding cultist sacrifice rewards add: Heretic blade now converts to a nullblade add: Added wooshing, shaking, and glowing to flinging around with the heretic blade balance: Removed the probability to not gain a reward when sacrificing a cultist /🆑 |
||
|
|
2672a93c66 |
Voidwalker Balancing, Fixes and Additions (#85045)
## About The Pull Request Balances - Stops voidwalkers from breaking glass at all, and throwing items Voidwalkers started using spears to break electrified windows to space area's. Throwing bypasses too many safety checks, and shouldn't be their main means of combat either way - No hitting anyone in crit Voidwalkers were using weapons to try and kill as many people as possible without kidnapping - Only able to pull people Voidwalkers were dragging bags around with a personal armory. It also just looks goofy as hell - Increases space dive enter to 3 seconds (from 2) and decreases space dive exit (from 2 seconds to 1) The original value was pretty fast, and is being used to slip out of combat if anyone ever comes after them. This is intended to a certain degree, but it was a bit too strong - Void Eater becomes blunt during use, needs kidnappings to refresh Yeah... For some it's being used as a murderbone antag, forgoing kidnappings completely. This change makes murderboning significantly more difficult without bothering good faith players. It goes from 25 damage to 15 in 0.5 damage increments. This slightly decreases take-down potentially against people with low-mood, but clicks that go SCRUNGE release dopamine so it balances - Gives voidwalkers chunkyfingers, preventing stun baton and gun use Voidwalker originally had this, but I figured I'd keep it out to give people to freedom to be more opportunistic in combat, but a significant portion defaulted to getting a stunbaton as quick as possible so they could avoid engaging in actual combat - Removes eye slots They're already flash immune. People don't know this so they're all rushing sunglasses. It just looks weird when the space monster is wearing glasses :/. They can still wear scarves if they decide to be fashionable - Void eater applies 10s of NODEATH Yeah fuck it why not? It also prevents succumbing and takes out a lot of cheese - Removed Voidwalker armor They had 10% brute and 20% burn armor. I didn't really think much about the original change, figured they'd be too weak otherwise, but turns out they're sufficiently strong and this kinda deviates from the intended "ambush antag" by making them stronger in sustained combat - Voided go to a safe turf instead of a random one Actually just a mistake on my part. Dumping mute people in the turbine plasma burn chamber is cruel, even for a coder Fixes - The Unsettle ability line of sight didn't check for line of sight :/ Addition: - Gives Voidwalker telepathy. I originally kept it out because whatever but honestly I think it's fine and gives them the chance to communicate if they ever need to. I've also given the abilities it's own sprite and background cause good vibes ## Why It's Good For The Game The original testmerges I spectated went very well! I had it testmerged on Terry and the rounds where I observed were played in very good faith and played a spooky antag incredibly well. I've also seen others play incredibly fun rounds! It seems to have gone downhill a bit though (or Terry is high-RP?). I've observed a few rounds on other servers and the way it's played is not great. I originally kept as little handrails as I could as to give people the most freedom possible in playing the spooky antag, but some people dissappoint me so, so incredibly deeply. It's just been merged but I'm already seeing players ignoring kidnap mechanics in favor of roundremoving as many people as possible, giving up any semblance of stealth in favor of carrying around mini armories. Another spent it's time breaking windows to vent as much of the station as possible. I also knew it would happen, but not this much. I probably should've had this PR up a bit sooner but I've gotten really into Hardrock TerraFirmaCraft (seriously it's _sooo_ good). I can keep going "Argh, players!!" but honestly I've been incredibly naive. These set of balance changes set out to cripple gameplay optimizers while leaving good faithed players unaffected for the most part, bringing it closer to the original design doc I wrote and away from just being another murderbone machine ## Changelog 🆑 add: Gives voidwalker telepathy fix: Fixes the Unsettle ability ignoring line of sight (which was it's sole gimmick, im just dumb) balance: Voidwalkers cannot break windows anymore or throw objects balance: Voidwalkers can no longer harm people in crit balance: Voidwalkers can only pull mobs balance: Voidwalkers' space dive enter has been increased by 1 seconds, but dive exit decreased by 1 second balance: Void eater becomes blunt during use. Kidnap people to refresh it balance: Removes voidwalker glasses slot balance: Gives voidwalkers chunky fingers balance: Voidwalker applies NODEATH on hit balance: Voided victims get dumped in safer places /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
01f7be4ea4 |
Xenos have their resist UI element again (#84995)
## About The Pull Request This restores the "resist" UI element for xenos. It's been there the whole time, even having the screen item get made every time a Xeno player occupies a body. It wouldn't render, however, since the actual screen element wouldn't be modified to use the xeno UI theme.  ## Why It's Good For The Game Xenos have plenty to be resisting from. Stop-drop-and-rolling, instantly breaking out of handcuffs or straitjackets, buckle-combat. The thing is, it's been here to whole time too, and even had a sprite already set up, so it leads me to believe that this was somehow just taken out by accident one day and went mostly unnoticed. ## Changelog 🆑 Rhials fix: Xenos have a "resist" ui element now. Cool! /🆑 |
||
|
|
a61e8eaef5 |
fixes a big harddel source (#83987)
## About The Pull Request this hard delete would happen everytime a player joins/observers the round. upon using the ref tracker i discovered this problem was caused by movable/screens not cleaning up after their owning huds if it gets deleted. i didnt weakref it was cause it meant id have to resolve it in so many places, but if weakrefing is preferable i will do it  ## Why It's Good For The Game fixes a hard delete |
||
|
|
092d484ee3 |
Alt right click support for borgs (#84907)
## About The Pull Request - Fixes #84900 ## Changelog 🆑 fix: borgs have alt right click functionality /🆑 |
||
|
|
5e753b6788 |
Offset render relays for non-offsetting planes to match highest matching render plane (#84184)
## About The Pull Request **Alternate title: "Fix blind people getting so blind they become deaf when going down a flight of stairs"** So 'bout half a week to a week ago I overheard a friend complaining about blind people not seeing runechat on lower multi-z levels. Asked a bit, apparently they'd reported this about half a year ago, and it's still an issue. So in my never-ending hubris I decided to just go and fix it! Now, admittedly? I really _really_ do not get the rendering system we use. The simple options were right out: we can't allow the fullscreens plane to be offset, as this causes issues with looking up/down, or disallow runechat from being offset, which causes issues with runechat from other levels. After poking our very cool and smart rendering guy several times over the course of the last week, this is what we got to: ### The technical bits We simply make the rendering relays for non-offsetting plane masters point to the highest rendering plane that matches the target. We do this by offsetting the rendering relays in place, by adjusting their plane and layer values to match the new offset, with a new `offset_relays_in_place(new_offset)` proc called in `/datum/plane_master_group/proc/transform_lower_turfs(...)`. Importantly, we compare the current layer values to what they should've been, so we don't accidentally override relays with custom-set layers. This fixes our issue (as tested on wawastation): <details> <summary>Images</summary>    </details> ## Why It's Good For The Game Fixes #80376. ## Changelog 🆑 fix: You can see runechat above fullscreen overlays on lower multi-z levels again. Rejoice, blind players. Please report any weird rendering layering issues. /🆑 |
||
|
|
726dc54d7f |
Use 1,1 instead of CENTER as relay_loc on 516 builds (#84035)
## About The Pull Request As of 516 build 1640, whenever render_source is used, the replacement icon is now _ALWAYS_ anchored to the bottom left of the replaced icon. This kinda breaks things that relied on the previous behavior of everything being centered. ## Testing Evidence   ## Why It's Good For The Game Because having the game work is good. ## Changelog None because 516 is still not a public beta yet. |
||
|
|
e90a9b4b68 |
Flattens The Floor Plane (Camera Update Too) (#84350)
## About The Pull Request Ok so like, side map right? It makes things higher up in the world render above things lower down in the world. Most of the time this is what we want, but it is NOT what we want for floors. Floors are allowed to be larger then 32x32, and if they are we want them to render based off JUST their layer. If we don't allow this grass turfs and others get cut off on their bottom edge, which looks WEIRD. In order to make this happen, we can add TOPDOWN_LAYER to every layer on the floor plane and disable sidemap. I've added documentation for this to VISUALS.md, and have also implemented unit test errors to prevent mixing TOPDOWN layers with non topdown planes (or vis versa). This new test adds ~1 second to tests, which is I think a perfectly scrumpulent number. EDIT: I nerd sniped myself and implemented sidemap layering and lighting for cameras (also larger then 32x32 icon support for getflat) The lighting isn't perfect, we don't handle things displaying in the void all that well (I am convinced getflat blending is broken but I have no debugger so I can't fix it properly), but it'll do. This came up cause I had to fix another layering issue in cameras and thought I might as well go all in.  ## Why It's Good For The Game Old:  New:  ## Changelog 🆑 fix: Grass turfs will render properly now. Reworked how floors render, please report any bugs! fix: Cameras now properly capture lighting fix: The layering seen in photos should better match the actual game /🆑 |
||
|
|
e4c5c2fc2a |
Allows for proxy atoms in object melee attack chain (#83860)
## About The Pull Request 1. Objects now have an `get_proxy_for()` proc. This returns an atom that will participate in the object melee attack chain on behalf of your atom. Allows for general purpose polymorphism per object interaction 2. Cleaned up some multitool acts to accommodate proxy behaviour 3. You can pry tiles as an Engiborg with crowbar in hand & do other similar behaviour with crowbar 5. Improves & Depends on #83880. We don't need a hidden omni toolbox & can create the tools directly in the omnitool and pass them in the attack chain as a proxy rather than calling the attack chain manually. All tools are on the borg directly - Fixes #84355 - Fixes #84359 - Fixes #84393 ## Changelog SyncIt21,zxaber 🆑 fix: omni crowbar tool interaction for replacing tiles has been fixed fix: techfab screentip does not runtime when you hover over it with an omnitool multitool fix: medi borgs can do brain surgery again code: improved multitool & general tool code for some machines /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
b949b7c7fb |
Simple mouse drop improvements (#84406)
## About The Pull Request 1. Mouse drop now uses `CanReach()` which is more versatile instead of `Adjacent()` for adjacency checks 2. `CanReach()` & `DirectAccess()` are now part of `atom`. It's been moved up from `atom/movable` 3. It won't again check for adjacency inside `can_perform_action()` saving some overhead 4. Removing the nested `if` conditions from code is always a plus ## Changelog 🆑 code: improved mouse drag & drop code /🆑 |
||
|
|
d32d75273d |
Allow mobs to ctrl click mobs while resting (#84587)
## About The Pull Request - Fixes #84471 Of course, you still can't grab a mob while lying down. That and other grab/pull related functions when resting are unchanged ## Changelog 🆑 fix: you can hold your wound while resting via ctrl click /🆑 |
||
|
|
e22ace0502 |
Fix telekinesis letting you grab people at a distance, and teleport them to you by strangling them (#84546)
## About The Pull Request
Was told that apparently recent changes have made it possible to grab
and strangle people at a distance with telekinesis... which then
teleports them to you.
Looking into it, it seems to be a missing flag in the following check
preceding pulling living things:
|
||
|
|
4eaa299c0b |
Cult Vs. Heretic: 7 Months Later Edition (#82877)
## About The Pull Request This PR was originally meant as a replacement for the Bloody Bastard blade, but then I stopped existing for 7 months. Now that I'm here again, I'm finishing the job once and for all. ### **HERETICS VERSUS CULTISTS** ### Heretics Heretics can now sacrifice cultists, which will give them one of three gifts: The Cursed Blade, the Crimson Focus, and the Rusted Harvester. The gifts given are weighted to be spread out equally with each type. They will also gain one knowledge point. - The Cursed Blade is a free heretic blade that is more powerful than the normal heretic blade, including a small block chance. It can also be used to draw heretic runes off combat mode. - The Crimson Focus is a necklace that grants focusing and a minor regeneration effect which also affects nearby heretics, at the cost of gaining the BLOODY_MESS trait while wearing it. Additionally, it can be squeezed to heal 50 points of brute/burn damage, injecting yourself with three to six (separately) units of Eldritch ~~Water~~ Essence and Unholy Water. Yes, this isn't good. - The Rusted Harvester is a heretic 'monster' summon. It's a normal Harvester, but instead of Area Conversion and Forcewall, it has Aggressive Spread and Rust Construction (Raise Wall). It can delimb, but only cultists, with a delay. It has an aura of decay, corroding the environment and withering enemies near it, but it's VERY fragile. Rusting cultist item dispensers will now cause them to turn into a Heretic object. Altars turn into small heretic runes, Archives turn into Codex Cicatrixi, Forges turn into Mawed Crucibles. Ideally, Heretics would be able to gain an amount of these new powers and use them to turn the tide against the cultists, amassing their power and almost forming a sect of their own in turn which sweeps over and converts the cult. ### Cultists When a Cultist sacrifices a heretic, two things will happen: - A new item will be available for creation at one of the dispensers. - The Heretic will be trapped inside a powerful Haunted Blade. `/obj/item/melee/cultblade/haunted` ` name = "haunted longsword"` ` desc = "An eerie sword with a blade that is less 'black' than it is 'absolute nothingness'. It glows with furious, restrained green energy."` This blade will be stronger across-the-board than a normal cult sword, and will even allow those who wield it to cast one heretic spell from their previous path. The only downside? The heretic can also cast one spell. It's up to the trapped spirit if it wants to help you, or be a nuisance. The unlocked items are: - The Cursed Blade, again. For cultists, it can be used to draw runes twice as fast as usual, and they can even right-click it to teleport to safety, just like a heretic! - The Crimson Focus, again. Cultists are twice as fast at carving spells into their body, and they gain a 5th spellslot as long as they wear the amulet. It still causes hemophilia and grants weak regeneration. - The Proteon Orb. This orb will create a gateway to Nar'sie's own realm, spawning one Proteon every 15 seconds, which ghosts can possess. The gateways cannot be placed close to one another. Originally, they were going to be able to create a Harvester Shell, but there were some concerns of it being too OP. The true Bastard sword has been fully deleted. The null rod conversion has been changed to a Bloody Halberd instead. I'm considering re-enabling Stun Hand on Heretics, with Mansus Grasp stats. ### Other All the items above can be used by both Heretics and Cultists, no matter how they were first created. Hell, even normal crew can use them! This is probably not the best idea a lot of the time, though. There are a lot of other changes in this PR. A loooooot. I will likely miss some in the changelog, but I'll try to be as thorough as possible. There's probably also some leftover garbo that I didn't find and clear out yet. ## Why It's Good For The Game Cult and Heretics, despite being mortally opposed, have very few interactions with eachother, especially now that the Blade's gone. The only thing of note is just the Heretic's unfair complete resistance to stun hand, which is only marginally better than the alternative. This PR will reintroduce their animosity, and give both sides a very, very good reason to fight eachother. The Cult will gain a sick sword that keeps the heretic in the game, and unlike with the original implementation, will recieve a cult-wide bonus in the form of a powerful, well deserved, and fun new item to summon. The Heretic will gain powerful trinkets and knowledge from the sacrifices, incentivizing them to become a terrifying cult-hunter. And if they do succeed in wiping out the cult, they will have quite the rewards to help with their ascension. The crew, while mostly unaffected, will have a damn good reason to not just Side with the heretic, out of fear of what they may become after the cult is stomped down. They can also use a few of the items here in an attempt to get one up on either side, as long as they manage to stay clear of the side-effects. Let the heretics eradicate the apostates. Let the cultists root out the heathens.  The haunted longsword creates an aura of darkness (disabled for the cultist for the image) Sprites... are not great. Hopefully someone comes by and improves them. code: Added get_inactive_hand() as an easy shortcut for carbons code: Wall walker element can now accept a trait for wall-checking fix: Fixed soulsword component being unable to invoke the post summon callback refactor: Turned Heretic rust turf healing into an element, given to Rust Walkers and Rusted Harvesters refactor: Converted Limb Amputation from an element to a component Blade and Sword sprites by meyhaza!!! I did the inhands though. Cuz im cool |
||
|
|
6a7e6ad3b5 |
Prettified storage UI (#84160)
## About The Pull Request This PR rewrites some storage UI code to make it compose itself from multiple elements (corners and row connectors) and allow it to be affected by player's preferred UI theme. Also resprites it and adds variations for all themes. Midnight (Default UI theme, the example doesn't show it very well but the cells are rather transparent)  Some examples of other themes. (Shows transparency much better)   ## Why It's Good For The Game Storage UI is ancient and doesn't look very good, nor fit the modern UI in general. ## Changelog 🆑 code: Rewrote a portion of storage UI code to allow it to be influenced by UI style. image: Prettified storage UI and made it affected by UI theme. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
ff836e10be |
First Genetics Content in 5 Years (Adds new positive mutations!) (#83652)
## About The Pull Request Sister PR to #83439, that needs to be merged before this. Adds a plethora of new positive mutations to the game! Mutations now have a variable that directly adds and removes traits instead of manually doing so for idk Tripled cryobeam range. Made the mushroom hallucinogen's code more readable. - Adrenaline Rush Trigger your body's adrenaline response, granting you 10 * P units of pump-up, synaptizine, and determination. After 25 seconds, you crash, recieving 7 * S units of tiring and dizzying solution. Can be Energized, Powered, and Synchronized. - Mending Touch Transfer injuries from the target to yourself! Heal 35 * P damage, recieving up to 35 * S damage in turn. Transfers moderate wounds, fire stacks, and attempts to parallel limb-to-limb damage. Has bonuses for pacifist players. Can be Energized, Powered, and Synchronized. - Elastic Arms Your arms become floppy and you can interact with things as if you were adjacent to them from one tile further! Does not work through walls or dense objects, and you become unable to lift huge items, pull large corpses, and you get chunky fingers. Split temperature adaptation into three: - Cold Adaptation Gain cold immunity, gain ice slip immunity! - Heat Adaptation Gain heat and ash storm immunity - Thermal Adaptation Resist both cold and heat, but no extra fancies. The sprite is green now! Pressure Adapt has a purple sprite. You can mix the cold mutations with Fiery Sweat to make these new ones: - Cindikinesis Instead of summoning snow, you can now summon... ash. Wow. Very cool. - Pyrokinesis You can fire fire now! Fires beams of heat that, unlike the temperature gun, actually ignite on hit. Higher instability cost than its sister mutation. The changes have been themed primarily around classic superhero gimmicks. Genetics feels like a natural spawning point for superheroes, and its mutations show this via the good ol' 'radiation made me fire eye lasers' hero backstory. Adding more ways to be a superhero is fun. Also, added two new speech mutations: - Trichromatic Larynx Every word you say is now either red, green, or blue! - Heckacious Larynx (Trichromatic Larynx x Wacky) You sound, well. Absolutely ridiculous. Spectacularly silly. Profoundly wacky. Don't give it to the clown. Unlocked the Elvis mutation as well. ## Why It's Good For The Game > Adds a plethora of new positive mutations to the game! Genetics is in desperate need of new content, all it's had for years is a slow gutting and removal of the few things it does have. Hulk is, being real, stupid, dumb, stagnated, and overpowered, but it's been begrudgingly accepted because genetics is quite literally just, nothing without it. I'm here to add the somethings to genetics and add some more variety (and no i'm not touching hulk) > Mutations now have a variable that directly adds and removes traits instead of manually doing so for every mutation. Less stupid > Tripled cryobeam range. Shit joke mutation is now long-range shit joke mutation! > Made the mushroom hallucinogen's code more readable. Slightly OOS because I was going to add color blind mutations but decided not to creep. This piece o shit code has been hurting my head for years and now that I've finally understood it I want to make sure others don't go through that pani. > - Adrenaline Rush A quick burst of some mild chemicals at the cost of eventual nausea, sounds like a fair trade to me! If you're already on the ground, this isn't going to do anything. > - Mending Touch Healing is something that's lacking from the mutations, and this puts a fun spin on it, making the caster a damage pincushion as they heal and absorb damage. > - Elastic Arms Classic superhero power, very funny, lots of silly and sandbox potential. Has innate drawbacks because 1. thematic and 2. it's pretty strong > Split temperature adaptation into three: They combine into the same thing it used to be, so don't freak out. This just adds some separation between the immune types, for things like themed superheroes. > - Cold Adaptation Perhaps mildly concerning, but I think this might be a fun spin on it? TODO: make hiking boots effect? > - Heat Adaptation Nothing to say. It's cool. > - Thermal Adaptation Nothing wrong with this mutation so it stays in > You can mix the cold mutations with Fiery Sweat to make these new ones: How can we have frozone and not, uh human torch or something. why are there no heavy hitter fire superheroes in marvel or dc??? > - Cindikinesis Can't really summon an equivalent to snow that's actually useful, so here's this instead. Clown might like it, or maybe the chemist. > - Pyrokinesis The ignition effect is fairly weak and mostly a deterrent. I think this is the most dangerous ranged mutation in the game, which is kinda sad. > - Trichromatic Larynx Colors are fun! We have speech mutations that change words but none that change their color. Though, to be fair, this was mostly added for the mutation below's combination. > - Heckacious Larynx (Trichromatic Larynx x Wacky) I felt that Wacky wasn't nearly wacky enough. It just made your speech comic sans. That's great and all, but. It's not much? This will be a truly clownly mutation, the Genetics equivalent of a HONK mech. I made it a combination mutation specifically to restrain its power level. > Unlocked the Elvis mutation as well. Was there a reason to lock this? ## Changelog 🆑 add: Added tons of new mutations to Genetics, alongside some recipes! add: Thermal Adaptation has been made a combination mutation from the stronger but narrower Cold and Heat adaptations. balance: Cryobeams have 9 tile range, and fiery sweat doesn't cause spread on contact. image: Added some neat new sprites for the new mutations, and added a greyscale version of the magic hand sprites. code: Infinitesmally improved mutation code. /🆑 |
||
|
|
c2fb07bc7b |
[NO GBP] Actions buttons can be dragged anywhere again (#84332)
## About The Pull Request - Fixes #84244 Shit happens ## Changelog 🆑 fix: actions buttons can be dragged anywhere again /🆑 |
||
|
|
9c9a5d28ff |
Some alt & ctrl click improvements (#84203)
## About The Pull Request
Improved code quality of both so they resemble each other. Some of the
new specs are as follows
1. Moved` COMSIG_CLICK_ALT` & `COMSIG_CLICK_ALT_SECONDARY` up i.e.
before `can_perform_action()` making them pure hooks not bound by any
action checks giving components full control over them
2. Removed range check(`CAN_I_SEE`) & view check(`is_blind()`) out of
the base alt click proc. They now only apply to living mobs and don't
apply to ghosts(ghosts don't get blind & see everything) & revenants
(the range check still applies for revenants though).
This was actually a bug because these 2 checks were only meant to see if
the loot panel could be opened (as stated in
https://github.com/tgstation/tgstation/pull/83736#discussion_r1628097941)
but because they are at the top of the proc they also apply to all alt
click actions which is not intended. Also, by moving these checks down
to mob subtype levels some of the snowflake checks like this
|
||
|
|
a85aabc97a |
Fixes non-sensical attack messages for certain mobs (#84195)
## About The Pull Request  There's a really long standing tradition in the code (at least 13 years old) that every mob should, at a base, be attacked in the chest. However, this can cause some strangeness for mobs that don't have chests (bots). Basically, what we do is we override this message so that bots don't get hit in the chest, because this proc will always require a zone input (and default input is the chest (and disentangling that will take more time that what I can afford)) so let's just hide the message to the user. this is also a nice thing to just have in general because a hook into the strike zone portion of the item attack message can have some pretty nice effects (e.g. what if you want to add on a descriptor of the head, or say eye for a creature that only has a eye for a head, or whatever). |
||
|
|
8cca0333d7 |
Improvements for can_perform_action() (#84006)
## About The Pull Request The proc `can_perform_action()` now - Accepts atoms & not just movables without runtiming. Fixes #83985 - It now uses `CanReach()` instead of `Adjacent()`. Allows you to - Check if the target object is placed on top & not hidden - Is the object inside another storage atom & such - Properly checks for recursive locs. Before we were passing the direct atom & not the type to `recursive_loc_check()` causing this proc to always return true & giving us false positives. Now this proc has been adjusted to accept both type paths & real atoms - Removes `can_perform_turf_action()` since its now obsolete ## Changelog 🆑 fix: no more runtimes when dragging turfs onto other stuff code: most actions now properly check for recursive locs & better adjacency /🆑 |