mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-20 11:40:07 +01:00
docker-build
41
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
a2c7c8e57b |
Heretic Antagonist Full Overhaul. (#92119)
## About The Pull Request Heretic has received a complete overhaul. This PR touches nearly every aspect of the antagonist. For readability's sake, not every change is going to be listed in this pull request. For the full list of changes please refer to the design doc: https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g. Code by Me, @Xander3359 and @Arturlang TGUI by @Arturlang Sprites by OrcaCora and GregorDM Writing bits by @necromanceranne ### Core changes - Cross-pathing has been removed. Main knowledge spells are now exclusive to their path (for the most part). - For every main knowledge unlocked (save for the robes and the blade upgrade), Heretics can choose one option from a draft of 3 random side knowledges (this is a free point). - Heretics can now purchase side knowledges from a new tab, the "Knowledge Shop". Side-knowledges have been divided by tier (Stealth, Defense, Summons, Combat and Main). Tiers are unlocked as you progress toward your main path. - Heretics now gain the grasp and mark upgrade immediately, but their main knowledge choices cost twice as much (except for the first spell, the robes and the blade upgrade). - Path specific robes have been introduced! They come with their own set of quirks. - Each Path has received a passive ability. This passive is upgraded when you first create your robes, and again when you complete the Ritual of Knowledge. - Paths have been rebalanced as a result of the removal of cross-path progression. Cosmic and Moon paths have received soft reworks. - Upon unlocking the path 2nd level or reaching a total of 8 points worth of knowledge, Heretics will lose the ability to blade break (and the limit on blades all together). - Ascension now automatically calls the shuttle with no possibility of a recall. - Late join Heretic has been removed. ### New UI <img width="750" height="635" alt="moon path ui" src="https://github.com/user-attachments/assets/184ef783-5c9c-48a1-a2f7-4807ca93e990" /> ### Knowledge shop <img width="787" height="669" alt="Knowledge shop" src="https://github.com/user-attachments/assets/3dc89b84-8c70-4d47-b612-54396e3ea6e7" /> ### Quality of life //General balance changes - Heretics will now gain X-ray vision for a few seconds when nearby an eldritch essence (this effect has a cooldown). - Ritual of knowledge now requires 1 uncommon item instead of 2. You may now use a stunprod instead of a baton to complete the ritual. Beartraps have been removed from the list of possible reagents. - The maximum number of possible sacrifices required to ascend has been reduced from 6 to 5 while the minimum has been upped to 4. - Codex Cicatrix no longer requires a special pen to be made. ### Passive abilities - Heretics now start with a passive ability. You can find what it does on the path info tab after a path has been selected, and what they gain when upgraded. - Crafting your first set of Eldritch robes will bump your passive to level 2. - Unlocking the 2nd level will subsequently unlock your "Ritual Of Knowledge" - Completing the ritual of knowledge or ascending will net you the final level. ### Path Specific Robes - Armorer's Ritual is no longer a side knowledge. Each path will have their own unique version of the ritual. This is placed after the 2nd spell in the tree. - Robes can no longer be destroyed by fire and acid, grant t4 flash protection (Moth Heretics stay winning) and protection against basic syringes, to bring them on par with other antagonist's armor sets. - The recipe to craft the robes is now a set of armor/vest, a mask (any mask will do now, not just gas masks), plus the unique reagent required for the blades (Plasma for Cosmic, Trash For Rust, match for Ash and so on) - Wearing the robes as a non-heretic may yield some unfortunate side-effects. ### Moon Path Rework Moon path rework. Moon Heretics gain immunity to brain traumas and slowly regenerate brain health. Equipping the moon amulette channels its effects through the moon blade; making it unblockable and cause sanity damage instead of brute. Ring leader's Rise now summons an army of harmless clones that explode when attacked; the explosion briefly stuns non-heretics and cause sanity and brain damage to them. Moon blade can also now be used when pacified and Moon spells are no longer blocked by regular anti magic, only mind magic protection. **Cosmic Path Rework** Cosmic path has received the biggest batch of changes alongside Moon. The path has been dead last in ascension and pickrate (less than 5%) for almost 2 years. It did gain some popularity over the last few months, reaching the highest ascension rate in the game (12%) while mantaining a relatively low pickrate. Cosmic sits in a weird spot, where pretty much every knowledge surrounding the path is either mediocre or, in the case of the ascension, dysfunctional. Yet it has maintained a smidge of relevancy due to how quickly Cosmic heretics can capture and sacrifice targets thanks to Star Touch. As a result, the best course of action would be to rebalance the entirety of the kit; granting the heretic more tools to manipulate space and dictate the flow of a fight, while lessening their ability to end a confrontation by instantly sleeping their opponents. lastly The Star Gazer is now ghost controlled ; And they shoot lazers! <img width="636" height="451" alt="gazer gag 3" src="https://github.com/user-attachments/assets/601d6881-c042-4e42-8ce6-ac90cd27848b" /> ## Why It's Good For The Game ### Ok...but why do we want this? Again, if you want my full reasoning, please check my doc https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g. To keep it short and concise; Heretic is too complex and unintuitive for its own good. Too impenetrable for new players and too abusable for experienced players. This can be chalked up to a lot of poor design decisions. But ultimately, what I believe being the biggest contributor to the current status of Heretic is the ability to move into different paths, also known as "Cross-Pathing". ### Cross Pathing my beloathed. Cross-pathing, while cool in theory, overcomplicates the antagonist and overloads them with power. Players dealing with the heretic are incapable of working out what a given heretic can do. This also leads to late game heretics having 3 rows Worth of action buttons and virtually no weakness. Over the last year, I've often received the understandable but also kind of unfair accusations of making Heretic too powerful without a clear aim or purpose. My goal with the paths I've reworked over the last year (Rust,Void and Blade) wasn't necessarily to just make them stronger (although that was also part of the goal, as they were paths that were underperforming), but for them to have more interactions with the sandbox and to better live up to the fantasy presented to the player. If an harbringer of frost gets countered by a cup of coffee, we probably messed something up. Unfortunately, the current incarnation of Heretic doesn't really allow for surgical balance changes to specific paths. Every time a knowledge gets buffed, we make every path that can easily tap onto that knowledge stronger by default. It doesn't take a genius to understand why this system is ultimately unsustainable. ### Blade Breaking I feel that after a heretic has reached the near peak of their power, they no longer need the ability to instantly escape any encounter. Check my doc for my full reasoning. ## Less versatile, more specialized paths. By removing cross-pathing, we remove a huge maintainability burden from the antagonist. Paths can now be designed around clearer strengths and weaknesses. They become easier to balance and less of an headache to understand for everyone. It also means we can give paths some needed quality of life quirks without having to worry how such a change might have a knock-on effect for other paths. Ash heretics can finally let loose without dying by their own flames. Cosmic Heretic can go to space without having to carry a modsuit. Moon Heretic can use their abilities without fear of one random trauma ruining their day, and so on. ### What a horrible night to have a curse...., wait how do I curse people again? As of right now the heretic tree has quite a hefty amount of trinkets that pretty much never see use. Partly because the tree itself is a nightmare to navigate. And partly because why would anyone set up an elaborate plan or scheme when they can unleash 2 rows of spell in the span of bunch of seconds. Heretics mostly gravitate towards powers that push them towards greater, more potent combat strength. If it doesn't contribute to killing people quicker, it isn't worth doing for most. And given the opportunity cost associated for taking those powers, they will remain that way so long as there are better choices to be poached. The new draft system encourages Heretics to play more with the tools at their disposal. If you want to go for a specific combo from the side path options, you may now do so by tapping into the knowledge shop. Yes, the shop does include a few knowledges from the other paths. But these are limited to 1 per path, are very expensive and can only be unlocked very late into the shift. ## Drip Of the Mansus The iconic heretic robe is actually sequestered to a side path that is most easily access by only two paths at a time. Since heretic paths are being made to be much more specialized, the most obvious way in which this can be showcased is through an easily identifiable outfit. By using the robes, we can both telegraph WHAT heretic you are looking at, and just how much power they've accumulated and when it is reasonable to take the kid gloves off and treat them as a genuine threat. If a heretic is in their robes, that heretic is now a significantly more prominent danger to the station. It also serves as a useful means for gating some of the more powerful effects of a heretic's path behind the robes, AND enable options for disarming them of that power should they be captured without making it something endemic to their mob. A major problem with heretics is a lack of certainty as to how powerful they have become. A heretics robes is one of the milestones to help players dealing with heretics identify that. ### Will this be 100% fair and balanced? This is a massive overhaul to a pretty complex and bloated antagonist. I've done my best to show the changes to several maintainers and other members of the community for their feedback. But at some point we'll have to see how this behave in the environment to get a feel if something is over or undertuned. (that's my way of saying, yes this is likely gonna require a testmerge or two). What I will say is that I'm not trying to change the core identity of Heretic. Heretics should have the upperhand in single encounters early on, be able to joust a small group of players after they unlock their final spell, and end the round when they ascend. They're a progression antagonist. They should retain their payoff as well as pose a danger as they grow stronger. But if more players feel like they are more reliably able to play the antagonist in more varied and interesting ways, rather than the antagonist largely existing as a measuring stick for 'robustness' due to its elitist design philosophy, then the rework has been a success. There should be something for everyone in the antagonist, as is true for all of our antagonist roles. |
||
|
|
79ce96b7e2 |
Fixes dunking (#91769)
## About The Pull Request closes https://github.com/tgstation/tgstation/issues/91715 |
||
|
|
412115c9b9 |
Fixes bugs related to transferring items to turfs, splits doing that off from dropItemToGround(...) (#91326)
## About The Pull Request Closes #91131. The author currently has other priorities, and as I need it for something else I am finishing it myself with the author's blessing. Recently, we turned `transferItemToLoc(...)` into a proc intended to be for transfers to non-turfs, with it now playing an animation to reflect that. However, this had the effect of leaving us with `dropItemToGround(...)` for mob>turf transfers, which isn't _ideal_. It sends an 'item dropped' signal, it randomizes offsets, and using it to transfer to a non-`drop_location()` loc was implemented as an afterthought. So in this pr we create a new proc, `transfer_item_to_turf(...)`, that separates off the actual transferring, setting offsets, and animating into its own proc. Then `dropItemToGround(...)`, tables, racks, easels, closets, hoops, beds, conveyor belts, pin the tail corgi posters, some other stuff, and the `floor_placeable` element call such each with their own preferred arguments. While we could leave setting offsets out of it, because setting the offsets after calling the animation works just fine, having them be set before the animation felt like a more intuitive flow. ...While I would love to refactor the easel's incredibly questionable `attackby(...)`, that is outside of the scope of this pr. ## Why It's Good For The Game Fixes #91082. Less jank 👍 ## Changelog 🆑 fix: Placing an item on a table/turf via the alt-click menu actually centers it, again. fix: Certain items, like canvases or syringe guns, are no longer weirdly offset when placed on tables. fix: Placing items on racks, closets, crates, hoops, beds, conveyor belts, and pin the tail corgi posters is animated again, instead of instantly teleporting followed by the pickup animation. fix: Placing a canvas on an easels no longer applies a random offset as if dropped. fix: Tucking in someone else actually animates the bedsheet from you to them, instead of from them to them. qol: Placing a canvas on an easel is animated. /🆑 |
||
|
|
379e2a0ee0 |
Refactor: Moves throwing and giving items from /mob/living/carbon to /mob/living (#91049)
## About The Pull Request Given the existence of basic mobs with hand slots, it feels like throwing and giving items shouldn't be something exclusive to carbon mobs, so I've pulled things around to make this happen. The only basic mobs with hands at time of writing are gorillas and dextrous holoparasites, but the inability to throw things when you're a gorilla just doesn't seem right to me. Some more details about what I've done here: - Made the dextrous component optionally enable throwing for the mob it's added to. - Moved offer/give item functionality to /mob/living (I can't see any reason why only carbon mobs should have this option) - Moved throwing and give item hotkeys from carbon to "human" (where all the other /mob/living hotkeys go) and, as a result, removed carbon hotkeys (nothing is left in them). - Moved throwing code and item offering code to its own file because living.dm is 3000+ lines long and should probably be broken up some day (I'm not brave enough for that) - Cleaned up an unused global signal that hasn't been used since dogs got moved to basic mobs. - Other miscellaneous cleanup where I noticed it. - In terms of testing: Tested using gorillas (only checked the dextrous holoparasite to confirm the button and hotkeys worked). Things that were working: - Can throw items if the mob is set up to allow it. - Can give items as a gorilla to a human, as a human to a gorilla, and as a human to a human. - Can give a high five to a gorilla (and the gorilla can receive it). Gorillas can't give a high five back, though (they don't have the emote), this already ballooned in scope, someone else can make that happen. - There are an alarmingly high amount of niche emote-into-item-into-giving behaviours I suspect half the playerbase or more aren't even aware of (does anyone offer their hand to someone to get them up off of the ground?) and I don't know if I broke any of them with this, but the fact high fives work gives me some hope they're probably still fine. ## Why It's Good For The Game Lets gorillas and dextrous holoparasites throw things and give things, but most importantly sets up more framework for any future dextrous basic mobs to also be able to do this. There's no real reason to keep this functionality confined to carbon mobs when dextrous basic mobs are a thing. ## Changelog 🆑 add: Gorillas can now throw things and offer items to players. refactor: Moved throwing and offering item code to be based on living mobs, not just carbon mobs. /🆑 --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
678a7c4da2 |
Refactor basketball minigame to use lazyloading (#90149)
Basketball minigame is now lazyloaded. Several notable changes include: - Basketball spawns in lazyload z-levels instead of Centcomm. The basketball landmark has been removed from Centcomm map. - `soviet_bear.dmm` basketball map was incorrectly referenced as `soviet_bears` in the old maploader code causing it to break when it tried to load this map - All `Basketball` maps were moved to a new map folder called `minigames` which I plan on placing all minigame maps inside - Basketball mobs would runtime when qdel since they have still have clients inside them. The solution was to ghostize the mobs before this happens. This does not directly fix the lag or runtimes being caused by basketball. That is caused by the maploader code inserting walls into the atmos subsystem due to some really weird behavior that I explained in #89649 . I have a seperate fix I'm planning for that. |
||
|
|
d3d3a12540 |
The big fix for pixel_x and pixel_y use cases. (#90124)
## About The Pull Request 516 requires float layered overlays to be using pixel_w and pixel_z instead of pixel_x and pixel_y respectively, unless we want visual/layering errors. This makes sense, as w,z are for visual effects only. Sadly seems we were not entirely consistent in this, and many things seem to have been using x,y incorrectly. This hopefully fixes that, and thus also fixes layering issues. Complete 1:1 compatibility not guaranteed. I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming inside apply_overlays), and this is still included in the PR to flash out possible issues in a TM (Plus I will need someone to grep the runtimes for me after the TM period to make sure nothing was missed). After this is done I'll remove all these extra checks. Lints will probably be failing for a bit, got to wait for [this update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d) to them to make it into release. Or just unlint the lines, though that's probably gonna produce code debt ## Why It's Good For The Game Fixes this massive 516 mess, hopefully. closes #90281 ## Changelog 🆑 refactor: Changed many of our use cases for pixel_x and pixel_y correctly into pixel_w and pixel_z, fixing layering issues in the process. /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: SmArtKar <master.of.bagets@gmail.com> |
||
|
|
4dd6cdeb72 |
Refactors how item actions are handled (#89654)
## About The Pull Request This PR tackles our piss-poor item action handling. Currently in order to make an item only have actions when its equipped to a certain slot you need to override a proc, which I've changed by introducing an action_slots variable. I've also cleaned up a ton of action code, and most importantly moved a lot of Trigger effects on items to do_effect, which allows actions to not call ui_action_click or attack_self on an item without bypassing IsAvailible and comsigs that parent Trigger has. This resolves issues like jump boots being usable from your hands, HUDs being toggleable out of your pockets, etc. Also moved a few actions from relying on attack_self to individual handling on their side. This also stops welding masks/hardhats from showing their action while you hold them, this part of the change is just something I thought didn't make much sense - you can use their action by using them in-hand, and flickering on your action bar can be annoying when reshuffling your backpack. Closes #89653 ## Why It's Good For The Game Makes action handling significantly less ass, allows us to avoid code like this ```js /obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/halt)) halt() else adjust_visor(user) ``` |
||
|
|
a0e862d575 |
Base implementation of /datum/persistent_client (#89449)
## About The Pull Request Converts `/datum/player_details` into `/datum/persistent_client`. Persistent Clients persist across connections. The only time a mob's persistent client will change is if the ckey it's bound to logs into a different mob, or the mob is deleted (duh). Also adds PossessByPlayer() so that transfering mob control is cleaner and makes more immediate sense if you don't know byond-fu. ## Why It's Good For The Game Clients are an abstract representation of a connection that can be dropped at almost any moment so putting things that should be stable to access at any time onto an undying object is ideal. This allows for future expansions like abstracting away client.screen and managing everything cleanly. |
||
|
|
ffd97819c1 |
Pixel adjustments to mobs are now sourced / Refactors riding (#89320)
## About The Pull Request Fixes #85980 - Pixel adjustments are now sourced When tweaking a mob's pixel w, x, y, z, is is now done via `add_offsets` and must have a source string associated - Refactors riding Refactors how riding component selects the offsets to use. It's now all done via the getter rather than a weird mix of a var, a cache, and a getter. - Moves a bunch of animations to use `pixel_w` / `pixel_z` Largely to prevent conflicts with adjustments to a mob's pixel position, but also as many animations are not actual movements, but visual movements. Floating is one such example. ## Why It's Good For The Game It just works ## Changelog 🆑 Melbert fix: Fixed grab offsets not showing for anything but passive grab fix: Fix jank with mob offsets when riding things refactor: Refactored riding component, particularly how it selects layer and offsets. Report any oddities refactor: Refactored pixel offsets of mobs. Report any oddities /🆑 |
||
|
|
25eb08420a |
Temporary bodies return players to minds without bodies (#89323)
## About The Pull Request There are a couple of cases where ghost roles that give the temporary body component prevent you from returning to the round when they really shouldn't. The particular cases are: - You entered a temporary body while you had no body, but could be recovered via means such as podcloning - You enter a temporary body, and while in that body, your original body is permanently removed while your mind could be recovered via means such as podcloning - Basketball This PR addresses those cases by allowing the temporary body component to operate with a null `old_body`, and allowing the temporary body component to be given to ghosts whose minds don't have bodies. ## Why It's Good For The Game Erroneous DNRs caused by code oversights are probably very undesirable to the playerbase. ## Changelog 🆑 fix: Joining a minigame or taking certain ghost roles, while you have a mind without a body, will no longer DNR you, just in case you can be resurrected by some means. fix: If your old body is permanently destroyed while you are playing a minigame or as certain ghost roles, you will still return to your character's original mind, just in case you can be resurrected by some means. fix: The basketball minigame now gives its players and referee temporary bodies. /🆑 |
||
|
|
91719a400a |
516 Compile Compatibility (#88611)
Renames all uses of caller, as they (currently) shadow the new byond var and will in future error Ups our "wan if compiled after" experiement compile version to 516 Adds an alternate 516 unit test |
||
|
|
6da4462e14 |
Fix gravity for areas in space near station (#88176)
## About The Pull Request - Fixes #76827 This removes gravity from the following areas: - Solars - Nearstation - Space - Ordnance bomb testing ##### Note - Asteroid areas (Tram) or planet areas (Ice) are not affected. <details> <summary>Examples of outside gravity turfs</summary>  </details> Now stepping on floor plating in those areas will result in mobs drifting. (like they do inside the station when gravity is offline) Stepping on or near catwalks, lattices, or walls stills controls your movement. Also refactored a little bit of the `has_gravity` code to use defines instead of `TRUE/FALSE`. ## Why It's Good For The Game Consistency. Mag boots are highly recommended when performing EVA. ## Changelog 🆑 fix: Fix gravity for areas in space near station (solars, nearspace, bomb testing, etc.) /🆑 |
||
|
|
9f7d6dea62 |
Outfits that put items in your hand now respect if the outfit is visual only (#87355)
## About The Pull Request On a downstream, we have an antagonist, that is a less competent wizards. This antagonist's preview outfit has a beer bottle in their hand, which has caused runtimes, as the bottle did not have any reagents instantiated, and it tried check its length for sloshing. After putting in a check for the `initial` argument of `on_equip`, I have noticed that the problem goes deeper: the various procs that handle putting something in your hand do not pass along if the items is put in your hand as a preview or not. This PR adds a new optional var to these procs, ensuring that unwanted behaviour during previews won't trigger. I also swapped `visualsOnly` to snake case, as it looked inconsistent with the rest of the code style. ## Why It's Good For The Game Making the argument that ensures avoiding side effects during previews work with all kinds of items is good. ## Changelog 🆑 fix: if an outfit puts a reagent container in the preview dummy's hand, it will not try to slosh code: outfits putting items in your hand will respect the visual_only argument /🆑 |
||
|
|
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 /🆑 |
||
|
|
240e397b95 |
Fixes xenos being able to pick up items that they shouldn't by most means, expands itempicky component functionality (#86714)
## About The Pull Request Xenos can apparently use shenanigans such as https://github.com/tgstation/tgstation/issues/86703 to put some items in their hand, and there are likely methods like this dotted around the codebase. However, the signal to put something in their hand is called consistently across any process that would cause them to pick up or otherwise have something to put in their hand, so instead I added /datum/component/itempicky to xenos. While I was in there, I expanded the functionality of itempicky; it can run a callback to determine a condition that needs to be met now. ## Why It's Good For The Game Fixes https://github.com/tgstation/tgstation/issues/86703 Expands a component's usefulness ## Changelog 🆑 Bisar fix: Xenomorph restrictions on items they can pick up have had their determining logic made more _robust_. code: The itempicky component (restricts what can be picked up via a whitelist) can now, optionally, have a callback fed to it to determine cases of bypassing that whitelist. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
+16 |
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> |
||
|
|
47be0bffc2 |
Ctrl click refactor (#83784)
## About The Pull Request Same idea as #82656 but for ctrl click & ctrl shift click cause why not - Does your signal & `can_perform_action()` checks using `interaction_flags_click` flags before delegating the event down to `ctrl_click()` proc. - The one new change now is that `ctrl_click()` proc is now blocking, meaning returning `CLICK_ACTION_SUCCESS` or `CLICK_ACTION_BLOCKING` will stop the object from getting grabbed/pulled. So remember to return these values if you want to stop the grab action or return `NONE` if you want to process the click but still want the object to get grabbed as well ## Changelog 🆑 refactor: Ctrl click & Ctrl shift click has been refactored. Please report bugs on GitHub /🆑 |
||
|
|
ff6b41aa07 |
Afterattack is dead, long live Afterattack (#83818)
## About The Pull Request - Afterattack is a very simple proc now: All it does is this, and all it's used for is for having a convenient place to put effects an item does after a successful attack (IE, the attack was not blocked)  - An overwhelming majority of afterattack implementations have been moved to `interact_with_atom` or the new `ranged_interact_with_atom` I have manually tested many of the refactored procs but there was 200+ so it's kinda hard ## Why It's Good For The Game Afterattack is one of the worst parts of the attack chain, as it simultaneously serves as a way of doing random interactions NOT AT ALL related to attacks (despite the name) while ALSO serving as the defacto way to do a ranged interaction with an item This means careless coders (most of them) may throw stuff in afterattack without realizing how wide reaching it is, which causes bugs. By making two well defined, separate procs for handing adjacent vs ranged interactions, it becomes WAY WAY WAY more easy to develop for. If you want to do something when you click on something else and you're adjacent, use `interact_with_atom` If you want to do something when you click on something else and you're not adjacent, use 'ranged_interact_with_atom` This does result in some instances of boilerplate as shown here:  But I think it's acceptable, feel free to oppose if you don't I'm sure we can think of another solution ~~Additionally it makes it easier to implement swing combat. That's a bonus I guess~~ ## Changelog 🆑 Melbert refactor: Over 200 item interactions have been refactored to use a newer, easier-to-use system. Report any oddities with using items on other objects you may see (such as surgery, reagent containers like cups and spray bottles, or construction devices), especially using something at range (such as guns or chisels) refactor: Item-On-Modsuit interactions have changed slightly. While on combat mode, you will attempt to "use" the item on the suit instead of inserting it into the suit's storage. This means being on combat mode while the suit's panel is open will block you from inserting items entirely via click (but other methods such as hotkey, clicking on the storage boxes, and mousedrop will still work). refactor: The detective's scanner will now be inserted into storage items if clicked normally, and will scan the storage item if on combat mode /🆑 |
||
|
|
1389351ef9 |
You can now move and talk through statues and mannequins (#81188)
## About The Pull Request I recently played a game where I rotated my skeleton model while rotating my own character at the same time and it being in sync gave me the realization on how cool it would be if the Coroner was able to simply control the skeleton body. I find skeleton displays very funny and I want to see more funny things happen with them, so I thought this would be a good place to start, with the benefits that it also works on mannequins and statues too so they aren't left out. Basically, while it is unanchored, if you have a statue/mannequin grabbed, it will change its direction as you do, and speak the same words you do. Your own messages can only be heard if the person is directly next to you, revealing that it was you talking through it all along. I was originally gonna add this to the simple rotation component but moved off when I decided to add talking through it, I left in the code improvements I made to the component though since it is one of the oldest components and hasn't been touched in a while. Video demonstration (before I added the person also talking, just ignore that missing) https://github.com/tgstation/tgstation/assets/53777086/27242fc3-9649-418d-95cb-b31619319e97 While fixing the Toilet bong's rotation stuff I noticed a lot of it wasn't up to proper code standards so I went over it and fixed issues I had with it. It now doesn't give text saying you found something nasty to species that still likes mice (like flypeople), and fixed its update appearance to match the codebase standard set by the introduction of ``update_appearance`` many years ago. ## Why It's Good For The Game It's a funny small idea I had and got inspired to add, it's a niche mechanic that I think fits the aesthetic I am going for with Coroner and also give a funny interaction with the human-like inanimate objects. ## Changelog 🆑 fix: Species that can eat mice don't get disgusted from seeing one in the toilet bong. add: Grabbing an unwrenched statue/mannequin/skeleton model will now move its direction as you move yours, and you can talk through it. /🆑 |
||
|
|
68677dc721 |
Disarm refactor, plus shoving people with shields (#80123)
## About The Pull Request I wanted to add the ability to shove people with shields by right-clicking your target, just like how it works barehanded. This also required a solid refactor of disarm code, effectively bringing down the core of it to `mob/living` from `mob/living/carbon` or `mob/living/carbon/human`. This also means you can shove simple mobs inside closets, bins and on tables. Xenos and borgs are pretty much immune to regular disarms, but using a shield will work (borgs and royal xenos are immune to the knockdown). The riot shield armor has been balanced. It now tanks melee attacks pretty well, but will break against bullets in just about 2 to 4 hits depending on the bullet damage. I've always found the lack of sturdiness of the riot shields for what they're supposed to be good for a bit detrimental. Because I've refactored an item flag into a trait, I've had to add a new MOD module that grants protection from shove knockdown and staggering; found pre-installed in the administrative MODsuit, but I've also added it to the black market to make it cooler. You can bash people with the strobe shield on combat mode. ## Why It's Good For The Game Currently, shields are simply items that take a held slot in return of some block chance without being anything special, save for the strobe shield's integrated flash I guess, but are also a botherance as most crumple under the duress of less than half a dozen attacks. Meanwhile swords and other weapons with blok chance just don't care. TL;DR, I want them a bit more remarkable, and flexible as a tool. Of course, this ended up in a larger refactor because the right-click / disarm code was inconsistent. ## Changelog 🆑 add: Shields (and pillows) can be used to shove people around the same way barehanded right-clicking does. Xenos and borgs can actually be moved this way. add: Added a new MODsuit module, the bulwark module, which prevents knockdown and staggering from shoving, and getting pushed away by thrown objects. Inbuilt for the safeguard MODsuit, but one might also it in the black market. refactor: Disarming has been refactored. You can now shove simple critters onto tables and into bins and closets balance: Shields now take their own armor values and the armor penetration of the attack they blocked when damaged. This means shields are a bit sturdier now. balance: Riot shields can tank a lot more damage against melee weapons, but less against bullets. qol: strobe shields can now be used to bash people while combat mode is on. /🆑 |
||
|
|
f34174414d |
Cleans up some extra args in Destroy() (#80642)
## About The Pull Request After https://github.com/tgstation/tgstation/pull/80628, these shouldn't be needed anymore right? ## Why It's Good For The Game Cleans up some vestigial code ## Changelog EDIT: Not player-facing. |
||
|
|
fd82421286 |
Fixes throwing hard del (#80551)
## About The Pull Request Fixes https://github.com/tgstation/tgstation/issues/80472 ## Why It's Good For The Game Less CI failures ## Changelog 🆑 fix: fixes a hard del with thrown items /🆑 |
||
|
|
f03084c1ca |
FOV is Dead (Long Live FOV) (#80062)
## About The Pull Request FOV as it is currently implemented is incompatible* with wallening. I'm doin wallening, so we gotta redo things here. The issue is the masking of mobs. Wallening relies on sidemap (layering based off physical position), which only works on things on the same plane (because planes are basically sheets we render down onto) So rather then masking mobs, let's reuse the masking idea from old fov, and use it to cut out a bit of the game render plane, and blur/over-saturate the bit that's masked out. My hope is this makes things visible in light, but not as much in darkness, alongside making more vivid shit more easily seen (just like real life) Here's some videos, what follows after is the commits I care about (since I had to rip a bunch of planes to nothing, so the files changed tab might be a bit of a mess) Oh also I had to remove the darkness pref since the darkness is doing a lot of the heavy lifting now. I'm sorry. Edit: NEW FOV SPRITES! Thanks dongle your aviator glasses will guide us to a better future. https://github.com/tgstation/tgstation/assets/58055496/afa9eeb8-8b7b-4364-b0c0-7ac8070b5609 https://github.com/tgstation/tgstation/assets/58055496/0eff040c-8bf1-47e4-a4f3-dac56fb2ccc8 ## Commits I Care About [Implements something like fov, but without the planes as layers hell](https://github.com/tgstation/tgstation/commit/a604c7b1c8d74cd27af4d806d85892c1f7e35ba8) Rather then masking out mobs standing behind us, we use a combo color matrix and blur filter to make the stuff covered by fov harder to see. We achive this by splitting the game plane into two, masking both by fov (one normally and one inversely), and then applying effects to one of the two. I want to make the fov fullscreens more gradient, but as an effect this is a good start [Removes WALL_PLANE_UPPER by adding a WALL_PLANE overlay to material walls (init cost comes here)](https://github.com/tgstation/tgstation/commit/25489337392f708cb337fbf05a2329eacdfc5346) @Mothblocks see this. comment in commit explains further but uh, we need to draw material walls to the light mask plane so things actually can be seen on them, but we can't do that and also have them be big, so they get an overlay. Sorry, slight init time bump, about 0.5 seconds. I can kill it with wallening. [Moves SEETHROUGH_PLANE above ABOVE_GAME_PLANE](https://github.com/tgstation/tgstation/commit/beec4c00e01d34a04fba7c2bb98a9b70d27ead82) I don't think it actually wants to draw here @Time-Green I think this was you so pinging for opinion [Resprites FOV masks to be clean (and more consistent)](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d) [f02ad13](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d) This is 100% donglesplonge's work, he's spent a week or so going back and forth with me sharpening these to a mirror shine, real chill ## Why It's Good For The Game Walls are closing in ## Changelog 🆑 LemonInTheDark, Donglesplonge image: Redoes fov "mask" sprites. They're clean, have a very pleasant dithering effect, and look real fuckin good! del: Changed FOV, it no longer hides mobs, instead it blurs the hidden area, and makes it a bit darker/oversaturated /🆑 ###### * It's technically possible if we start using render targets to create 2 sets of sources but that's insane and we aren't doing it |
||
|
|
c52d688352 |
Retools IS_SPINNING_1 into a trait (#80060)
## About The Pull Request This did NOT need to be on the `/atom` level `flags_1`- when on earth is an area going to spin? Anyways, this was really only ever used on the `/mob` sublevel in `spin()` code, but I think this would work far better as a trait for source-management than moving it to a mob flag or something. So, let's do that. ## Why It's Good For The Game Frees up a slot on `flags_1`, which is neat, as well as makes the framework for managing "things that make you spin" potentially better for future expansion. It also properly scopes something that only works for mobs right now to mobs (kinda), so it's a bit better that way too. ## Changelog Nothing that concerns players. |
||
|
|
bbe440b3d6 |
More standardization for ghost notifications (READY) (#79596)
## About The Pull Request I'm still not satisfied with how ghost notifications work. This gives every notification with a source (99% of all notifications, in other words) a link to jump/orbit. Currently, notifications with "play" interactions would only get the interact link, so jumping to the source was pretty annoying. It removes posting the entire message in the alert tooltip, as some got pretty lengthy and it didn't seem to fit. To replace this, they will always use headers After:    NOTIFY_JUMP and NOTIFY_ORBIT have been merged, since the only difference seems to be whether it's a turf. The result shaves off some redundant lines of code, since most-every usage of notify_ghosts uses NOTIFY_ORBIT. ## Why It's Good For The Game More standardization for the ghost notification system. Adds a few alert headers that never had them. All in all, makes it easier for creators to throw alerts at ghosts ## Changelog 🆑 qol: Nearly every ghost alert should now feature a "VIEW" button, even those with click interaction. del: Ghost alerts no longer show the entire message in the tooltip, instead have been replaced with titles. /🆑 |
||
|
|
3c7005a37c |
Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls (#79320)
## About The Pull Request This helps clean up my favorite helper proc in the whole codebase, `notify_ghosts()`. The notify_suiciders, ignore_mapload, and flashwindow args are GONE. They have been replaced with the notify_flags bitflag argument. This was intended to make deadchat announcements a bitflag argument too, but those got reverted right before I originally wanted to submit this PR. The on-screen popup now shows the notification body when you hover it with your mouse again. The format is now `[notify_ghosts message] -- [click action (orbit/jump/play)]` Every single `notify_ghosts()` call has been changed to multiline format and has been given trailing commas. Pretty! ## Why It's Good For The Game Cleans up a proc that is very popular and going through a lot of changes at the time. Allows for further flexibility when this proc inevitably gets tweaked or improved. 12 -> 10 args is an improvement, and it doesn't impact the helper's flexibility at all. ## Changelog 🆑 Rhials code: The notify_ghosts proc has been cleaned up. Please report any abnormal changes in deadchat notification behavior. qol: The on-screen deadchat popups now contain the notification blurb when hovered with your mouse again. /🆑 |
||
|
|
fb10121022 |
Icons folder cleaning wave two (#76788)
## About The Pull Request Further continous organizing and cleaning the Icons folder. There are still some minior nitpicks left to do, but I reached my daily sanity expenses limit again, and the faster these get in the less issues for both me and others later. Also cleans some mess I caused by my blindness last PR. ## Why It's Good For The Game Saner spriters = better sprites |
||
|
|
3a5648cc3a |
Basketball player mobs have a chance to be taller (#75907)
## About The Pull Request Putting the mostly unused mob height feature, also adds a new accepted value between tall and tallest mob height (the latter option made a further pixel taller). ## Why It's Good For The Game This will put the tall, taller, tallest mob height to good use. It's a pretty subtle change though.  Screenshot doesn't picture the new "tallest" mob height, which I modified after seeing there was still some space avaible within the tile. ## Changelog 🆑 qol: Basketball (the mini-game) player mobs have a chance to be taller than the usual spaceman. /🆑 |
||
|
|
6e5ae1cc24 |
Fixing a few minor maintenance hindrances. (#75594)
## About The Pull Request See the title and relative issue reports mentioned in the section below. ## Why It's Good For The Game Closes #75461, closes #75462, closes #75467. ## Changelog 🆑 fix: Capturing CTF control points no longer requires the active hand to be empty. /🆑 |
||
|
|
1ddaa3e38e | New basketball teams - Ash Gladiators and Beach Bums (#75361) | ||
|
|
f08dcefcf7 |
Add basketball mood events for shooting and dunking (#74700)
## About The Pull Request Playing basketball now gives a small mood boost depending on if you dunk or shoot. ## Why It's Good For The Game More mood events for actions gives stuff more depth. ## Changelog 🆑 qol: Add mood events for basketball shooting and dunking /🆑 |
||
|
|
ed06615988 |
Removes a redundant cut_overlays in basketball code (#74916)
## About The Pull Request It doesn't like, do anything except clear our emissive blockers, since we aren't directly adding overlays anywhere here |
||
|
|
065eb27f9b |
Cleanup 1 letter var names in martial arts files (#74723)
## About The Pull Request Cleans up var names `A` and `D` to be `attacker` and `defender`. The same for `I` to be `held_item`. ## Why It's Good For The Game Less illegible code is good. ## Changelog 🆑 code: Cleanup 1 letter var names in martial arts files /🆑 |
||
|
|
c0c76c3f05 |
[NO GBP] Fix minigames UI not removing inactive clients (#74391)
## About The Pull Request Fixes #74260 The UI for the basketball menu was not properly updating when clients would disconnect. This would allow someone to signup twice leading to silly situations as detailed in the issue report. This issue also affected the mafia minigame due to both UIs having similar code. The fix is simple, just check the signups when the tgui menu has interactions and also check to make sure the signups use a boolean instead of a client for the value part of the key/value list. Why? After a client would disconnect, the list would change and remove the client object since it no longer exists. The solution is to keep the ckey as a key, but use a boolean for the value. ## Why It's Good For The Game Less bugs, more stability. ## Changelog 🆑 fix: Fix basketball and mafia minigame UI not removing inactive clients /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
740d47f92c | Basketball Matchup - Ass Blast USA vs Soviet Bears (#74322) | ||
|
|
b3cce8cfa4 |
Fixes the basketball and thunderdome baseturf issue. (#74461)
## About The Pull Request Simply modifies the should_place_on_top value on these maps templates so that they overwrite their baseturfs rather that creating an evergrowing stack. I've also done the same for Mafia and CTF which should also not be creating stacked baseturfs. Fixes #69711 Should fix #74443 too since its the same issue. ## Why It's Good For The Game Bugfix good. ## Changelog 🆑 fix: Basketball and Thunderdome maps should not load with broken turfs are several resets of their maps. /🆑 |
||
|
|
ccef887efe |
Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW RATHER THAN AFTER THE FACT. ## About The Pull Request Hey there, This took a while to do, but here's the gist: Python file now regexes every file in `/code` except for those that have some valid reason to be tacking on more global defines. Some of those reasons are simply just that I don't have the time right now (doing what you see in this PR took a few hours) to refactor and parse what should belong and what should be thrown out. For the time being though, this PR will at least _halt_ people making the mistake of not `#undef`ing any files they `#define` "locally", or within the scope of a file. Most people forget to do this and this leads to a lot of mess later on due to how many variables can be unmanaged on the global level. I've made this mistake, you've made this mistake, it's a common thing. Let's automatically check for it so it can be fixed no-stress. Scenarios this PR corrects: * Forgetting to undef a define but undeffing others. * Not undeffing any defines in your file. * Earmarking a define as a "file local" define, but not defining it. * Having a define be a "file local" define, but having it be used elsewhere. * Having a "local" define not even be in the file that it only shows up in. * Having a completely unused define* (* I kept some of these because they seemed important... Others were junked.) ## Why It's Good For The Game If you wanna use it across multiple files, no reason to not make it a global define (maybe there's a few reasons but let's assume that this is the 95% case). Let me know if you don't like how I re-arranged some of the defines and how you'd rather see it be implemented, and I'd be happy to do that. This was mostly just "eh does it need it or not" sorta stuff. I used a pretty cool way to detect if we should use the standardized GitHub "error" output, you can see the results of that here https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792 ## Changelog Nothing that really concerns players. (I fixed up all this stuff using vscode, no regexes beyond what you see in the python script. sorry downstreams) |
||
|
|
73a083ca1e |
Minigame DLC - Intergalactic Basketball League (#72459)
## About The Pull Request New DLC bout to drop.  Lots of new things included: - New basketball minigame that can be played between 2-7 players - Crafting recipe for basketballs using leather sheets - Crafting recipe for basketball hoops using metal, rods, and durathread - New basketball sounds for the ball and hoops - New scorecard that can be reset using CtrlClick - Basketball hoops can be rotated using a wrench and AltClick - Dunking and shooting animations. ### New basketball mechanics that now utilize stamina: - Dunking costs large stamina and you must be directly adjacent to the hoop and click on it. - Shooting costs medium stamina and uses RMB. Shooting lets you aim the ball over peoples heads, meaning anyone obstructing your path will be bypassed. There is a half second delay during shooting where someone can bump or push to prevent the shot from succeeding. - Shooting from further away results in less accuracy. If you do not click directly on the hoop, there is also an accuracy penalty! - Passing costs no stamina and uses LMB. Trying to score into the hoop via passing results in a reduced chance. - Spinning costs medium stamina while holding the ball. It gives a reduced chance for the ball to be stolen but decreases accuracy for shooting. - Pushing a player using RMB will attempt to steal the ball and drain their stamina. - The chance to steal the ball is based on the stamina of both players and the direction they are facing. If the person with the ball is at low stamina, and the person stealing is at full stamina, they will have a higher chance. Likewise, if the person with the ball is face to face with the stealer, then there is a higher chance for the ball to be stolen. If the person has their back to the stealer, then it's a lower chance. - Shooting from more than 2 tiles away, results in 3 points. See below picture to know the distance.  ### Now to introduce the teams: <details> <summary>Nanotrasen Basketball Department</summary>  </details> <details> <summary>Greytide Worldwide</summary>  </details> <details> <summary>Lusty Xenomorphs</summary>  </details> <details> <summary>Space Surfers</summary>  </details> --- Big shoutout to the nukie round a few weeks ago where the nuke ops challenged the crew (and clown) to a basketball match on their rebuilt basketball shuttle. The nukies won, but it made me realize that the basketball mechanics were very raw and needed some polishing. #### TODO LIST - [x] Fix bug where ball only goes over peoples heads if they are 1 tile away - [x] Remove leftover code comments and procs - [x] Rebalance stamina values (maybe move this to different ball types) - [x] Fix basketball stadium template runtiming from wall smoothing during load - [x] Fix space surfer stadium having an air breach somewhere - [x] Add more sounds for when ball is passed, shot, or dunked - [x] Make it so that holding a ball while on the floor isn't possible (to avoid those meta cheese strats) - [x] Drop basketball lets mobs make sounds when spinning (need to detach signal?) - [x] Finish adding a simple lobby menu for minigame ## Why It's Good For The Game _If you can't slam with the best, then jam with the rest._ ## Changelog 🆑 add: Add crafting recipe for basketballs (leather sheets) and basketball hoops (metal, rods, and durathread) add: Add new basketball minigame for 2-7 players. There are 4 different courts and teams by default with more planned to be added later. add: New basketball mechanics that uses stamina. Shoot with RMB, pass with LMB, and dunk by clicking the hoop while adjacent. Spinning while holding the ball decreases the chance for someone to steal the ball, but it decreases your shooting accuracy. Shooting from 2 tiles away lets you score 3 points. qol: Basketballs now play a buzzer sound when someone scores. CtrlClick will reset the scorecard and AltClick with a wrench will rotate the hoop. qol: Dunking and shooting animations for basketball. soundadd: Added basketball bounce sound with credits attribution imageadd: Added basketball icon to minigames. Move baseball and dodgeball icons to toy/balls.dmi /🆑 |