Skip to content
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 30.10.24 #630

Merged
merged 65 commits into from
Oct 30, 2024
Merged

Merge upstream 30.10.24 #630

merged 65 commits into from
Oct 30, 2024

Conversation

larentoun
Copy link
Collaborator

@larentoun larentoun commented Oct 30, 2024

About The Pull Request

Мерге апстриме

tgstation-ci bot and others added 30 commits October 27, 2024 00:28
…sing (tgstation#87450)

## About The Pull Request
Added a new trait that changeling bodies have that prevents them from
showing up as having a soul when examined when you pull out their brain.

## Why It's Good For The Game
This is an extremely cheesy and easy way to antag check a suspected
changeling, either via surgery, guillotine or amputation shears. Admins
rule this as metainfo/an exploit, so players essentially have to forgo
using information that they have acquired unintentionally in-game.

## Changelog
:cl:
fix: Changelings no longer have a soul when examined if their brain is
missing
/:cl:
## About The Pull Request
closes tgstation#87479
## Changelog
:cl: grungussuss
fix: it is now possible to succumb without speaking
/:cl:
## About The Pull Request
closes tgstation#87472
## Changelog
:cl: grungussuss
fix: signers can sign past muzzles
/:cl:
## About The Pull Request

adds the big pointer chip that lets you recolor your large pointer to
the chipped quirk

## Why It's Good For The Game

i forgot to add this, whoops

if you are worried about spam. the 2 cost chip that literally makes
every message you say be spoken like a musical has really shocked me in
how little it has been used so far. so that is not a concern

## Changelog

:cl:
add: adds big pointer to chipped quirk
/:cl:
Anyone not male would be given a male or female name? Looks like a weird
bugsie poopsie

:cl:
fix: Randomly generated female bodies/humans no longer have a 50% to get
a male name
/:cl:
## About The Pull Request
completes
https://github.com/orgs/tgstation/projects/19?pane=issue&itemId=84412218


https://github.com/user-attachments/assets/a4f432f2-39d5-4401-9e73-3cb1c44435a0
## Why It's Good For The Game
I think it sounds good
## Changelog
:cl: grungussuss
sound: bags now have handling and equip sounds
/:cl:
…on#87492)

## About The Pull Request


While I was testing tgstation#87481 i noticed that the pirates next to 
the bird were killing it before the domain even had a chance to load,
this stops that from happening

## Why It's Good For The Game

bird murder is bad

## Changelog

:cl:
fix: The parrot from the Corsair Cove will no longer be immediatelly
shanked by the pirates upon loading of the domain.
/:cl:
## About The Pull Request

Fixes tgstation#87474

## Why It's Good For The Game

Being unable to remove eyes if there is scarring is bad.

## Changelog
:cl:
fix: Fixes a runtime when trying to remove someones scarred eyes. Now
you can remove them!
/:cl:
## About The Pull Request
completes
https://github.com/orgs/tgstation/projects/19/views/1?filterQuery=shoes&pane=issue&itemId=84410941


https://github.com/user-attachments/assets/1fb3fc62-06ce-4930-a709-830d00c79eb7
## Why It's Good For The Game
sounds are good I think
## Changelog
:cl: grungussuss
sound: shoes have handling and equip sounds
/:cl:
…on#87494)

## About The Pull Request
Outfit was directly assigning the attached hat and i forgor to remove
the var which is how it compiled in the first place

## Changelog
:cl:
fix: Fixed deathsquad commandos not getting their berets
/:cl:
…eployed (tgstation#87452)

## About The Pull Request
tgstation#86825 allowed MODsuits to only have a few of their parts deployed but
didn't change MODule overlay code, resulting in modules like welding
visor showing up even if you only have your gloves active.

## Why It's Good For The Game

Glitchy visuals begone.

## Changelog
:cl:
fix: MODules don't create visual overlays when their required part isn't
deployed
/:cl:

---------

Co-authored-by: Fikou <[email protected]>
Co-authored-by: LemonInTheDark <[email protected]>
If tg is gonna get new hardware might as well use it to flex on the hub.

This takes the middle number from the 3 avgs shown in the status tab and
displays it on the hub next to the current round time.

The hub status field is only updated whenever somebody joins or leaves
the server so the real-time number would be less useful.
…ation#87509)

## About The Pull Request

Basically instead of passing the export value through get_cost() it was
being passed through get_amount()
The oversight means that if you sold a single spacecash bill of 1000cr,
get_amount returned that you were selling a thousand amount of the item,
once elasticity gets factored in that amount gets reduced to basically
nothing.
Ended up just moving the formula from get_amount to get_cost, which is
basically how holocredit exports already worked so hurray for
consistency

Also fixed the small typo of an s being added at the end of bill despite
unit_name asking for the name of a singular unit.

## Why It's Good For The Game

Fixes tgstation#87476 which is the result of an oversight.

## Changelog
:cl:
fix: You will now receive the advertised amount of credits for selling
spacecash bills through cargo
/:cl:
tgstation-ci bot and others added 20 commits October 29, 2024 19:20
…sus bolts in CI) (tgstation#87534)

## About The Pull Request

Closes tgstation#87349
This may seem concerning but projectiles always assume that their firer
and original can be null at any step, so this is completely safe.

## Changelog
:cl:
fix: Fixed harddels caused by certain projectiles
/:cl:
## About The Pull Request

closes tgstation#87544
someone misspelled the name of this airlock in the code :P

## Why It's Good For The Game

spell fix good.

## Changelog

:cl:
spellcheck: spellchecks "maintainance glass airlock"
/:cl:
## About The Pull Request

The Traps won't spawn traps on walls anymore

## Why It's Good For The Game

Yesterday I saw a wizard cast the traps twice and both times it only
spawned them inside walls. This variable was probably overlooked on this
trap, ain't much reason for walltraps.

## Changelog

:cl:
fix: The Traps won't spawn traps on walls anymore
/:cl:
…recoloring bodypart overlays with dye sprays) (tgstation#87434)

## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from tgstation#87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

## Changelog

:cl:
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/:cl:
…edback to two xenobio extracts (tgstation#87553)

## About The Pull Request
Regenerative extracts heal, and then do an effect. The metal, puts the
target into a closet.
Just. Forces them in.
No size check.
Just crams them in there.
Including megafauna.

This just adds a size check to it - it force opens the locker and puts a
fail message. It does not ever actually put the mob into the locker; I
tested this. It broke actions really bad. NODE Drone immediately
completing their vent type of bad.

Also added a fail message to the Regenerative Bluespace for mobs with
no-teleport, because feedback's nice.
## Why It's Good For The Game
I don't think gift-wrapping Bubblegum is something that you're meant to
be able to do.
Also feedback is good for users.
## Changelog
:cl:
qol: added fail feedback to xenobio Regenerative Metal/Bluespace
Extracts
fix: fixed Regenerative Metal Extract not checking for mob size when
moving them into the spawned closet
/:cl:
## About The Pull Request
fixes tgstation#87419

When the avatar is qdel'd, the player returns to original body

## Why It's Good For The Game
Less bugs good

## Changelog
:cl:
fix: Bitrunning: falling into chasms and other ways of destroying your
virtual body instead of killing it, WILL now return you to your body
/:cl:
…nd smoke inhalation. Nitrous oxide (the reagent version) inhalation causes brain damage. (tgstation#87306)

## About The Pull Request

Adds the ``INHALE`` transfer method. Smoking and smoke exposure now uses
this method.

Makes a few sensible inhalation effects for current behaviours.

Adds a unit test amongst the rest of the exposure method tests.

Nitrous oxide does brain damage on inhalation based on volume inhaled.

## Why It's Good For The Game

Smoke and smoking being based on ingestion rather than inhaling was
always weird to me. It'd be nice to have a specific method for smoking
instead of a method shared by drinking. Many of our smokables make sense
as indigestibles, obviously, but maybe we'd like a chem you can ONLY
smoke.

~~Also, I walked out of a job interview and up the street to see a guy
throwing his empty nitrous canisters around and yelling at passerbys, so
shout out to that fucking guy with this PR.~~

## Changelog
:cl:
code: Introduces a INHALE method for reagent transfer. Cigarettes and
smoke reactions use this new method.
balance: Nitrous oxide now brain damage if you inhale it. So don't do
that.
/:cl:

---------

Co-authored-by: SyncIt21 <[email protected]>
Co-authored-by: Ghom <[email protected]>
## About The Pull Request

Closes tgstation#87554

## Changelog
:cl:
fix: Fixed green raptor corpses being able to mine rocks
/:cl:
@larentoun larentoun added the 🛑 Do Not Merge Почему это висит лучше уточнить в дискорде. 220 проклятий тому кто зальёт это! label Oct 30, 2024
@larentoun
Copy link
Collaborator Author

Мержимся ночью - сломаются вульпы

@github-actions github-actions bot added 🔉 Звук Нам скорее всего нравится как это звучит. 🖌️ Спрайты Вы заработали свою миска-рис и кошко-жена. Партия гордится вами! 🗺️ Изменение Карты В этом ПРе затронут файл не станционной карты. Может и не один. 🎸 Инструменты Мы выдаем себя за реальное сообщество разработчиков. 🙏 Слияние с восходящим потоком О великий восходящий поток, спасибо что приносишь нам свои дары контента и багфиксов labels Oct 30, 2024
Copy link

github-actions bot commented Oct 30, 2024

This PR causes following conflicts on translate branch:

code/datums/quirks/negative_quirks/prosthetic_organ.dm
++<<<<<<< HEAD
 +			prosthetic = new /obj/item/organ/heart/cybernetic/surplus
 +			slot_string = "heart"
++||||||| e8081f53c44
++			prosthetic = new /obj/item/organ/internal/heart/cybernetic/surplus
++			slot_string = "heart"
++=======
+ 			prosthetic = new /obj/item/organ/internal/heart/cybernetic/surplus
+ 			slot_string = "сердце"
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +			prosthetic = new /obj/item/organ/lungs/cybernetic/surplus
 +			slot_string = "lungs"
++||||||| e8081f53c44
++			prosthetic = new /obj/item/organ/internal/lungs/cybernetic/surplus
++			slot_string = "lungs"
++=======
+ 			prosthetic = new /obj/item/organ/internal/lungs/cybernetic/surplus
+ 			slot_string = "легкие"
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +			prosthetic = new /obj/item/organ/liver/cybernetic/surplus
 +			slot_string = "liver"
++||||||| e8081f53c44
++			prosthetic = new /obj/item/organ/internal/liver/cybernetic/surplus
++			slot_string = "liver"
++=======
+ 			prosthetic = new /obj/item/organ/internal/liver/cybernetic/surplus
+ 			slot_string = "печень"
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +			prosthetic = new /obj/item/organ/stomach/cybernetic/surplus
 +			slot_string = "stomach"
 +	medical_record_text = "During physical examination, patient was found to have a low-budget prosthetic [slot_string]. \
 +		Removal of these organs is known to be dangerous to the patient as well as the practitioner."
++||||||| e8081f53c44
++			prosthetic = new /obj/item/organ/internal/stomach/cybernetic/surplus
++			slot_string = "stomach"
++	medical_record_text = "During physical examination, patient was found to have a low-budget prosthetic [slot_string]. \
++		Removal of these organs is known to be dangerous to the patient as well as the practitioner."
++=======
+ 			prosthetic = new /obj/item/organ/internal/stomach/cybernetic/surplus
+ 			slot_string = "желудок"
+ 	medical_record_text = "При физическом осмотре было обнаружено, что орган пациента, [slot_string], заменен бюджетным протезом. \
+ 		Известно, что удаление этих органов опасно как для пациента, так и для врача."
++>>>>>>> origin/translate
code/game/machinery/dna_infuser/organ_sets/rat_organs.dm
++<<<<<<< HEAD
 +/obj/item/organ/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker)
 +	offerer.say("For you, it's on the mouse.")
++||||||| e8081f53c44
++/obj/item/organ/internal/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker)
++	offerer.say("For you, it's on the mouse.")
++=======
+ /obj/item/organ/internal/tongue/rat/proc/its_on_the_mouse(mob/living/carbon/offerer, mob/living/taker)
+ 	offerer.say("Для вас, все самое чумовое.")
++>>>>>>> origin/translate
code/modules/mob/living/carbon/carbon_context.dm
++<<<<<<< HEAD
 +					context[SCREENTIP_CONTEXT_LMB] = "Headpat"
 +				else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/tail)))
 +					context[SCREENTIP_CONTEXT_LMB] = "Pull tail"
