forked from tgstation/tgstation
-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge upstream [29.07.2024] #466
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This pull request updates the TGS DMAPI to the latest version. Please note any changes that may be breaking or unimplemented in your codebase by checking what changes are in the definitions file: code/__DEFINES/tgs.dm before merging. Co-authored-by: tgstation-server <[email protected]>
## About The Pull Request tgstation#85091 was great in that it no longer said "You don't need to breathe!" before the NOBREATH actually kicked in. It now meant though that that it would message "You don't need to breathe!" Every time that the virus hit on_stage_change and it was on stage 4 or 5 Apparently on_stage_change can and will still be trigger when the virus is at max stage because now the self resp virus was spamming "You don't need to breathe!" every time that the virus tried to change a stage - which was a lot more often than the previous (albeit erroneous) message that was looking for a 5% probability before say its "You don't need to breathe!" message. <details> <summary>For reference; I made the message display the stage during testing, to confirm it was hitting this while at stage 5, and yeah.</summary> ![image](https://github.com/user-attachments/assets/17dc6950-2e58-466f-812c-cfb99cc6ebfe) </details> This PR changes it slightly so that the "You don't need to breathe!" only comes up when it reaches stage 4, which in all my tests it passed on its way to stay 5. Though for the people that miss that, it also occasionally says "You realize you haven't been breathing" upon activate() though this is with the probability check In my tests, though, the prob of 5 was still a bit high (maybe because we sit at stage 5 with a healing virus longer than we sit at stage 1-3 which is when the message was triggering before that fix PR) so I changed the probability to 3 Also, when it reaches stage 3, and it already hit its peak so the virus is on its way to curing, it will send the message "You need to breathe again". This might be helpful when your healing virus starts to self-heal because you don't take care of yourself. Originally I had it on stage<4 and stage_peaked that it would give that message but testing it out, it would bounce between 1 and 2 a lot during self curing and that got spammy as well. When I cured using reagents, on low resistance versions of self resp viruses, it did not trigger this message, though it did when I used low nutrition and spaceacillin to self cure. ## Why It's Good For The Game I'd almost rather not get a healing virus than see all this spam. Please make it stop. ![image](https://github.com/user-attachments/assets/92206be7-fa75-402c-826f-f014565f8591) Fixes: tgstation#85237 ## Changelog :cl: Thlumyn fix: self-resp viruses don't spam messages as often /:cl:
…gstation#85232) ## About The Pull Request As said on the issue this is fixing: "Looking at it, this seems like it might be an order of operations issue. Normally, the borg apparatuses run the `melee_attack_chain(...)` as the stored object on their `pre_attack(...)`... However, this is *after* the item interaction type procs on the table, and thus after it attempts to place the item." "Borg items I believe are not abstract, which would return `NONE` and allow it, rather they're just blocked from being placed, which returns `ITEM_INTERACT_BLOCKING`. As such, it cuts it short before the `pre_attack(...)` is even ran." This instead makes it use the `get_proxy_attacker_for(...)` proc, which cuts earlier into the `melee_attack_chain(...)`, to instead run it as the stored item when available. As a side-effect, we can remove the right-clicking to splash bit, because it should now be possible to use the container's default combat mode splash. That code was also just, non-functional now, because we cut into the chain before it can run. ## Why It's Good For The Game Fixes tgstation#85181. ## Changelog :cl: fix: Fixes borgs not being able to place apparatus-held items on tables. As a side-effect, they can now combat mode right click splash containers as normal instead of having their own right-click floor splash. /:cl:
## About The Pull Request Fixes a bug in the announcement proc that is supposed to generate a disease name for the announcement. ## Changelog :cl: LT3 fix: Fixed disease outbreak announcement sometimes missing the disease name /:cl:
## About The Pull Request Adjusts the tram's ignored smashthroughs to work with the new floor plane numbering. Fixes tgstation#85171 ## Why It's Good For The Game Fixes tram smashing through stuff it shouldn't. ## Changelog :cl: LT3 fix: Tram will no longer eat its own rails as it travels /:cl:
## About The Pull Request Fixes false alarm supermatter surges from having an invalid class announced. ## Changelog :cl: LT3 fix: False supermatter surge announcements are now identical to real ones /:cl:
…on#85219) ## About The Pull Request wawastation engineering water tanks are now highcap ## Why It's Good For The Game closes tgstation#85214 ## Changelog :cl: fix: wawastation engineering water tanks are now highcap /:cl:
) ## About The Pull Request It was trying to put items into a trash bag that doesn't have `CAN_BE_HIT` flag with an `attackby`. It now works for both the vacuum insert and the manual one. Fixes tgstation#84653 ## Why It's Good For The Game Bug fix. ## Changelog :cl: fix: Janicart inserts items into the attached trash bag again (manual and vacuumed) /:cl:
…gstation#85216) ## About The Pull Request It **turns** out that `TurnTo` doesn't re**turn** `Turn`, but the angle (number, not matrix) it's **turn**ed to (used nowhere in the code), and `transform` is built-in variable that default to an identity matrix if set to an invalid value (anything but another matrix) The only thing keeping the projectiles facing the right direction when fired up to one of the aforementioned situations was another `Turn` call (not `turnTo`) called on `projectile/fire`, which I apparently didn't fully grasp the redundancy of (if there were no such issue to begin with) at the time. This PR also cleans up and rearranges the related code a little, including a fallback that was never reached because the projectile `Angle` variable is never null (unless something theorically fucky wucky happens with projectile code but that'd be an even bigger issue). ## Why It's Good For The Game Fixing an old issue caused by the author of this PR in tgstation#80599, me. ## Changelog :cl: fix: Fixes projectiles facing north if ricocheting, deflected or homing /:cl:
## About The Pull Request Adds in lights that were not placed in tgstation#84802, oops! ![image](https://github.com/user-attachments/assets/0ce55ac2-c63c-432f-a54a-6d53814a53f9) ## Why It's Good For The Game Being able to see is nice! ## Changelog :cl: fix: Tram's Tool Storage now has proper lighting /:cl:
## About The Pull Request Removes an errant delam counter next to the bridge, prepares for wallening by replacing the other signs with directional variants. ## Why It's Good For The Game None of this ![image](https://github.com/user-attachments/assets/2f1247fe-8a29-42ef-91e9-ca31892521af) ## Changelog :cl: LT3 fix: Fixed delam counter stuck in window near Ice Box bridge /:cl:
…ion#85212) ## About The Pull Request ### The issue Firelocks currently do not respect their fire alarm's thermal sensors being disabled, _(the multitool/silicon right-click on a fire alarm feature)_, after the fire alarms are triggered. ### Why this happens **Part 1**, of why this happens is that toggling thermal sensors on a fire alarm doesn't actually reset firelocks in the area. **Part 2**, of this is even if toggling thermal sensing on fire alarms called `firealarm/proc/reset()` _(this is the proc called when you right-click a fire alarm, also why resetting the fire alarm doesn't act as a workaround)_, that proc doesn't actual call `firedoor/proc/reset() ` on all the firelocks in the area and instead calls `firedoor/proc/crack_open()`, which temporarily disables the firelock; however, the callback that re-enables the firelock does not check to see if any areas the firelock is attached to has temperature sensing disabled, resulting in temp sensing being disabling never doing anything after a firelock is triggered. ### What this PR does - Adds check in the firelock callback to see if any areas the firelock is attached to care about temperature sensing. - Makes toggling thermal sensors on fire alarms update attached firelocks. ## Why It's Good For The Game Fixes a broken feature. Also firelocks suck and being able to disable them is nice. ## Changelog :cl: fix: Firelocks will once again respect fire alarm's thermal sensors being disabled. /:cl: --------- Co-authored-by: afonamos <[email protected]>
…tgstation#85146) ## About The Pull Request The fish bounty for specific kind of fish has been removed for being a bit janky and relying on RNG way too much. The other two remain, and have had their payout buffed a little to compensate. To make it make it better, a fish export has been added. Each and every fish can be sold to cargo, with a selling price determined by their size and weight, meaning bigger fish sell for more. A fish of default size and weight generally sells for around 130, rarely goes above 600 for most fish, yet a few can sell for 1k, and it can **theorically** go all the way up to ~11k if you were to reach max size and weight for the biggest fish in the game. This PR also reduces the weight of the jumpercable a bit for balance reasons. It's a big, self-reproducing fish that requires no care whatsoever so it's quite the cash cow, only offset by its rarity (EMAG or blackmarket RNG). Conversely, I made the bone fish evolution a bit easier (still a useless-ish braggard niche tbh). ## Why It's Good For The Game The aforementioned fish bounty was janky, complex, relied on RNG too much and the info on it didn't really fit in the bounty console. It's better gone tbh. My fault for adding it in the first place. As for the fish export, I want something simple, that doesn't require the fish to be alive rather than dead, with a low payout per fish on average, to complete the addition of "bomb fishing" from the other PR, ergo dropping maxcaps in the ocean for shit and giggles, but that can also have the potential to generate a decent income by cultivating big fish. ## Changelog :cl: del: Removed a janky fish bounty add: introduced exporting fish through cargo. balance: reduced the average weight of the jumpercable. Conversely, eased up the requirements for the bone fish evolution. /:cl:
…s (and lizardpeople) will no longer random spawn without tails (tgstation#85112) ## About The Pull Request - Deletes monkey tail DNA block - This is not something DNA blocks should be used for. If your only options are "exists" or "doesn't exist", it doesn't need a DNA block, you should just remove the tail! - Minor sprite accessory cleanup - Replaces a lot of blank SAs with `add_blank` usage. Tested in game and it works. - No reason to copy-paste blanks when we have a designated function for it. - Randomizing features can no longer select locked features - Bugfix, though it doesn't affect us at the moment. - Monkeys (and lizard people) will no longer random into being tailless - Felinids can still random into tailless (though that function is broken ATM) ## Why It's Good For The Game For the tailless change: It's a bit weird for these species to spawn without tails. They're kinda a huge part of their identity. I left in the tailless Sprite Accessory, however, so you can still select them in the prefs menu. ## Changelog :cl: Melbert qol: All randomly spawned monkeys (and lizardpeople) will spawn with tails. You can still select to be tailless. code: Cleaned up some code relating to species features (like tails, markings, etc). Report any oddities /:cl:
…tals.dm (tgstation#85130) ## About The Pull Request Moves nitrium crystals to crystallizer_items.dm and deletes the now empty nitrium_crystals.dm file. ## Why It's Good For The Game Nitrium crystals can only be acquired through the crystallizer and they are undeserving of their own file. ## Changelog Not player facing Co-authored-by: afonamos <[email protected]>
…tion#85109) ## About The Pull Request See title. Recently we noticed a bug in bluespace cookie code and in the course of investigating it, had trouble figuring out what it was even supposed to do. I rewrote the code so it should be more intuitive to read. Someone else has a PR open fixing the bug. ## Why this is good for the game I also added an extremely small balance change that you fall over if the cookie fails to teleport you. This is an improvement because it gives feedback for the item failing, and also slaps you on the wrist for trying to teleport inside centcomm or wherever you are. ## Changelog :cl: balance: If a bluespace cookie fails to teleport you then you will trip over. /:cl:
…cuit floors not reducing power load (tgstation#85343) ## About The Pull Request Closes tgstation#84923 ## Changelog :cl: fix: Fixed mapload circuit floors not drawing power and deconstructing circuit floors not reducing power load /:cl:
…gbp] (tgstation#85344) ## About The Pull Request Some mining mobs didn't have signal registrations to respond to ashwalkers breaking the peace. This fixes that by giving all mining mobs a signal listener to being attacked if their AI handler doesn't give them one already. ## Why It's Good For The Game Fixes an exploit where people would drag legion to the ashwalker nest to kill them for free egg spawning because legion don't have a signal listener for being attacked. Future proofs any other mining mobs that might be missing this signal through AI. ## Changelog :cl: Bisar fix: All mining mobs now properly listen to the signals sent by attackers and will respond appropriately. /:cl:
## About The Pull Request Ok, I've had a bit of false memories about fishing being easy. It's actually tough. It also has some issues that I didn't completely understand until very recently. First of all, I thought anything that count as a bait would be good enough for fishing, but it turns attaching a raw meatball doesn't remove dud chances from fishing spots. Having finally played with the feature enough, I came to realize it's quite dumb to have something like that IF you have a bait regardless of quality. We have other ways to handle bait related stuff. Second, I've lowered the time to raise a lobstrosity slightly. Waiting 20 minutes to get an adult one is a tad much if you add in all the prep needed for it. Conversely, I've also increased their feeding frequency. I think they should eat a bit more than once every 15 minutes to survive. 10 should be ok. I've also halved the reproduction timeout for the sludgefish. When I first added it. I didn't take in consideration I'd have later have made it so newly spawned fish would be on cooldown for double the standard duration. The abstract fishing rod that "profound fisher" mobs use now comes with the same omni-bait advanced fishing rods use, so that they can catch all kind of fish with less bad RNG. Buffed the fishing skill a bit. Aquariums that unanchored (except pre-filled ones) and do not auto-connect to plumbing; ferer issues if you were to build one near the toilets. They alo have the 'enable breeding' enabled by default. I've also re-increased the deceleration of the minigame bait. Making the controls less slippery. ## Why It's Good For The Game I've been suffering from some Mandela effect about fishing. It's definitely more challenging when the server isn't shitting the bed. ## Changelog :cl: qol: Aquariums start unanchored and don't autoconnect to plumbing. Their reproduction prevention is also disabled by default. balance: Made it a tad easier to control the bait during the minigame. Buffed the fishing skill. No fishing duds at all when using ANY bait. balance: Chasm Chrabs take less time to grow into Lobstrosities but need food a bit more frequently. balance: "Profound fisher" mobs will have less RNG-dependant time fishing. fix: You can now ACTUALLY interact with other things while fishing if the fishing rod isn't in your active hand. /:cl:
…oints. (tgstation#85341) ## About The Pull Request I've a few gripes with start points and the gateway delay. First of all, there's no way to discriminate peaceful away locations that do not need a with a 30 minutes timegate from the rest. Places like the beach and the museum hardly have anything OP that could tip the scales. Second, none of the awaystart landmarks have identifiers of their own, which means all awaystart landmarks from all away missions are linked under the same destination point datum. This is hardly an issue in the current state where only one map is ever loaded and all maps have only one way in that directs you to one of several locations at least until the gateways are linked, but it's nevertheless something that I have to take care of, since the config requires it. ## Why It's Good For The Game See above. ## Changelog :cl: config: Added a config for specific gateway delays so locations like the beach and the museum don't have to take 30 minutes to become available like the rest. /:cl:
…e block, smart SMGs (tgstation#85211) ## About The Pull Request ![image](https://github.com/user-attachments/assets/c399db0d-c8b8-4f0e-b20d-e81e153a4fac) ![smart bullet](https://github.com/user-attachments/assets/02af6174-f967-487c-b5ee-90c73300d179) Adds the Abielle Smart-SMG to replace the pp-95 entirely. The Abielle performs nearly identically to the pp-95 in nearly all aspects, doing 0.5 less damage because it's not a projectile modifier on 9mm anymore. What the Abielle does do majorly differently, is give it's bullets a slight homing ability VS whatever you clicked on. This keeps the weapon equally useless to it's predecessor at spraying blindly down hallways, while rewarding careful aim with bullets that slightly track the target. ## Why It's Good For The Game The surplus smg sucks, and I don't mean performance-wise (although it certainly does, that's the idea). The surplus smg sucks because typically you would be better suited using it as a melee weapon due to the inaccuracy and low damage. Making the cheapo "I forgot to buy a weapon" gun practically useless is super punishing especially for newer ops who might not remember to buy a weapon first. The smartgun makes the surplus smg still pretty shit compared to the other nukeops guns that can down a man nearly instantly, but means that reinforcements or broke ass nukeops can still be relatively effective so long as they can click on a spaceman across the screen. ## Changelog :cl: balance: The nukeops surplus smg, the pp-95, has been reworked into the Abielle Smart-SMG. It performs nearly identically to the pp-95, however it's projectiles get a slight homing ability towards whatever you click on. sound: New firing sounds for the surplus smg, credit to the m41 sound effects from tgmc image: New sprites for the surplus smg, made by me /:cl:
## About The Pull Request Before the typescript update, the slider element could be disabled without issues, but as the prop was missing, the compiler rejected to accept disabling sliders any longer. This ensures that sliders once again can be disabled as the prop will be accepted and properly forwarded. ## Why It's Good For The Game
…5257) ## About The Pull Request The PR came out a little bigger than I had planned, but creating separate ones for a couple of little things seemed unnecessary to me. Let me start with the most important thing: Stat Panel now scales like TGchat and also looks closer to TGUI! By default, the Stat Panel font size is tied to the chat font size, but this can be changed in a couple of clicks... The rest of the changes are not as big: 1. Stat Panel styles are now more organised 2. The way themes are applied to Byond Skin has been refactored, if someone decides to make a new theme (maybe me), it won't be necessary to copy all the elements 3. NumberInput into the general chat settings tab, was changed to slider 4. Reoder tab buttons changed, they are more compact now 5. With the light theme, chat tabs now have a background when hovering/active tabbing <details> <summary>How it look's like</summary> | New reorder tab buttons | Light Chat tabs | | - | - | | ![image](https://github.com/user-attachments/assets/39194331-b69f-473f-ba82-497a86bbe062) | ![image](https://github.com/user-attachments/assets/6fe22bac-2802-4e03-8095-0633b06a5b03) | </details> <details> <summary>General Preview</summary> https://github.com/user-attachments/assets/7647d584-c2fd-41b2-b2ee-c7ee61569d1f </details> ## Why It's Good For The Game More accessibility for owners of 2/4k monitors Better appearance NumberInput is behaving extremely strangely in chat ## Changelog :cl: add: Stat Panel now scales like a chat, depends on the font size. Defaults from the chat font size, but you can separate it. refactor: Refactored Stat Panel styles and Byond skin theme applying. Stat Panel now looks more like a TGUI /:cl:
github-actions
bot
added
Документация
Некоторые просто любят писать тонну текста, которую никто не будет читать.
TGUI
Добавление или изменение существующего интерфейса на базе фреймворка TGUI
🔉 Звук
Вау... этот звук такой... хуёвый?
🖌️ Спрайты
Вы заработали свою миска-рис и кошко-жена. Партия гордится вами!
🗺️ Изменение Карты
В этом ПРе затронут файл не станционной карты. Может и не один.
🎸 Инструменты
Мы выдаем себя за реальное сообщество разработчиков.
💾 Изменение конфига
Ф-ф-фуриор...?
🙏 Слияние с восходящим потоком
О великий восходящий поток, спасибо что приносишь нам свои дары контента и багфиксов
labels
Jul 29, 2024
larentoun
approved these changes
Jul 29, 2024
This pr causes following conflicts on translate branch:
++<<<<<<< HEAD
+ speech_commands = list("heel", "follow")
+ callout_type = /datum/callout_option/move
++=======
+ speech_commands = list("heel", "follow", "за мной", "след", "охран", "к ноге", "ко мне")
++>>>>>>> origin/translate
++<<<<<<< HEAD
+ callout_type = /datum/callout_option/attack
+ speech_commands = list("attack", "sic", "kill")
++=======
+ speech_commands = list("attack", "sic", "kill", "апорт", "фас", "бить", "атак")
++>>>>>>> origin/translate
++<<<<<<< HEAD
+ name = "Fish"
+ description = "We need fish to populate our aquariums with. Fishes that are dead or bought from cargo will only be paid half as much."
+ reward = CARGO_CRATE_VALUE * 9.5
++=======
+ name = "Рыба"
+ description = "Нам нужна рыба для заполнения наших аквариумов. Мёртвые или купленные из отдела поставок рыбы будут оплачены лишь наполовину."
+ reward = CARGO_CRATE_VALUE * 9
++>>>>>>> origin/translate
++<<<<<<< HEAD
++=======
+
+ ///A subtype of the fish bounty that requires specific fish types. The higher their rarity, the better the pay.
+ /datum/bounty/item/assistant/fish/specific
+ description = "В нашей престижной рыбной коллекции на данный момент не хватает нескольких специфичных видов. Мёртвые или купленные в отделе поставок рыбы будут оплачены лишь наполовину."
+ reward = CARGO_CRATE_VALUE * 16
+ required_count = 3
+ wanted_types = list(/obj/item/storage/fish_case = TRUE)
+
+ /datum/bounty/item/assistant/fish/specific/New()
+ var/static/list/choosable_fishes
+ if(isnull(choosable_fishes))
+ choosable_fishes = list()
+ for(var/obj/item/fish/prototype as anything in subtypesof(/obj/item/fish))
+ if(initial(prototype.experisci_scannable) && initial(prototype.show_in_catalog))
+ choosable_fishes += prototype
+
+ var/list/fishes_copylist = choosable_fishes.Copy()
+ ///Used to calculate the extra reward
+ var/total_rarity = 0
+ var/list/name_list = list()
+ var/num_paths = rand(2,3)
+ for(var/i in 1 to num_paths)
+ var/obj/item/fish/chosen_path = pick_n_take(fishes_copylist)
+ wanted_types[chosen_path] = TRUE
+ name_list += initial(chosen_path.name)
+ total_rarity += initial(chosen_path.random_case_rarity) / num_paths
+ name = english_list(name_list)
+
+ switch(total_rarity)
+ if(FISH_RARITY_NOPE to FISH_RARITY_GOOD_LUCK_FINDING_THIS)
+ reward += CARGO_CRATE_VALUE * 14
+ if(FISH_RARITY_GOOD_LUCK_FINDING_THIS to FISH_RARITY_VERY_RARE)
+ reward += CARGO_CRATE_VALUE * 6.5
+ if(FISH_RARITY_VERY_RARE to FISH_RARITY_RARE)
+ reward += CARGO_CRATE_VALUE * 3
+ if(FISH_RARITY_RARE to FISH_RARITY_BASIC-1)
+ reward += CARGO_CRATE_VALUE * 1
+
+ ..()
++>>>>>>> origin/translate
++<<<<<<< HEAD
+ var/class_to_announce = fake ? pick(1, 2, 3, 4) : surge_class
+ priority_announce("The Crystal Integrity Monitoring System has detected unusual atmospheric properties in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class [class_to_announce] Supermatter Surge Alert", 'sound/machines/engine_alert3.ogg')
++=======
+ priority_announce("Система мониторинга целостности кристала обнаружила необычные атмосферные параметры в камере суперматерии, выходная мощность кристалла суперматерии значительно увеличилась Требуется инженерное вмешательство для стабилизации работы двигателя.", "Всплеск суперматерии класса [surge_class]", 'sound/machines/engine_alert3.ogg')
++>>>>>>> origin/translate
++<<<<<<< HEAD
+ the = FALSE
+ result += span_notice("The [span_bold("[name]")] is aligned with [the ? "the " : ""]<span class='[team_span]'>[team_desc]</span>")
+ result += "<span class='bold notice'>\"[initial(desc)]\"</span>"
+ result += span_notice("[name] wins when they [win_condition]")
++=======
+ result += span_notice("[span_bold("[name]")] является <span class='[team_span]'>[team_desc]</span>")
+ result += "<span class='bold notice'>\"[desc]\"</span>"
+ result += span_notice("[name] выигрывает если [win_condition]")
++>>>>>>> origin/translate
++<<<<<<< HEAD
+ if(item_for_cavity || ((tool.w_class > WEIGHT_CLASS_NORMAL) && !is_type_in_typecache(tool, GLOB.heavy_cavity_implants)) || HAS_TRAIT(tool, TRAIT_NODROP) || isorgan(tool))
+ to_chat(user, span_warning("You can't seem to fit [tool] in [target]'s [target_zone]!"))
++=======
+ if(item_for_cavity || tool.w_class > WEIGHT_CLASS_NORMAL || HAS_TRAIT(tool, TRAIT_NODROP) || isorgan(tool))
+ to_chat(user, span_warning("Кажется, вы не можете поместить [tool.name] в <i>[target_zone]</i> у [target]!"))
++>>>>>>> origin/translate
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
💾 Изменение конфига
Ф-ф-фуриор...?
🎸 Инструменты
Мы выдаем себя за реальное сообщество разработчиков.
Документация
Некоторые просто любят писать тонну текста, которую никто не будет читать.
🖌️ Спрайты
Вы заработали свою миска-рис и кошко-жена. Партия гордится вами!
🙏 Слияние с восходящим потоком
О великий восходящий поток, спасибо что приносишь нам свои дары контента и багфиксов
🔉 Звук
Вау... этот звук такой... хуёвый?
TGUI
Добавление или изменение существующего интерфейса на базе фреймворка TGUI
🗺️ Изменение Карты
В этом ПРе затронут файл не станционной карты. Может и не один.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
About The Pull Request
Merge upstream [29.07.2024]