mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-06 14:29:17 +00:00
01620b9c46bbcdbb5a4b6abb60db87ca35cee44b
983 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
2e4d70afe5 |
Updates href uses for 516 (#88699)
## About The Pull Request Was just scrolling through the Paradise github since they seem to have more work done for 516 to see if there's anything I can port over, found this and thought why not. Ports parts of https://github.com/ParadiseSS13/Paradise/pull/25105 Specifically, updaing all hrefs to use the internal ``byond://``, and adding it to grep. ## Why It's Good For The Game More work towards 516. ## Changelog Nothing player-facing. |
||
|
|
3a25ac7f94 |
Nav computer icons (#88169)
## About The Pull Request To add context when placing a custom shuttle location, added additional icons to the shuttle navigation computer view for a few important objects: * The shuttle computer * The shuttle navigation computer * Turrets * <strike>The firing trajectory of the Yamato cannon</strike> * External airlocks <details> <summary>Images</summary> Old:  New:  </details> ## Why It's Good For The Game It's much easier to place the syndicate shuttle / white ship in a convenient location when you know exactly where the turrets and external airlocks are going to be when you land. Showing the shuttle computers also helps to communicate the orientation of the ship to anyone who is not already familiar with the outline, since the computers are usually placed right at the front, where the pilot is sitting. ## Changelog 🆑 add: Shuttle navigation computers now show the location of airlocks, turrets, and the shuttle control consoles on the ship outline while placing a custom landing location. /🆑 |
||
|
|
88d15354e1 |
Pressure Tanks no longer runtime when shuttleRotated, Remedies constant CI fails (#88413)
## About The Pull Request Fixes #71092 ## Why It's Good For The Game Flaky tests bad, fixman good... ## Changelog 🆑 fix: Pubby's whiteship no longer breaks when it tries to dock /🆑 |
||
|
|
558e6528c1 |
Reorganizes and splits shuttle code (#88228)
## About The Pull Request refer to title No code changes were made here, i just copypasted code around The only real difference is that I removed a pretty useless define that depended on TESTING because it got in my way of splitting emergency.dm tbh i didnt want a 50k line refactor pr that nobody is going to review so im getting it out of the way in a separate PR ## Why It's Good For The Game Shuttle code is literally all over the place please help me oh gosh ## Changelog Nothing player facing or developer facing (at least I really hope so) |
||
|
|
f5a712b054 | Labor shuttle no longer takes off with more than one prisoner inside (#88083) | ||
|
|
d8450b4933 |
Camera eyes have been lightly refactored (among other things...) (#87805)
## About The Pull Request * A generic /mob/eye/camera type has been made, containing everything needed to interface with a cameranet * /mob/eye/ai_eye has been refactored into a generic /mob/eye/camera instance * Advanced cameras no longer inherit from AI eyes, splitting off behaviour * Camera code has been somewhat cleaned up * Probably some more stuff I'm forgetting right now ## Big man Southport:  ## Changelog 🆑 code: made /proc/getviewsize() pure refactor: mob/eye/ai_eye has been restructured, now inheriting from a generic mob/eye/camera type refactor: advanced cameras and their subtypes are now mob/eye/camera/remote subtypes code: the cameranet no longer expects the user to be an AI eye code: remote camera eyes have had their initialization streamlined code: remote cameras handle assigning and unassigning users by themselves now code: remote cameras now use weakrefs instead of hard referencing owners and origins code: also the sentient disease is_define was removed (we don't have those anymore) fix: AI eyes no longer assign real names to themselves, fixing their orbit name /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
b67a0901f2 |
Fix issues discovered via TypeMaker (#87596)
## About The Pull Request Fixes issues with var typing and proc arguments, discovered using OpenDream's WIP TypeMaker feature (using improvements I haven't PR'd upstream yet). ## Why It's Good For The Game Codebase maintenance. |
||
|
|
d5daa9c9b8 |
[NO GBP] Renames mob/camera to mob/eye and makes everything follow suit (#87684)
## Why It's Good For The Game Clarity and consistency regarding DM's systems. Internally, `eye` is used for anything that controls the client's view.  How `eye` is used in DM is consistent with how we use the term, so I figured this would add clarity. Being named mob/camera also makes it unclear exactly what it's doing. The name implies that it would function similar to how mob/camera/ai_eye does, but most of the time it's only used as... an eye. My ulterior reason for this PR is that I want to clean up mob/camera/ai_eye and it's subtypes after this. ## Changelog 🆑 server: mob/camera has been renamed to mob/eye, which may break downstreams /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
2391a63c9a |
Chef groceries more clearly say who they are for. (#87732)
Chef produces is 35% cheaper to order from the chef console ## Why It's Good For The Game If chef is forced to order from the cargo because botany isn't growing what they need they deserve a discount, also this is inline with mining and bitrunning discounts. ## Changelog :cl:oranges balance: Chef produce orders are cheaper /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
cbe1897ec0 |
Shuttle docker console camera eyes now refresh if the offset/range is VV'd. (#87620)
## About The Pull Request If you VV the `x_offset`, `y_offset`, `view_range`, or `see_hidden` vars of a `/obj/machinery/computer/camera_advanced/shuttle_docker`, it will destroy the current eyeobj - if someone is currently viewing said shuttle console, it'll somewhat seemlessly "refresh" with the new range and offset for them. ## Why It's Good For The Game Makes it easier for mappers to get the correct offset and range for shuttle docker consoles. ## Changelog Not really any player-facing changes, this is meant to make it easier to figure out a good offset/view range when designing new shuttles. |
||
|
|
692540a7b9 |
Singularity_pull() standartize (#87304)
## About The Pull Request Previous attempt - https://github.com/tgstation/tgstation/pull/87227 `/atom/proc/singularity_pull(obj/singularity/singularity, current_size)` has first arg typed, but other procs were just referencing it as a un-typed variable. Since args are not standartized AND `atom/proc/singularity_pull(obj/singularity/singularity, current_size)` is out-dated, since it can be called by things that has `/datum/component/singularity` - not just by `obj/singularity/singularity` - This PR just adds args to every `proc/singularity_pull()` as follows: `proc/singularity_pull(atom/singularity, current_size)` ## Why It's Good For The Game Standartization ## Changelog No changelog needed |
||
|
|
f106b8f65b |
Fix automatic map votes requiring manual map voting config (#87164)
## About The Pull Request flags the automatic, end of round map votes as `forced`, as they were previously. ## Why It's Good For The Game democracy is mandatory in this household ## Changelog not player facing |
||
|
|
9c98096d50 |
Add No Escape Final Traitor Objective (aka Singularity Shuttle Event) (#86796)
## About The Pull Request This is a remake of: - #77188 - #86655 Both were DNM'd due to a lack of difficulty requirements for spawning a singularity as a shuttle event. --- **No Escape - Final Traitor Objective:** - Spawns a special singularity beacon, syndicate inducer, and wrench. - The beacon must be powered with an inducer and planted on the shuttle to work. - The beacon slowly increases the chance of a massive STAGE SIX (11x11) singularity to appear (1% every 8 seconds) - The beacon can be turned on at any time, but will only increase the chance while on the shuttle and if it is in transit - After 5 seconds the crew gets an announcement that a singularity is approaching and has an extra minute of transit time due to time dilation - If the beacon is turned off or destroyed it decreases the probability by the same rate. (-1% every 8 seconds) - If the beacon is spaced while active it decreases the probability by x2 rate. (-2% every 8 seconds) - If the singularity is spawned while the beacon is disabled or spaced, there is a chance for it to not directly hit the shuttle (but since it's so big it will likely brush against the side) To prevent the singularity from instantly appearing and to give the crew a chance to react, it starts with a negative probability that takes 15 seconds to reach 0%. Deactivating, destroying, or spacing the beacon will slowly reverse the chance but it's not an instant guarantee. So the longer you wait to act, the worse your chances are! I cleaned up quite a bit of the singularity code while I was working on this. CC @Time-Green @MrMelbert ## Why It's Good For The Game There have been several attempts to add a singularity shuttle event that could be triggered but it was deemed too chaotic or the requirements too easy so they were restricted to admin-only events. Making it a final traitor objective, sets a high requirement that must be achieved before activating it as a doomsday event. It also gives the crew a chance to intervene and stop the event before disaster strikes. It's similar to a syndicate bomb ticking down while on the shuttle that serves to be climatic. ## Changelog 🆑 add: Add no escape final traitor objective that spawns a stage six (11x11) singularity shuttle event. /🆑 |
||
|
|
14fe18127d |
Fix exception bad arg name 'initiator_name' for shuttle map rotation (#87038)
## About The Pull Request Fixes an exception that occurred during the map vote on the shuttle escape. Namely, the argument used is `initiator_name` when it should be `vote_initiator_name`. ## Why It's Good For The Game Fixes exception. ## Changelog 🆑 fix: fixes exception during shuttle map rotation vote /🆑 |
||
|
|
18188e0081 |
Enchanced docking behaviour for airlock_pump (#86944)
## About The Pull Request Now after docking pump measure pressure on docked airlock, if it's in safe range both airlock sides will open for easy boarding process, instead just switching them like access airlocks If docked entity pressure is lower then internal, then airlock will cycle only to external pressure, not to vacuum. Also if opening airlocks, eash door also measures external pressure, to safe the day from bad pilot, when half of doors docked and other half still looking into space. With new qol features pump now automatically detects docking\undocking to minimize vacuuming and extra headbumps. Described behaviours tested, and work even for airlocks installed on shuttles, evac included, but night coding is messy, so a review will be nice. ## Why It's Good For The Game If engis decide to build custom departure this feature should prevent crew from screaming "Malf AI" and speed up boarding\unboarding process (May be after this people will start to love those pumps) ## Changelog 🆑 qol: Airlock_pump now dock with shuttles in more pleasant way /🆑 |
||
|
|
11e2f796e1 |
fixes wabbajack statue (#87002)
## About The Pull Request closes https://github.com/tgstation/tgstation/issues/86987 ## Changelog 🆑 grungussuss fix: fixed wabbajack statue not activating /🆑 |
||
|
|
68be76e817 |
Journeying Hitchhikers Shuttle Events + Bugfixes (#86655)
## About The Pull Request Adds the following new general shuttle events:_ **Hitchhiker** - 1% chance - A single assistant in an EVA suit and some PBJs in a suitcase **Assistant Wave** - 0.1% chance - Spawns 10 assistants with internals - For clarity, they don't get sent to the shuttle, but get launched at it from space. It's a scuffle of 10 assistants trying to get in without being spaced or succumbing to the cold/pressure **Intern Wave** - Admin only - Unarmed and armed version - Spawns centcom interns, with a little announcement to warn they're coming I've also fixed projectiles bugging out and admin forced shuttle events not activating if they were added after the shuttle launched <details> <summary>Admin only events added</summary> **Nukie** Spawns a single nukie, armed with a shotgun, pistol and edagger. Basically the deathmatch nukie loadout, you dont want to fight this **Meaty ores** Meaty-ores meteors. Have a 4% chance to hit the shuttle, posing a potential hazard **3 player controlled fire-sharks** 3 fire sharks controlled by players. Not much to talk about here **Fireball Wave** Shoots a wave of fireballs at the shuttle. I think it's cool but apparently shuttle walls and windows deflect fireballs so it's kind of moot unless you're outside :/ </details> ## Why It's Good For The Game The assistant and hitchhiker events are some flavoring that I thought up a while ago. The Hitchhiker is just intentionally a flavor addition, but the assistant wave and intern wave can be used by admins to repopulate or retake the emergency shuttle as well. ## Changelog 🆑 add: Adds an assistant and hitchiker shuttle event, replenishing the crew mid flight! admin: Adds two intern wave shuttle events code: You can now supply shuttle events with outfits! code: You can now shoot projectiles with the shuttle events! fix: Fixes projectiles bugging out when fired in shuttle transit space fix: Fixes admin forced shuttle events not activating when added mid transit /🆑 |
||
|
|
0ef5c3d049 |
Persistent Map Vote Tallies (#86788)
## About The Pull Request Changes map votes to be based on a persistent tally count. Tallies for maps are cached between rounds and are added to by map votes. When a map is chosen, and it wasn't the only valid one, the tallies for said chosen map will be reset. Refactors map vote handling and moves it from SSmapping to SSmap_vote. Rock the Vote has been removed as a result of this refactor. ## Why It's Good For The Game Makes it more likely that all maps will be played over the course of a server instead of always being truly random. Removes some clutter off of SSmapping. 🆑 refactor: Map Votes are now carried over between rounds. When a map vote is actually a contest, the winning map will have its votes reset. /🆑 |
||
|
|
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> |
||
|
|
8d0ca9d299 |
Adjusts offset values for Nukie Infiltrator shuttle's nav console so it's actually centered (#86922)
## About The Pull Request The Infiltrator, in a vacuum of its map file, is facing _NORTH_, the docking port thinks that the shuttle is facing _NORTH_, and the docking port itself is pointed towards _EAST_ (`port_direction = 4`). In times past, this was good and well, the navigation console would properly center the shuttle preview as its offset values dictated. Then the nukie base got a rework. That made it so the shuttle is docked facing _SOUTH_, and since that moves the entire shuttle around, the docking port is now actually facing _WEST_, while still thinking the shuttle is facing _NORTH_, which in turn fucks up `CreateEye()` for the nav console, and the preview is spawned completely off-center. This sucks, this blows, this is awful, please scream at a coder, etc etc. So here's the thing. The ideal solution here is probably actually flipping the shuttle's map file so it's facing _SOUTH_, then adjusting the docking port's vars to account for that and probably adjusting something else in the viscinity. What's done in the first commit here is instead a lazy removal of the offsets' `-` plus a comment. Go me. Anyway, I want some input on those solutions, so here's the PR. ## Why It's Good For The Game Actually centered nukie infiltrator shuttle preview, for once. Wow, that didn't take long at all. Surprisingly no issue opened for this one, but that's more likely because the previews were missing for [a long-ass while](https://github.com/tgstation/tgstation/issues/62203). Eh, if I find one, I'll close one. ## Changelog 🆑 fix: A joint effort of Gorlex Marauders and MI13 tech support teams has finally managed to center the Syndicate Infiltrator shuttle's preview on the navigation console. Nuclear Ops teams sector-wide, rejoice! /🆑 |
||
|
|
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 /🆑 |
||
|
|
ddfb7c3261 |
Emergency shuttle console no longer reopens its UI on its own (#86822)
## About The Pull Request Closes #52590 ## Changelog 🆑 fix: Emergency shuttle console no longer reopens its UI on its own /🆑 |
||
|
|
5409570e01 |
Upgrades GODMODE from a flag to a trait. (#86596)
## About The Pull Request GODMODE has a lot of sources that toggle it. From admin-stuff to status effects, components, actions and mobs which are supposed to be invincible. It's better off as a trait than a flag, so we can manage these sources. ## Why It's Good For The Game See above. ## Changelog 🆑 admin: godmode is now a datum trait instead of a bitflag. This means the process for toggling it is a little different now. /🆑 |
||
|
|
8486f2f7e2 |
Storage / table interactions at the bottom of the interaction chain (#85512)
Because the wings were in fact made of wax ## About The Pull Request Storage goes to the very bottom of the interaction chain, hardcoded in on `/atom`. This is not preferred, obviously, but it ends up being a lot less snowflaking overall. Tables also go at the very bottom by extending `base_item_interaction`. Fixes #83742 Fixes #84434 Fixes #83982 Fixes #85516 Fixes #84990 Fixes #84890 Closes #85036 Closes #84025 (RMB places it on the table.) Closes #86616 Other changes: Refactored pod storage to be less jank. Patches some exploits around it. ## Why It's Good For The Game Should make a lot more interactions a lot more reliable... hopefully ## Changelog 🆑 Melbert refactor: Storage and Tables are now a lower priority action, meaning some uses of items on storage should work... better, now. Here's hoping at least, report any oddities. refactor: Note: For an overwhelming majority of items, **combat mode** will attempt to attack/insert into the target, while **non-combat-mode** will attempt to use on a target. This means screwdrivering or emagging a MODsuit must be done on non-combat-mode, as combat mode will simply put the screwdriver or emag into its storage. Same applies to tables, though when in doubt, RMB may help (for things which are also weapons, like mops). refactor: Refactored escape pod storage, now they actually properly show as unlocked on red alert and above. /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
1880003270 |
Reworks silicon/ai access checking & fixes some ui_act's (#84964)
## About The Pull Request Currently to check for Silicon access, we do: ``if is silicon or is admin ghost or has unlimited silicon privileges or has machine remote in hand`` What has unlimited silicon privileges? Bots, Drones, and admin ghosts. To check for AI access, it just checks for AI instead of silicon, and doesnt check for unlimited silicon privileges. This was kinda silly, so I thought I should make this a little easier to understand. Now all silicon/ai traits come from ``AI_ACCESS_TRAIT`` or ``SILICON_ACCESS_TRAIT``. I made a single exception to keep Admin ghost, since now instead of being a var on the client, we moved it to using the same trait but giving it to the client instead, but since we have to keep parity with previous functionality (admins can spawn in and not have this on, it only works while as a ghost), I kept previous checks as well. No more type checks, removes a silly var on the mob level and another on the client. Now while I was doing this, I found a lot of tgui's ``ui_act`` still uses ``usr`` and the wrong args, so I fixed those wherever I saw them, and used a mass replace for the args. Other changes: - machinery's ``ui_act`` from https://github.com/tgstation/tgstation/pull/81250 had ``isAI`` replaced with ``HAS_AI_ACCESS``, this has been reverted. Machine wands and admin ghosts no longer get kicked off things not on cameras. This was my fault, I overlooked this when adding Human AI. - Human AI's wand gives AI control as long as it's in your hand, you can swap to your offhand. I hope this doesn't end up going horribly, otherwise I'll revert this part. It should let human AIs not have their UI closed on them when swapping to eat food or use their door wand or whatnot. - Bots previously had special checks to scan reagents and be unobservant, I replaced this with giving them the trait. I also fixed an instance of unobservant not being used, so now statues don't affect the basic creature, whatever that is. ## Why It's Good For The Game This is an easier to understand way of handling silicon access and makes these mobs more consistent between eachother. Other than what I've mentioned above, this should have no impact on gameplay itself. ## Changelog 🆑 fix: Statues don't count as eyes to creatures. fix: Human AIs and Admin ghosts no longer get kicked off of machines that aren't on cameranets. /🆑 |
||
|
|
4c786c6e9d |
Splits the slowdown between the space helmet and the space suit (#85704)
## About The Pull Request As the title says. Instead of space suits providing all of the slowdown, it provides half of the slowdown and the other half is given to the space helmet as slowdown too. Closes #85702 ## Why It's Good For The Game By splitting the slowdown cost between the two components that make a traditional space suit, players will no longer gain pepperspray immunity with no downside. This also does provide the benefit of moving a bit faster if you aren't wearing a bulky space suit helmet and I think it does just add to the immersion a lot more if it were the two components of the space suit that slowed you down together rather than one or the other. ## Changelog 🆑 balance: Space suits no longer provide all of the slowdown when wearing space gear. Helmets now share the burden and you can now move faster when wearing only a space suit. Helmets now provide a bit of slowdown when worn alone as a result. /🆑 --------- Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> |
||
|
|
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> |
||
|
|
39035c5479 |
refactor pod spawn from code copypaste to use podspawn instead. Add convenient way to spawn multiple items of same type in pod (#85151)
## About The Pull Request Refactor pod spawn from code copypaste to use `podspawn` instead. Add convenient way to spawn multiple items of same type in pod ## Why It's Good For The Game Nothing player facing. Cleaner code. ## Changelog 🆑 refactor: replace some copypaste code for pod spawn to use `podspawn` proc instead code: modify `podspawn` proc to accept amount of item type to spawn in `spawn` specification /🆑 |
||
|
|
23403e13a7 |
Fixes shuttle events sometimes killing everyone (#85047)
FINALLY, MY ARCH NEMESIS DEFEATED!! Below is nebula with a docking port close to the top left, where it grabs the closest corner, the top left. The green area is the designated no_hit zone, where stuff spawns when they dont want to hit the shuttle  I lied. Because nebula's docking port is actually here  So the bounds proc snaps to the bottom right, and reports that back as the top left corner, erroneously assuming the entire inside of the shuttle is the place to spawn meteors  The fix I've added just double checks if the top left is the top left, and corrects itself to the correct corner Fixes #85030, #84994, #80227 🆑 fix: Shuttle events meteors now dont sometimes kill everyone /🆑 |
||
|
|
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 /🆑 |
||
|
|
7d1e9e1c0a |
Implements Cardinal Smoothing Support, Misc Smoothing Cleanup (#84402)
## About The Pull Request [Implements a new cardinal only bitmask smoothing mode]( |
||
|
|
9f394116e1 |
Fixes a bunch of small issues on various Whiteships (#84404)
## About The Pull Request A lot of White ships in the game had minor issues like the camera eye being way offset in the shuttle navigation console or the ship just flying backwards through space. I also caught a few active turfs on shuttle engine plating. <details> <summary>Full changes</summary> - Fixed camera offset issues on: whiteship_birdshot.dmm, whiteship_donut.dmm, whiteship_personalshuttle.dmm, whiteship_pubby.dmm, whiteship_obelisk.dmm, whiteship_tram.dmm, whiteship_kilo.dmm, whiteship_cere.dmm - Fixed whiteship_pubby.dmm, whiteship_kilo.dmm flying in the wrong direction - Removed use of /turf/closed/wall/mineral/titanium/overspace on whiteship_birdshot.dmm: These aren't used on any other whiteship so I assume it was used incorrectly here. - Fixed spelling of "aggressive" in shuttle manipulator for Birdshot's Whiteship. - Replaced platings that were active turfs with their airless variants on: whiteship_obelisk.dmm, whiteship_personalshuttle.dmm, whiteship_kilo.dmm - Added an autodoc comment to x_offset and y_offset for shuttles. - Fixed whiteship_birdshot.dmm not being able to spawn. </details> ## Why It's Good For The Game makes the shuttle navigation console easier to use if you can actually see the ship, also ships drifting sideways through hyperspace is funny but (probably) unintended. ## Changelog 🆑 fix: Fixed the camera offset for the navigation console on a handful of Whiteships. fix: Fixed the Pubby Whiteship drifting sideways through hyperspace when in flight. fix: Fixed the Kilo Whiteship flying backwards through hyperspace when in flight. fix: The Birdshot Whiteship should actually be able to spawn now. spellcheck: fixed spelling of "aggressive" in the shuttle manipulator description for the Birdshot Whiteship. /🆑 |
||
|
|
b6369a47b4 |
Mouse drag & drop refactored attack chain (#83690)
## About The Pull Request
Mouse drag & drop has been refactored into its own attack chain. The
flowchart below summarizes it

Brief summary of each proc is as follows
**1. `atom/MouseDrop()`**
- It is now non overridable. No subtype should ever touch this proc
because it performs 2 basic checks
a) Measures the time between mouse down & mouse release. If its less
than `LENIENCY_TIME`(0.1 seconds) then the operation is not considered a
drag but a simple click
b) Measures the distance squared between the drag start & end point. If
its less than `LENIENCY_DISTANCE`(16 pixels screen space) then the drag
is considered too small and is discarded
- These 2 sanity checks for drag & drop are applied across all
operations without fail
**2. `atom/base_mouse_drop_handler()`**
- This is where atoms handle mouse drag & drop inside the world. Ideally
it is non overridable in most cases because it also performs 2 checks
- Is the dragged object & the drop target adjacent to the player?.
Screen elements always return true for this case
- Additional checks can be enforced by `can_perform_action()` done only
on the dragged object. It uses the combined flags of
`interaction_flags_mouse_drop` for both the dragged object & drop target
to determine if the operation is feasible.
We do this only on the dragged object because if both the dragged object
& drop target are adjacent to the player then `can_perform_action()`
will return the same results when done on either object so it makes no
difference.
Checks can be bypassed via the `IGNORE_MOUSE_DROP_CHECKS` which is used
by huds & screen elements or in case you want to implement your own
unique checks
**3. `atom/mouse_drop_dragged()`**
- Called on the object that is being dragged, drop target passed here as
well, subtypes do their stuff here
- `COMSIG_MOUSEDROP_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
**4. `atom/mouse_drop_receive()`**
- Called on the drop target that is receiving the dragged object,
subtypes do their stuff here
- `COMSIG_MOUSEDROPPED_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
## Why It's Good For The Game
Implements basic sanity checks across all drag & drop operations. Allows
us to reduce code like this
|
||
|
|
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 /🆑 |
||
|
|
e81f9c6ef0 |
Replaces move_on_shuttle with a trait (#83550)
## About The Pull Request `move_on_shuttle` was a variable that existed on `/mob` despite only ever being used by cameras. This PR downgrades the variable to only exist on `/mob/camera` types, but have the only thing that variable do is add a trait that blocks movement on shuttles if not allowed. This allows us to check the variable without casting to camera, which is what some code was un-necessarily doing. This also retainst the ability to add the trait later on to different mobs who we may not want to be on shuttles that aren't `/mob/camera`. ## Why It's Good For The Game There's no point for this variable to live on `/mob` if all it can do is clog up the VV screen, especially if the current utilization for it is only cameras. Let's move it off `/mob` and turn it into a trait so it still has the similar utilization on a global level without typecasting - as well as make it actually work since needless typecasting was introducing a minor bug ## Changelog Irrelevant. --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
0cc5cfb178 |
Random Name Generation refactor, generate random names based on languages (for species without name lists, like Felinids and Podpeople) (#83021)
## About The Pull Request This PR moves random name generation for species onto their languages. What does this mean? - For species with a predefined name list, such as Lizards and Moths, nothing. - For species without predefined name lists, such as Felinids, their names will now be randomly generated from their language's syllables.   (In the prefs menu:)  Why? - Well, we actually had some dead code that did this. All I did was fix it up and re-enable it. - Generates some pretty believable in-universe names for various languages that are lacking name lists. Obviously defined lists would be preferred, but until they are added, at least. - Moves some stuff off of species, which is always nice. - Also hopefully makes it a tad easier to work with name generation. There's now a standard framework for getting a random name for a mob, and for getting a random name based on a species. Misc: - Adds a generic `species_prototype` global, uses it in a lot of places in prefs code. - Makes `GLOB.species_list` init via the global defines - Deletes Language SS - Alphabetizes some instances of admin tooling using the list of all species IDs - Docs language stuff - Deletes random_skin_tone, it does pretty much nothin ## Changelog 🆑 Melbert refactor: Random Name Generation has been refactored. Report any instances of people having weird (or "Unknown") names. qol: Felinids, Slimepeople, Podpeople, and some other species without defined namelists now automatically generate names based on their primary language(s). qol: More non-human names can be generated in codewords (and other misc. areas) than just lizard names. /🆑 |
||
|
|
b5fa92d691 |
Adds Medieval Pirates (and small assault_pod change) (#82392)
## About The Pull Request (short, slightly outdated video compilation of the pirates) https://youtu.be/j9BNFzcUSjc Adds the **MEDIEVAL WARMONGERS** pirate gang, these pirates are focused on causing chaos directly on the station with the use of melee weaponry and swarming tactics. they are not very smart when it comes to using technology, so they crash in the station in an attempt to dock. the pirates spawn with the NOGUN trait as they have never used guns before but have access to dashing and the unbreakable component(small heal burst upon reaching crit). Warlord spawns with a better version of hulk(isnt removed upon crit and can still do stuff while critted) and gigantism mutation by default because ~~Chad Maximus~~ the other pirates require someone to run to when stuff like flashbangs, batons or lasers are present. The warlord spawns with a boarding axe which is a better axe that is good at destroying things and a meat hook. **there's a total of 5 pirates.** the pirate shuttle has: - thermite barrel and 3 large beakers - single weak claymore - 3 extra military spears - 3 kite shields - 3 heavy bolas - 4 regular bolas - a stack of wood - 2 stacks of mourning poultice (15 uses each) - one burn medkit **shuttle was made by striders18, big thanks to him**  things added: - the new pirate gang - a gamberson jumpsuit - crude armor (good melee and wound protection but lacks on the rest) - warlord armor (extreme protection at the cost of slowdown) - a shortsword(bootleg claymore with 30 block chance and goes on belt instead of back) - military spear (better at throwing, better wounding, deals blunt wounds instead of sharp) - axe with better damage and demolition mod for the warlord - a var to specify the name of the landing zone destination for the assaultpod - an assault pod targeting device item for the medieval shuttle - a thermite barrel - kite shields - new hulk variant that doesnt go away when crit and has tenacity ## Why It's Good For The Game I always liked the chaotic nature of the russian bounty hunters that would come from their extra numbers and lack of tools. i thought something of a similar idea on pirates would be good, a very direct and scary militia rushing in with sword and faith would create some awesome scenarios ## Changelog 🆑 add: New heavy weight pirates, medieval warmongers add: Adds military spear, shortsword, boarding axe, kite shields add: Adds warlord and crude armor add: Adds medieval shuttle (made by striders18) /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
ebafdfa5a5 | New docking port sprites (#82729) | ||
|
|
8e3f635b98 |
Alt click refactor (#82656)
## About The Pull Request Rewrites how alt click works. Based heavily on #82625. What a cool concept, it flows nicely with #82533. Fixes #81242 (tm bugs fixed) Fixes #82668 <details><summary>More info for devs</summary> Handy regex used for alt click s&r: `AltClick\((.*).*\)(\n\t.*\.\.\(\))?` `click_alt($1)` (yes I am aware this only copies the first arg. there are no other args!) ### Obj reskins No reason for obj reskin to check on every single alt click for every object. It applies to only a few items. - Moved to obj/item - Made into signal - Added screentips ### Ventcrawling Every single atmospherics machine checked for ventcrawling capability on alt click despite only 3 objects needing that functionality. This has been moved down to those individual items. </details> ## Why It's Good For The Game For players: - Alt clicking should work more logically, not causing double actions like eject disk and open item window - Added context menus for reskinnable items - Removed adjacency restriction on loot panel For devs: - Makes alt click interactions easier to work with, no more click chain nonsense and redundant guard clauses. - OOP hell reduced - Pascal Case reduced - Glorious snake case ## Changelog 🆑 add: The lootpanel now works at range. add: Screentips for reskinnable items. fix: Alt click interactions have been refactored, which may lead to unintentional changes to gameplay. Report any issues, please. /🆑 |
||
|
|
c514facd5f |
Removes redundant update_parallax_contents calls (#82644)
## About The Pull Request Off shuttle move doesn't need to happen because shuttles use abstract move which calls it anyway Similar story for the ghost stuff, this was actually causing pretty common double calls so we may actually get somethin out of this Oh and something in air which is past me knifing me in the back |
||
|
|
227cdd2c7c |
[NO GBP] Patches & renaming for NO_DECONSTRUCTION flag (#82547)
## About The Pull Request 1. Renames `NO_DECONSTRUCTION` -> `NO_DEBRIS_AFTER_DECONSTRUCTION`. As the name suggests when the object is deconstructed it won't drop any items/debris. After my last refactor for this flag it now serves a new purpose so its name has been changed to match that 2. Fixes objects that are now using `NO_DECONSTRUCTION` incorrectly. Some of these changes include - Removing the flag in objects where there are no means to deconstruct them (e.g. jukebox, hydroponics soil, flora etc) - Replacing the flags old purpose by overriding its tool procs so that it regains its old behaviour(e.g. You once again cannot deconstruct ctf reinforced tables, survival pods, indestructible windows etc) ## Changelog 🆑 code: renamed `NO_DECONSTRUCTION` to `NO_DEBRIS_AFTER_DECONSTRUCTION` so its name matches its intended purpose fix: fixes some items that incorrectly used `NO_DECONSTRUCTION` prior to its refactor, meaning makes some objects non deconstructable again /🆑 |
||
|
|
9723b4b317 |
Replaces even more deciseconds with SECONDS (#82438)
## About The Pull Request
Using these search regexes:
Ending in 0:
`addtimer\((.*),\s?(\d{1,3})0\b\)`
replacement:
`addtimer($1, $2 SECONDS)`
Two digit ending in odd:
`addtimer\((.*), (\d)([1-9])\)$`
replacement:
`addtimer($1, $2.$3 SECONDS)`
Single digit ending odd:
`addtimer\((.*), ([1-9])\)$`
replacement:
`addtimer($1, 0.$2 SECONDS)`
## Why It's Good For The Game
Code readability
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
|
||
|
|
980ef98e04 |
New operative reinforcement option: Intelligence Overwatch Agent (#82307)
## About The Pull Request Introducing a new Nuclear Operative reinforcement option: The Overwatch Intelligence Agent. Equipped with multi-hudglasses, they have an advanced camera console, station alerts, and bodycams of every operative! If something can be known, they will know about it. They can also remotely pilot your ship. Finally, everyone can ride in the Steel Rain without getting stuck on the station! This role spawns in the formerly unused outpost just north of the nukie base. With a few shelves of supplies and some tools in the back room, they can set up their workplace however they like. This also gives them something to work on while they wait for the operatives to gear up.  As you can see, it's rather cramped and the lights are quite dim in the backroom. Set it up however you like, this is how I did mine:  Total price? 12 TC per agent. It might get a bit cramped, but you could buy a second to make sure the first guy doesn't get lonely! This turned into a 30-commit ugly because the bodycams were originally meant to be accomplished via a refactoring of the spyglass kit. Big mistake that made me shelve the project -- until Melbert's simple bodycam component conveniently did exactly what I needed in a much simpler way. ## Why It's Good For The Game Having a "guy in the chair" for your kickass murder operator squad enables more brainy strategizing, and is thematically sound. Also, nukies have the opportunity to bring in another player to participate in the fun! ## Changelog 🆑 Rhials add: Nuclear Operatives now purchase an Intelligence Agent, who can watch cameras and bodycams, move the shuttle, and provide radio support. Only 12 Telecrystals! /🆑 |
||
|
|
2163f60527 |
Simple animal xenos are now basic animal xenos (#82187)
## About The Pull Request We currently have 2 types of xenos in the codebase, simple animal and carbon. I'd like to unite them both under basic, and I thought I should go for simple animal first since it's more of a conversion than a remake. This helps set a base for a future basic-only xeno, which would require the following: - Basic mobs (or just anything than Carbon) to have Organs, which we can then use for things like referring to their plasma sac for egg-laying, etc. - All xeno types having a basic mob variant, preferably with an AI so they would work without a player. - Something be done about larva, either we'd split basic xenos into "larva" and "adult" (like carbon) or have it be a separate path that can also have organs so they can still have hivemind. Everything else seems to have been done overtime as simple animals have been converted to basic (HUDs and holding things now seem possible, etc.) Even if this doesn't work out, at least this cuts off a good chunk of the remaining simple animals to convert to basic. Sprites used (for mapping helpers): Fire medkit Toxin medkit Oingo Boingo punch face (i tried to shrink it down) ## Why It's Good For The Game This helps advance us move away from simple animals, and helps move carbon xenos to basic mob later too if that's what we want to go for. ## Changelog 🆑 refactor: Xenomorphs (Lavaland & Oldstation ones) are now basic mobs. /🆑 |
||
|
|
466b3df048 |
Refactor removing unused defines. (#82115)
## About The Pull Request Refactors a lot of the unused defines. ## Why It's Good For The Game Refactors a lot of the unused defines. ## Changelog Nothing player facing --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
cc800323da |
Throws gangtools into a bottomless pit (#82145)
## About The Pull Request Resprites everything that used to use the old gangtool sprites (door remotes, augment choice beacon, landing zone designators, and nuke op borg spawners.)  - Added a new non-gangtool generic choice beacon, and a specific S.E.L.F. one. - Door remotes are now fancy garage door openers. - Landing designators have cannibalised the cell phone sprites from the less old version of gang. - Nuke op borg spawners use the same walkie talkie as other reinforcements Door remotes now have individual sprites for each mode, so you can see the mode at a glance. ## Why It's Good For The Game Having a range of very different items sharing the same old sprites is pretty confusing, better to have them all be unique and up to date. ## Changelog 🆑 image: Everything that used the old gangtool sprites (door remotes, landing field designators, some choice beacons, windicate borg reinforcements) has been resprited. image: Door remotes now visibly show their current mode. /🆑 |
||
|
|
9ac81e1a64 |
New station trait job: Human AI (#81681)
## About The Pull Request This PR does many things, I'll try to explain the basic/background stuff to the main thing first: 1. Adds a new remote that allows a human to function like an AI. It controls a fly that will fly around the station slowly, and when it reaches a machine then the person can interact with it as if they were an AI. This required changing a lot of silicon/AI checks with one that also checks for this remote, and some messing with shared ui state. 2. Moves req_access from the obj and bot to ``/atom/movable`` which lets it be shared between the two, no more copy-paste and one side lacking features/checks/signals the other has. 3. Adds a check for AI config for AI-related station traits, which was lacking prior Now for the good part... Adds a new station trait that replaces the AI with a Human. This person is equipped with an AI headset (including Binary), an advanced camera console, an omni door wand, the machine controller, and their laws. They are immune to the SAT's turrets (even if set to target borgs) and are slow outside of the SAT, mimicing the actions of the AI. They interact with the world through their advanced camera console, which allows them to do most AI stuff needed, and the holopad they can connect to without having to ring first (like Command can). They are given a paper with the laws they must follow, but since they are human they are able to bend it. Cyborgs that run the default lawset are "slaved" to them via an unremovable law 0, so the Human AI can bend the laws if they really need to (for their own survival n such), and make the cyborgs obey their commands above laws, but in general this shouldn't be a frequent occurrence. This does take into account the unique AI trait, so it's not guaranteed Asimov. When this station trait rolls, all Intellicards, AI uploads, and AI core boards are destroyed and are unresearchable. They can be spawned by admins in-game if necessary. Maybe in the future we can also exclude Oldstation from this but I haven't really decided. Extra perks: Human AI spawns with a Robotic voicebox (unless they are a body purist) and teleport blocking implant, so they can't use teleporters to bypass their on-station slowdown. They also have an infinite laser pointer that can be used to blind through their camera console. This is unfortunately nerfed from the recent borg balance PR that removed its stun. This was meant to be the alternative to no longer being able to permanently lock borgs down like AIs can (or more than one, for that matter). They aren't affected by Roburgers, Acid, and Fuel's toxicity. Bots salute them like they do Beepsky (which is now a trait) They spawn with SyndEye to replace the AI's tracking ability They do not have a bank account ### The machine remote The machine remote has a little fly in it that flies to the machines it is pointed to, working as the arms and legs of the Human AI. It scans the machine and punches in the action the AI does, and is how the AI accesses basically anything. This fly slowly moves from one machine to the next, and can be recalled with Alt Click. It works on machines and bots. ### Video (Low quality to fit Github) https://github.com/tgstation/tgstation/assets/53777086/e16509f8-8bed-42b5-9fbf-7e37165a11e8 ## Why It's Good For The Game I've seen a funny screenshot one day of a person replacing the AI by using a bunch of door remotes, camera console, crew monitoring console, and a few other things. I've been thinking about that for a few years and really wanted to make it official if not easier to make possible, because it is an incredibly funny interaction. This makes it a reality, and while they aren't as powerful as regular AIs, I think it makes for better and funnier in-game moments. With the same weight as Cargorilla (1), I hope this wouldn't be rolling too often and ruin rounds, but instead show off the different capabilities that Humans and AIs can do, to do the job of an AI. You win some you lose some. ## Changelog 🆑 JohnFulpWillard, Tattax add: Adds a new station trait job: The Human AI. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
a8d1551466 |
Shuttle gibbing code improvements (#81726)
## About The Pull Request Adds a resistance flag, `SHUTTLE_CRUSH_PROOF`, adds it to the existing things that have it, and adds it to the immortality spectres. ## Why It's Good For The Game Gets rid of some hardcoded checks, making it easier for future code (or admins) to make things immune to shuttle crushing. Also makes it so immortality spectres are immune to being shuttle crushed, as that kinda ruins the whole "immortality" thing... ## Changelog 🆑 refactor: Improved shuttle gibbing code, adding a new resistance flag, `SHUTTLE_CRUSH_PROOF`. fix: Immortality revival spectres can no longer be crushed by shuttles. add: The ghost of Poly can no longer be shuttle-crushed, nor can anything incorporeal. /🆑 Co-authored-by: san7890 <the@san7890.com> |
||
|
|
357799c8a5 |
Removes Orbit Polling Component, SSpolling improvement (#81748)
When I made SSpolling, jlsnow gave me his blessing to delete the orbit polling component [where you orbit something for 20 seconds before it chooses a ghost from the orbiters] It's only used in a few places like soulstones replacing jobbanned/inactive players, etc. Also upgraded SSpolling; you can now place a little icon on the sides in the chat message, chat message looks a lot nicer, the alert pic and the jump target don't have to be the same anymore, and I made it be able to pre-pick candidates since 90% of the use cases would just want 1 candidate Also prints to chat who the chosen one was Also made slime intelligence potions ask the user for a reason, which will be displayed in the alert poll |