++||||||| e8081f53c44
++					context[SCREENTIP_CONTEXT_LMB] = "Headpat"
++				else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/external/tail)))
++					context[SCREENTIP_CONTEXT_LMB] = "Pull tail"
++=======
+ 					context[SCREENTIP_CONTEXT_LMB] = "Погладить"
+ 				else if(user.zone_selected == BODY_ZONE_PRECISE_GROIN && !isnull(get_organ_by_type(/obj/item/organ/external/tail)))
+ 					context[SCREENTIP_CONTEXT_LMB] = "Дернуть за хвост"
++>>>>>>> origin/translate
code/modules/mob/living/carbon/carbon_defense.dm
++<<<<<<< HEAD
 +	else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/tail)))
 +		helper.visible_message(span_notice("[helper] pulls on [src]'s tail!"), \
 +					null, span_hear("You hear a soft patter."), DEFAULT_MESSAGE_RANGE, list(helper, src))
 +		to_chat(helper, span_notice("You pull on [src]'s tail!"))
 +		to_chat(src, span_notice("[helper] pulls on your tail!"))
++||||||| e8081f53c44
++	else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/external/tail)))
++		helper.visible_message(span_notice("[helper] pulls on [src]'s tail!"), \
++					null, span_hear("You hear a soft patter."), DEFAULT_MESSAGE_RANGE, list(helper, src))
++		to_chat(helper, span_notice("You pull on [src]'s tail!"))
++		to_chat(src, span_notice("[helper] pulls on your tail!"))
++=======
+ 	else if ((helper.zone_selected == BODY_ZONE_PRECISE_GROIN) && !isnull(src.get_organ_by_type(/obj/item/organ/external/tail)))
+ 		helper.visible_message(span_notice("[capitalize(helper.declent_ru(NOMINATIVE))] дергает за хвост [declent_ru(GENITIVE)]!"), \
+ 					null, span_hear("Вы слышите тихое поглаживание."), DEFAULT_MESSAGE_RANGE, list(helper, src))
+ 		to_chat(helper, span_notice("Вы дергаете за хвост [declent_ru(GENITIVE)]!"))
+ 		to_chat(src, span_notice("[capitalize(helper.declent_ru(NOMINATIVE))] дергает вас за хвост!"))
++>>>>>>> origin/translate
code/modules/mob/living/carbon/examine.dm
++<<<<<<< HEAD
 +	if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/brain))
 +		. += span_deadsay("It appears that [t_his] brain is missing...")
++||||||| e8081f53c44
++	if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/internal/brain))
++		. += span_deadsay("It appears that [t_his] brain is missing...")
++=======
+ 	if(get_bodypart(BODY_ZONE_HEAD) && !get_organ_by_type(/obj/item/organ/internal/brain))
+ 		. += span_deadsay("Кажется, [t_his] мозг отсутствует...")
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +					. += "[t_He] [t_has] a stupid expression on [t_his] face."
 +		var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain)
++||||||| e8081f53c44
++					. += "[t_He] [t_has] a stupid expression on [t_his] face."
++		var/obj/item/organ/internal/brain/brain = get_organ_by_type(/obj/item/organ/internal/brain)
++=======
+ 					. += "У [ru_p_theirs()] глупое выражение лица."
+ 		var/obj/item/organ/internal/brain/brain = get_organ_by_type(/obj/item/organ/internal/brain)
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +		return span_deadsay("[t_He] [t_is] limp and unresponsive; but [t_his] soul might yet come back...")
 +	var/client_like = client || HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE)
 +	var/valid_ghost = ghost?.can_reenter_corpse && ghost?.client
 +	var/valid_soul = brain || !HAS_TRAIT(src, TRAIT_FAKE_SOULLESS)
 +	if((brain && client_like) || (valid_ghost && valid_soul))
 +		return span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life...")
 +	return span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed...")
++||||||| e8081f53c44
++		return span_deadsay("[t_He] [t_is] limp and unresponsive; but [t_his] soul might yet come back...")
++	if(brain && (client || HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || (ghost?.can_reenter_corpse && ghost?.client)))
++		return span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life...")
++	else
++		return span_deadsay("[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed...")
++=======
+ 		return span_deadsay("[t_He] выглядит обмякло и не реагирует; но [t_his] душа ещё может вернуться...")
+ 	if(brain && (client || HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || (ghost?.can_reenter_corpse && ghost?.client)))
+ 		return span_deadsay("[t_He] выглядит обмякло и не реагирует; нет признаков жизни...")
+ 	else
+ 		return span_deadsay("[t_He] выглядит обмякло и не реагирует; нет признаков жизни, и [t_his] душа ушла...")
++>>>>>>> origin/translate
code/modules/mob/living/carbon/human/death.dm
++<<<<<<< HEAD
 +	readout += "<br>Stomach:"
 +	var/obj/item/organ/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
++||||||| e8081f53c44
++	readout += "<br>Stomach:"
++	var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
++=======
+ 	readout += "<br>Желудок:"
+ 	var/obj/item/organ/internal/stomach/belly = get_organ_slot(ORGAN_SLOT_STOMACH)
++>>>>>>> origin/translate
code/modules/mob/mob.dm
++<<<<<<< HEAD
 +				result += span_notice("<i>You examine [examinify] closer, but find nothing of interest...</i>")
 +			result_combined = examine_block(jointext(result, "<br>"))
++||||||| e8081f53c44
++				result += span_notice("<i>You examine [examinify] closer, but find nothing of interest...</i>")
++			result_combined = jointext(result, "<br>")
++=======
+ 				result += span_notice("<i>Вы осматриваете [examinify.declent_ru(ACCUSATIVE)] подробнее, но не находите ничего интересного...</i>")
+ 			result_combined = jointext(result, "<br>")
++>>>>>>> origin/translate
code/modules/surgery/eye_surgery.dm
++<<<<<<< HEAD
 +	var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
 +	user.visible_message(span_notice("[user] successfully fixes [target]'s eyes!"), span_notice("You succeed in fixing [target]'s eyes."))
++||||||| e8081f53c44
++	var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
++	user.visible_message(span_notice("[user] successfully fixes [target]'s eyes!"), span_notice("You succeed in fixing [target]'s eyes."))
++=======
+ 	var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES)
+ 	user.visible_message(span_notice("[capitalize(user.declent_ru(NOMINATIVE))] успешно вылечил глаза у [target.declent_ru(GENITIVE)]!"), span_notice("Вы успешно вылечили глаза у [target.declent_ru(GENITIVE)]."))
++>>>>>>> origin/translate

@larentoun larentoun merged commit 792f35f into master Oct 30, 2024
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎸 Инструменты Мы выдаем себя за реальное сообщество разработчиков. 🖌️ Спрайты Вы заработали свою миска-рис и кошко-жена. Партия гордится вами! 🙏 Слияние с восходящим потоком О великий восходящий поток, спасибо что приносишь нам свои дары контента и багфиксов 🔉 Звук Нам скорее всего нравится как это звучит. 🛑 Do Not Merge Почему это висит лучше уточнить в дискорде. 220 проклятий тому кто зальёт это! 🗺️ Изменение Карты В этом ПРе затронут файл не станционной карты. Может и не один.
Projects
None yet
Development

Successfully merging this pull request may close these issues.