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 18.10.24 #594

Merged
merged 79 commits into from
Oct 18, 2024
Merged

Merge upstream 18.10.24 #594

merged 79 commits into from
Oct 18, 2024

Conversation

larentoun
Copy link
Collaborator

@larentoun larentoun commented Oct 17, 2024

About The Pull Request

Апстрим мерге

Sadboysuss and others added 30 commits October 14, 2024 12:12
…ol belt (tgstation#87208)

## About The Pull Request
same sounds as the toolbelt
## Why It's Good For The Game
I think it fits
## Changelog
:cl: grungussuss
sound: medical, jani, soulstone, grenade belts got sounds
/:cl:
tgstation#87218)

🆑
qol: map votes are now winner take all instead of weighted.
/🆑
## About The Pull Request
before, if u wanted to make ur animal hunt for food, u had to give them
the find food subtree, the attacking subtree, and had to edit their
targeting stratedgy to include items. this makes it so u only have to
give them just 1 subtree which will handle everything it needs to. also
makes it alot more customizable, u can now set a hunger cooldown for ur
animals, and cute emotes for them to play after eating food

## Why It's Good For The Game
makes it more convenient for future devs to include food hunting
behaviors to their animals, while also making it more customizable

## Changelog
:cl:
code: animals' food hunting behavior has been refactored, please report
any bugs
/:cl:
…#87207)

## About The Pull Request

I randomly came across a `var/list/static` in the code, which does not
actually do what was intended, and thought it was silly. A ctrl+f
revealed that this was a fairly common mistake, so I went and fixed all
the instances of it I could find.

~~Including one in lighting code, which it looked like they were trying
to create a global list to cache generated lighting sheet values for
speed, but it was just a normal list that got created each time
pointlessly. Now those values are actually being cached (using a global
var, because a `static` list was not the right thing to use there in the
first place).~~

Nevermind, it seems that this was in fact being cached even if it
shouldn't have been, because byond. Just rearranged it there seeing as
it works either way.


## Why It's Good For The Game

Code that does what it's supposed to

## Changelog

:cl:
fix: fixes a bunch of improper static list declarations
/:cl:
![resim](https://github.com/user-attachments/assets/35ce028c-0ed0-4ea2-89f3-77acc15693ac)


## About The Pull Request
Showering will add negative mood effect to felinids
## Why It's Good For The Game
there was a status effect that drops stamina for felinids on shower but
at the same time it boosts mood i decided to make it better
:cl: Mamaii
add: shower will give felinids negative mood effect
fix: fixed shower hater status effect alert not showing 
/:cl:
…7216)

## About The Pull Request

Its now a priority -> color assoc list with a pair of helper procs to
wrap lazylist stuff. New priorities should go to
``code/__DEFINES/bodyparts.dm`` as defines as to be seen and not
overridden.

## Why It's Good For The Game

Wasn't a problem until carps came along as before only hulks used this
thing, now we've got clashing.

## Changelog
:cl:
fix: Losing hulk after becoming a carp no longer turns you black
/:cl:

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request

while working on cosmetic stuff for a downstream i noticed that the neck
of female bodied human sprites was asymmetrical from the east and west
facing icons


![image](https://github.com/user-attachments/assets/ae914ea5-b138-4404-b7df-5e4fcd59d0e0)

![image](https://github.com/user-attachments/assets/9dca384c-4e3e-44cd-b4c9-0f6feff55231)

i checked the icon files and, sure enough, the east facing head has an
extra pixel on the neck, so i removed it and updated the relevant dmi.


![image](https://github.com/user-attachments/assets/b9a008d2-1acd-436a-bb69-591909d60ef9)

![image](https://github.com/user-attachments/assets/7afc14a4-1834-440d-b37e-ad45d0372820)

i also did a cursory glance at all the other body sprites to ensure that
they were symmetrical. i didnt look that close admittedly but i didnt
spot any other discrepancies. and that's all! this is probably the
ittiest bittiest pr ever

## Why It's Good For The Game

i think this one is pretty self explanatory lol

## Changelog

:cl:
fix: fixed east facing female human heads having an extra neck pixel
:cl:
…erlays. (tgstation#87215)

## About The Pull Request
I'm making sure that `update_body_parts()` is properly called when
changing bodypart overlays, so that they actually show up the very
moment they were changed. However, to avoid redundant
`update_body_parts()` calls on init or while changing species, I've
added a living flag that stops `update_body_parts()` from being called
in these situations. I also scoured the codebase for other redundant
`update_body_parts()` to remove and things to clean up a little.

## Why It's Good For The Game
This automates the process of calling `update_body_parts()` a bit.

## Changelog
Mainly backend.
… be more readable or more descriptive. (tgstation#87157)

## About The Pull Request

Hi. Whoever originally wrote the description for this item in the uplink
likely isn't a native english speaker and must've used google translate
to make it. Point is: This description is broken and nobody has fixed it
(I'm assuming nobody wants to spend GBP trying to fix it.)

## Why It's Good For The Game

I'd like to be able to read this item's description and not feel like i
just had a stroke. Also, being descriptive as to WHAT THIS ITEM ACTUALLY
DOES is super important before purchasing it, nobody wants to boot up
the wiki and try to figure out what this does.

## Changelog

:cl:
qol: The GLA Brand Mail Counterfeit Device's description has been
updated by a native english speaker and has been made more descriptive.
/:cl:
![Screenshot_108](https://github.com/user-attachments/assets/c0c40aca-ec80-4849-8d24-b6a45df8ed7d)

## About The Pull Request

resprites the existing clown mask styles and adds a new clown mask
style: The Dealer. the old madman mask has been made into an optional
craft: the gamer's wig and mask.

does not resprite already existing default clown mask


![Screenshot_109](https://github.com/user-attachments/assets/99b6fdb9-5e19-4b27-a41c-5902a5b92d27)

## Why It's Good For The Game

resprites are good! and more variety is good too

## Changelog

:cl:
add: the Honkmother has decided to bless Her children with a new form!
image: resprited the optional clown mask styles
/:cl:
## About The Pull Request

-fixes random test tube racks in the hallways next to cargo
-fixes a bunch of decals
-fixes some item offsets
-moves a table so you can actually push a crate into the medical chute
without using the alt-menu or dismantling a table
-removes random destination tagger on the floor of the new security
outpost

## Why It's Good For The Game

fixes

## Changelog

:cl:

fix: fixed up Metastation's cargo delivery office.

/:cl:
…player (tgstation#87212)

## About The Pull Request

fixes tgstation#87206

## Changelog
:cl:
fix: you may no longer roll appendicitis in deathmatch or as a bitrunner
avatar
/:cl:
… water vapor (tgstation#87169)

## About The Pull Request
Adds the interaction between the Springlock MOD module and the Gas Water
Vapor so that it snaps shut upon being exposed to the Gas.
Fixes tgstation#85666.
Specifically the oversight mentioned in the comments.
## Why It's Good For The Game
Adds consistency to the Springlock MOD module so it properly interacts
with water as intended.
## Changelog
:cl:
fix: Springlock MOD module properly interacts with Water Vapor
/:cl:
tgstation-ci bot and others added 22 commits October 17, 2024 08:22
## About The Pull Request
This doesn't work anymore. Thanks to dangerkitten on bitbus for making
me write a regex to find this one.
(said regex being ``playsound\([^,]+, list\(``)

## Changelog
:cl:
fix: Hotswapping tanks in pumps and scrubbers now properly plays both
sounds instead of runtiming
/:cl:
…#87244)

## About The Pull Request

made manufacturing machines i/o overlays (the blue and orange lights and
such) rotate with the machine
CTRL SHIFT LMB makes the manulathe dump all mats
manulathes no longer may receive ore: this was not intentional,
processing ore is stuff the smelter does
manulathes now use a matter bin instead of a servo (because it makes
sense because it holds mats): this affects its material capacity being:
bin tier * 50 sheets

## Why It's Good For The Game

bug bad
oversight bad
and you also no longer need to decon the lathe to dump mats

## Changelog
:cl:
fix: input output overlays for manufacturing machines actually update
properly when rotated
qol: you may dump materials of a manulathe via CTRL SHIFT LMB
balance: manulathes may not receive ore (not intentional)
balance: manulathes now use a matter bin in their construction, which
now affects their material holding capacity: 50 sheets per tier
/:cl:
…gstation#87250)

## About The Pull Request
replaces the _o in the p_smes_o icon state with a -o so the icon
actually shows up instead of turning invisible.
no GBP because it's my bad. i thought i caught that

## Why It's Good For The Game
SMES turning invisible when unscrewed probably not great for usability

## Changelog


:cl:
fix: Portable SMESes should no longer turn invisible when unscrewed.
/:cl:

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
…setting pressure value. (tgstation#87243)

## About The Pull Request
Fix canister and portable pump pressure inputs from transferring rounded
values instead of the full value inputs to their target release
pressure.

Does this by adding a round_value = FALSE argument to
tgui_input_number() in canister.dm, and removing the rounding operation
in canister.dm and pump.dm.

The UI should still round the values to display, just not rounding the
value to transfer to the canister.

### Known issues:
If the input is set to an integer with the same value as the rounded
current value, then it will consider it the same for some reason, thus
not calling ui_act(). Not sure why this happens.
## Why It's Good For The Game
Closes tgstation#87175.
## Changelog
:cl:
fix: Fixes canisters and portable pumps from not considering decimals
when transferring input to setting release pressure.
/:cl:
…eneral audio cooldown (tgstation#87210)

## About The Pull Request
defaults:
```php
	/// How long is the shared emote cooldown triggered by this emote?
	var/general_emote_audio_cooldown = 2 SECONDS
	/// How long is the specific emote cooldown triggered by this emote?
	var/specific_emote_audio_cooldown = 5 SECONDS
```
specific cooldown only checks for the emote, while the general is a
shared cooldown, gave laugh and scream longer specific cooldowns.
## Why It's Good For The Game
The general emote cooldown fixed the problem of multiple emotes getting
used at once, now we have a problem with people using the same emote too
many times, I want to give the players ability to use sounds in their
emotes, but spamming the same emote over and over again makes me regret
it and hesitant about it, this way we can have the best of both worlds.
## Changelog
:cl: grungussuss
sound: along with the shared emote cooldown, specific emote audio
cooldown has returned.
/:cl:
## About The Pull Request

Fixes tgstation#86756
Fixes tgstation#67174 (isn't this already fixed? Oh well now it's really fixed
because I tested it)

Basically changed the random calls to `update_body_parts` with a bespoke
proc which better explains what they are there to do

Adds one missing call to head items (for `HIDESNOUT`)

## Changelog

:cl: Melbert
fix: Fixed digitigrade pants sprite not updating in accordance to some
leg updates
/:cl:
…ound (tgstation#87225)

## About The Pull Request

Closes tgstation#87222
armrest code doesnt have to be copied thrice if it can be on chairs with
a var to control if its actually used

## Changelog
:cl:
fix: Bronze chairs will automatically spin once more
/:cl:
## About The Pull Request
For:
- gas analyzer
- scanner gate
- plant analyzer
- t-ray scanner
- slime scanner
- scanning mining geysers


https://github.com/user-attachments/assets/24fde731-e567-483b-b88e-6f7fcbacf52a
## Why It's Good For The Game
it sounds nice
## Changelog
:cl: grungussuss
sound: added new scanning sound
/:cl:
@github-actions github-actions bot added TGUI Добавление или изменение существующего интерфейса на базе фреймворка TGUI 🔉 Звук Вау... этот звук такой... хуёвый? 🖌️ Спрайты Вы заработали свою миска-рис и кошко-жена. Партия гордится вами! 🗺️ Изменение Карты В этом ПРе затронут файл не станционной карты. Может и не один. 🎸 Инструменты Мы выдаем себя за реальное сообщество разработчиков. 🙏 Слияние с восходящим потоком О великий восходящий поток, спасибо что приносишь нам свои дары контента и багфиксов labels Oct 17, 2024
Copy link

This PR causes following conflicts on translate branch:

code/game/objects/items/chainsaw.dm
++<<<<<<< HEAD
 +	RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform))
++||||||| 7181e2f6237
+ /obj/item/chainsaw/suicide_act(mob/living/carbon/user)
+ 	if(on)
 -		user.visible_message(span_suicide("[user] begins to tear [user.p_their()] head off with [src]! Кажется, [user.ru_p_they()] пытается совершить самоубийство!"))
++		user.visible_message(span_suicide("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
+ 		playsound(src, 'sound/items/weapons/chainsawhit.ogg', 100, TRUE)
+ 		var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
+ 		if(myhead)
+ 			myhead.dismember()
+ 	else
 -		user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! Кажется, [user.ru_p_they()] пытается совершить самоубийство!"))
++		user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!"))
+ 		playsound(src, 'sound/items/weapons/genhit1.ogg', 100, TRUE)
+ 	return BRUTELOSS
 -
 -/obj/item/chainsaw/attack_self(mob/user)
 -	on = !on
 -	to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]")
 -	force = on ? force_on : initial(force)
 -	throwforce = on ? force_on : initial(force)
 -	icon_state = "chainsaw_[on ? "on" : "off"]"
 -	var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
 -	butchering.butchering_enabled = on
 -
++=======
++/obj/item/chainsaw/suicide_act(mob/living/carbon/user)
+ 	if(on)
 -		hitsound = 'sound/items/weapons/chainsawhit.ogg'
 -		chainsaw_loop.start()
++		user.visible_message(span_suicide("[user] begins to tear [user.p_their()] head off with [src]! Кажется, [user.ru_p_they()] пытается совершить самоубийство!"))
++		playsound(src, 'sound/items/weapons/chainsawhit.ogg', 100, TRUE)
++		var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
++		if(myhead)
++			myhead.dismember()
+ 	else
 -		hitsound = SFX_SWING_HIT
 -		chainsaw_loop.stop()
 -
 -	toolspeed = on ? 0.5 : initial(toolspeed) //Turning it on halves the speed
 -	if(src == user.get_active_held_item()) //update inhands
 -		user.update_held_items()
 -	update_item_action_buttons()
++		user.visible_message(span_suicide("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! Кажется, [user.ru_p_they()] пытается совершить самоубийство!"))
++		playsound(src, 'sound/items/weapons/genhit1.ogg', 100, TRUE)
++	return BRUTELOSS
++>>>>>>> origin/translate
code/modules/antagonists/heretic/items/heretic_blades.dm
++<<<<<<< HEAD
 +	after_use_message = "The Torn Champion hears your call..."
 +	///If our blade is currently infused with the mansus grasp
 +	var/infused = FALSE
 +
 +/obj/item/melee/sickly_blade/dark/afterattack(atom/target, mob/user, click_parameters)
 +	. = ..()
 +	if(!infused || target == user || !isliving(target))
 +		return
 +	var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user)
 +	var/mob/living/living_target = target
 +	if(!heretic_datum)
 +		return
 +
 +	//Apply our heretic mark
 +	var/datum/heretic_knowledge/mark/blade_mark/mark_to_apply = heretic_datum.get_knowledge(/datum/heretic_knowledge/mark/blade_mark)
 +	if(!mark_to_apply)
 +		return
 +	mark_to_apply.create_mark(user, living_target)
 +
 +	//Remove the infusion from any blades we own (and update their sprite)
 +	for(var/obj/item/melee/sickly_blade/dark/to_infuse in user.get_all_contents_type(/obj/item/melee/sickly_blade/dark))
 +		to_infuse.infused = FALSE
 +		to_infuse.update_appearance(UPDATE_ICON)
 +	user.update_held_items()
 +
 +	if(!check_behind(user, living_target))
 +		return
 +	// We're officially behind them, apply effects
 +	living_target.AdjustParalyzed(1.5 SECONDS)
 +	living_target.apply_damage(10, BRUTE, wound_bonus = CANT_WOUND)
 +	living_target.balloon_alert(user, "backstab!")
 +	playsound(living_target, 'sound/items/weapons/guillotine.ogg', 100, TRUE)
 +
 +/obj/item/melee/sickly_blade/dark/dropped(mob/user, silent)
 +	. = ..()
 +	if(infused)
 +		infused = FALSE
 +		update_appearance(UPDATE_ICON)
 +
 +/obj/item/melee/sickly_blade/dark/update_icon_state()
 +	. = ..()
 +	if(infused)
 +		icon_state = base_icon_state + "_infused"
 +		inhand_icon_state = base_icon_state + "_infused"
 +	else
 +		icon_state = base_icon_state
 +		inhand_icon_state = base_icon_state
++||||||| 7181e2f6237
++	after_use_message = "The Torn Champion hears your call..."
++=======
+ 	after_use_message = "Разорванный чемпион слышит ваш зов..."
++>>>>>>> origin/translate
code/modules/antagonists/heretic/knowledge/blade_lore.dm
++<<<<<<< HEAD
 +	desc = "Opens up the Path of Blades to you. \
 +		Allows you to transmute a knife with one bar of silver or titanium to create a Sundered Blade. \
 +		You can create up to four at a time."
 +	gain_text = "Our great ancestors forged swords and practiced sparring on the eve of great battles."
++||||||| 7181e2f6237
++	desc = "Opens up the Path of Blades to you. \
++		Allows you to transmute a knife with two bars of silver or titanium to create a Sundered Blade. \
++		You can create up to five at a time."
++	gain_text = "Our great ancestors forged swords and practiced sparring on the eve of great battles."
++=======
+ 	desc = "Открывает перед вами Путь клинков. \
+ 		Позволяет трансмутировать нож с двумя слитками серебра или титаниума для создания Закаленного клинка. \
+ 		Одновременно можно иметь не более пяти."
+ 	gain_text = "Наши великие предки ковали мечи и практиковали спарринги накануне великих сражений."
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +	target.balloon_alert(source, "backstab!")
 +	playsound(target, 'sound/items/weapons/guillotine.ogg', 100, TRUE)
++||||||| 7181e2f6237
++	target.balloon_alert(source, "backstab!")
++	playsound(get_turf(target), 'sound/items/weapons/guillotine.ogg', 100, TRUE)
++=======
+ 	target.balloon_alert(source, "удар в спину!")
+ 	playsound(get_turf(target), 'sound/items/weapons/guillotine.ogg', 100, TRUE)
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +	name = "Empowered Blades"
 +	desc = "Attacking someone with a Sundered Blade in both hands \
 +		will now deliver a blow with both at once, dealing two attacks in rapid succession. \
 +		The second blow will be slightly weaker. \
 +		You are able to infuse your mansus grasp directly into your blades, and your blades are more effective against structures."
 +	gain_text = "I found him cleaved in twain, halves locked in a duel without end; \
 +		a flurry of blades, neither hitting their mark, for the Champion was indomitable."
++||||||| 7181e2f6237
++	name = "Swift Blades"
++	desc = "Attacking someone with a Sundered Blade in both hands \
++		will now deliver a blow with both at once, dealing two attacks in rapid succession. \
++		The second blow will be slightly weaker."
++	gain_text = "I found him cleaved in twain, halves locked in a duel without end; \
++		a flurry of blades, neither hitting their mark, for the Champion was indomitable."
++=======
+ 	name = "Swift Blades"
+ 	desc = "Атакуя кого-либо с Закаленным клинком в обеих руках, \
+ 	теперь вы будете наносить удар обоими клинками сразу, нанося две атаки в быстрой последовательности. \
+ 	Второй удар будет немного слабее."
+ 	gain_text = "Я нашел его рассеченным на две части, половинки сцепились в дуэли без конца; \
+ 		шквал клинков, но ни один из них не попал в цель, ибо чемпион был неукротим."
++>>>>>>> origin/translate
code/modules/antagonists/heretic/knowledge/side_blade_rust.dm
++<<<<<<< HEAD
 +	desc = "Allows you to transmute a piece of wood, with hide \
 +		from any animal,and a camera to create the Lionhunter's rifle. \
 +		The Lionhunter's Rifle is a long ranged ballistic weapon with three shots. \
 +		These shots function as normal, albeit weak high-caliber munitions when fired from \
 +		close range or at inanimate objects. You can aim the rifle at distant foes, \
 +		causing the shot to mark your victim with your grasp and teleport you directly to them."
 +	gain_text = "I met an old man in an antique shop who wielded a very unusual weapon. \
 +		I could not purchase it at the time, but they showed me how they made it ages ago."
++||||||| 7181e2f6237
++	desc = "Allows you to transmute any ballistic weapon, such as a pipegun, with hide \
++		from any animal, a plank of wood, and a camera to create the Lionhunter's rifle. \
++		The Lionhunter's Rifle is a long ranged ballistic weapon with three shots. \
++		These shots function as normal, albeit weak high-caliber munitions when fired from \
++		close range or at inanimate objects. You can aim the rifle at distant foes, \
++		causing the shot to deal massively increased damage and hone in on them."
++	gain_text = "I met an old man in an antique shop who wielded a very unusual weapon. \
++		I could not purchase it at the time, but they showed me how they made it ages ago."
++=======
+ 	desc = "Позволяет трансмутировать любое баллистическое оружие, например, трубное ружье, с помощью шкуры \
+ 		любого животного, доски дерева и камеры в винтовку Lionhunter. \
+ 		Lionhunter - это дальнобойное баллистическое оружие с тремя выстрелами. \
+ 		При стрельбе с близкого расстояния или по неодушевленным предметам эти выстрелы \
+ 		действуют как обычные, хотя и слабые высококалиберные боеприпасы. Ты можешь направить винтовку на противников на большом расстояние,\
+ 		в результате чего выстрел нанесет значительно больший урон и нацелится на них."
+ 	gain_text = "В антикварном магазине я встретил старика, который владел очень необычным оружием. \
+ 		В то время я не мог его приобрести, но они показали мне, как они делали его много лет назад."
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +	desc = "Allows you to transmute 3 ballistic ammo casings (used or unused) of any caliber, \
 +		including shotgun shells to create an extra clip of ammunition for the Lionhunter Rifle."
 +	gain_text = "The weapon came with three rough iron balls, intended to be used as ammunition. \
 +		They were very effective, for simple iron, but used up quickly. I soon ran out. \
 +		No replacement munitions worked in their stead. It was peculiar in what it wanted."
++||||||| 7181e2f6237
++	desc = "Allows you to transmute 3 ballistic ammo casings (used or unused) of any caliber, \
++		including shotgun shot, with any animal hide to create an extra clip of ammunition for the Lionhunter Rifle."
++	gain_text = "The weapon came with three rough iron balls, intended to be used as ammunition. \
++		They were very effective, for simple iron, but used up quickly. I soon ran out. \
++		No replacement munitions worked in their stead. It was peculiar in what it wanted."
++=======
+ 	desc = "Позволяет трансмутировать 3 баллистические гильзы (использованные или неиспользованные) любого калибра, \
+ 		включая дробь, со шкурой любого животного, чтобы создать дополнительную обойму боеприпасов для винтовки Lionhunter."
+ 	gain_text = "К оружию прилагались три грубых железных шара, предназначенных для использования в качестве боеприпасов. \
+ 		Они были очень эффективны для простого железа, но быстро расходовались. Вскоре они у меня закончились. \
+ 		Никакие запасные боеприпасы не помогали. Винтовка была своеобразна в том, чего она хотела."
++>>>>>>> origin/translate
code/modules/antagonists/heretic/structures/mawed_crucible.dm
++<<<<<<< HEAD
 +	break_message = span_warning("[src] falls apart with a thud!")
 +	START_PROCESSING(SSobj, src)
 +
 +/obj/structure/destructible/eldritch_crucible/process(seconds_per_tick)
 +	if(COOLDOWN_TIMELEFT(src, refill_cooldown))
 +		return
 +	COOLDOWN_START(src, refill_cooldown, 30 SECONDS)
 +	current_mass++
 +	playsound(src, 'sound/items/eatfood.ogg', 100, TRUE)
 +	update_appearance(UPDATE_ICON_STATE)
++||||||| 7181e2f6237
++	break_message = span_warning("[src] falls apart with a thud!")
++=======
+ 	break_message = span_warning("[src] разваливается с грохотом!")
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +	crucible_tip = "Allows you to see through walls and objects. Lasts 90 seconds."
++||||||| 7181e2f6237
++	crucible_tip = "Allows you to see through walls and objects. Lasts 60 seconds."
++=======
+ 	crucible_tip = "Позволяет видеть сквозь стены и предметы. Действует 60 секунд."
++>>>>>>> origin/translate
code/modules/experisci/experiment/types/scanning_fish.dm
++<<<<<<< HEAD
 +	required_atoms = list(/obj/item/fish = 3)
 +	scan_message = "Scan different species of fish"
++||||||| 7181e2f6237
++	required_atoms = list(/obj/item/fish = 4)
++	scan_message = "Scan different species of fish"
++=======
+ 	required_atoms = list(/obj/item/fish = 4)
+ 	scan_message = "Сканируйте разные виды рыб"
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +	name = "Fish Scanning Experiment 2"
 +	description = "An experiment requiring more fish species to be scanned to unlock the 'Ocean' setting for the fishing portal."
++||||||| 7181e2f6237
++	name = "Fish Scanning Experiment 2"
++	description = "An experiment requiring more fish species to be scanned to unlock the 'Chasm' setting for the fishing portal."
++=======
+ 	name = "Эксперимент по скану рыбы (2)"
+ 	description = "Эксперимент, требующий отсканировать больше видов рыб, чтобы разблокировать настройку \"Бездна\" для рыболовного портала."
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +	name = "Fish Scanning Experiment 3"
 +	description = "An experiment requiring even more fish species to be scanned to unlock the 'Chasm' setting for the fishing portal."
++||||||| 7181e2f6237
++	name = "Fish Scanning Experiment 3"
++	description = "An experiment requiring even more fish species to be scanned to unlock the 'Ocean' setting for the fishing portal."
++=======
+ 	name = "Эксперимент по скану рыбы (3)"
+ 	description = "Эксперимент, требующий отсканировать еще больше видов рыб, чтобы разблокировать настройку \"Океан\" для рыболовного портала."
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +	required_atoms = list(/obj/item/fish/holo = 3)
 +	scan_message = "Scan different species of holographic fish"
++||||||| 7181e2f6237
++	required_atoms = list(/obj/item/fish/holo = 4)
++	scan_message = "Scan different species of holographic fish"
++=======
+ 	required_atoms = list(/obj/item/fish/holo = 4)
+ 	scan_message = "Сканирование различных видов голографических рыб"
++>>>>>>> origin/translate
code/modules/mob/living/carbon/alien/adult/adult.dm
++<<<<<<< HEAD
 +	lucky_winner.audible_message(span_danger("You hear a deep groan, and a harsh snap like a mantrap."))
 +	lucky_winner.visible_message(span_danger("[src] devours [lucky_winner]!"), \
 +			span_userdanger("[src] devours you!"))
++||||||| 7181e2f6237
++	lucky_winner.audible_message(span_danger("You hear a deep groan, and a harsh snap like a mantrap."))
++	lucky_winner.visible_message(span_danger("[src] devours [lucky_winner]!"), \
++			span_userdanger("[lucky_winner] devours you!"))
++=======
+ 	lucky_winner.audible_message(span_danger("Вы слышите глубокий стон и резкий щелчок, схожий на звук капкана."))
+ 	lucky_winner.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] поглощает [lucky_winner.declent_ru(ACCUSATIVE)]!"), \
+ 			span_userdanger("[capitalize(lucky_winner.declent_ru(NOMINATIVE))] поглощает вас!"))
++>>>>>>> origin/translate
tgui/packages/tgui/interfaces/Uplink/index.tsx
++<<<<<<< HEAD
 +                              <Box>Your current level of threat.</Box> Threat
 +                              determines
 +                              {has_objectives
 +                                ? ' the severity of secondary objectives you get and '
 +                                : ' '}
 +                              what items you can purchase.&nbsp;
 +                              <Box mt={0.5}>
 +                                {/* A minute in deciseconds */}
 +                                Threat passively increases by{' '}
 +                                <Box color="green" as="span">
 +                                  {calculateProgression(
 +                                    current_progression_scaling,
 +                                  )}
++||||||| 7181e2f6237
++                              <Box>
++                                <Box>Your current level of threat.</Box> Threat
++                                determines
++                                {has_objectives
++                                  ? ' the severity of secondary objectives you get and '
++                                  : ' '}
++                                what items you can purchase.&nbsp;
++                                <Box mt={0.5}>
++                                  {/* A minute in deciseconds */}
++                                  Threat passively increases by{' '}
++                                  <Box color="green" as="span">
++                                    {calculateProgression(
++                                      current_progression_scaling,
++                                    )}
++                                  </Box>
++                                  &nbsp;every minute
++=======
+                               <Box>
+                                 <Box>Ваше текущее значение угрозы.</Box> Угроза
+                                 влияет на
+                                 {has_objectives
+                                   ? ' сложность получаемых второстепенных задач и '
+                                   : ' '}
+                                 список доступных для покупки предметов.&nbsp;
+                                 <Box mt={0.5}>
+                                   {/* A minute in deciseconds */}
+                                   Угроза пассивно увеличивается на{' '}
+                                   <Box color="green" as="span">
+                                     {calculateProgression(
+                                       current_progression_scaling,
+                                     )}
+                                   </Box>
+                                   &nbsp;каждую минуту
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +                                &nbsp;every minute
++||||||| 7181e2f6237
++                                {Math.abs(progressionPercentage) > 0 && (
++                                  <Box mt={0.5}>
++                                    Because your threat level is
++                                    {progressionPercentage < 0
++                                      ? ' ahead '
++                                      : ' behind '}
++                                    of where it should be, you are getting
++                                    <Box
++                                      as="span"
++                                      color={
++                                        progressionPercentage < 0
++                                          ? 'red'
++                                          : 'green'
++                                      }
++                                      ml={1}
++                                      mr={1}
++                                    >
++                                      {progressionPercentage}%
++                                    </Box>
++                                    {progressionPercentage < 0
++                                      ? 'less'
++                                      : 'more'}{' '}
++                                    threat every minute
++                                  </Box>
++                                )}
++                                {dangerLevelsTooltip}
++=======
+                                 {Math.abs(progressionPercentage) > 0 && (
+                                   <Box mt={0.5}>
+                                     Так как ваша угроза
+                                     {progressionPercentage < 0
+                                       ? ' выше '
+                                       : ' ниже '}
+                                     той, на которой вы должны быть, вы получаете
+                                     <Box
+                                       as="span"
+                                       color={
+                                         progressionPercentage < 0
+                                           ? 'red'
+                                           : 'green'
+                                       }
+                                       ml={1}
+                                       mr={1}
+                                     >
+                                       {progressionPercentage}%
+                                     </Box>
+                                     {progressionPercentage < 0
+                                       ? 'меньше'
+                                       : 'больше'}{' '}
+                                     угрозы каждую минуту
+                                   </Box>
+                                 )}
+                                 {dangerLevelsTooltip}
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +                          </Box>
++||||||| 7181e2f6237
++                          )) ||
++                          "Your current threat level. You are a killing machine and don't need to improve your threat level."
++=======
+                           )) ||
+                           'Ваш текущий уровень угрозы. Вы машина для убийств и не нуждаетесь в повышении уровня угрозы.'
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +                          <Tabs.Tab
 +                            style={{
 +                              overflow: 'hidden',
 +                              whiteSpace: 'nowrap',
 +                              textOverflow: 'ellipsis',
 +                            }}
 +                            icon="star-half-stroke"
 +                            selected={currentTab === 1}
 +                            onClick={() => this.setState({ currentTab: 1 })}
 +                          >
 +                            Secondary Objectives
 +                          </Tabs.Tab>
++||||||| 7181e2f6237
++                          <>
++                            <Tabs.Tab
++                              style={{
++                                overflow: 'hidden',
++                                whiteSpace: 'nowrap',
++                                textOverflow: 'ellipsis',
++                              }}
++                              icon="star"
++                              selected={currentTab === 0}
++                              onClick={() => this.setState({ currentTab: 0 })}
++                            >
++                              Primary Objectives
++                            </Tabs.Tab>
++                            <Tabs.Tab
++                              style={{
++                                overflow: 'hidden',
++                                whiteSpace: 'nowrap',
++                                textOverflow: 'ellipsis',
++                              }}
++                              icon="star-half-stroke"
++                              selected={currentTab === 1}
++                              onClick={() => this.setState({ currentTab: 1 })}
++                            >
++                              Secondary Objectives
++                            </Tabs.Tab>
++                          </>
++=======
+                           <>
+                             <Tabs.Tab
+                               style={{
+                                 overflow: 'hidden',
+                                 whiteSpace: 'nowrap',
+                                 textOverflow: 'ellipsis',
+                               }}
+                               icon="star"
+                               selected={currentTab === 0}
+                               onClick={() => this.setState({ currentTab: 0 })}
+                             >
+                               Основные задачи
+                             </Tabs.Tab>
+                             <Tabs.Tab
+                               style={{
+                                 overflow: 'hidden',
+                                 whiteSpace: 'nowrap',
+                                 textOverflow: 'ellipsis',
+                               }}
+                               icon="star-half-stroke"
+                               selected={currentTab === 1}
+                               onClick={() => this.setState({ currentTab: 1 })}
+                             >
+                               Дополнительные задачи
+                             </Tabs.Tab>
+                           </>
++>>>>>>> origin/translate
++<<<<<<< HEAD
 +                  {!!lockable && (
 +                    <Stack.Item>
 +                      <Button
 +                        lineHeight={2.5}
 +                        textAlign="center"
 +                        icon="lock"
 +                        color="transparent"
 +                        px={2}
 +                        onClick={() => act('lock')}
 +                      >
 +                        Lock
 +                      </Button>
 +                    </Stack.Item>
 +                  )}
 +                </Stack>
 +              </Section>
 +            </Stack.Item>
++||||||| 7181e2f6237
++                    {!!lockable && (
++                      <Stack.Item>
++                        <Button
++                          lineHeight={2.5}
++                          textAlign="center"
++                          icon="lock"
++                          color="transparent"
++                          px={2}
++                          onClick={() => act('lock')}
++                        >
++                          Lock
++                        </Button>
++                      </Stack.Item>
++                    )}
++                  </Stack>
++                </Section>
++              </Stack.Item>
++            )}
++=======
+                     {!!lockable && (
+                       <Stack.Item>
+                         <Button
+                           lineHeight={2.5}
+                           textAlign="center"
+                           icon="lock"
+                           color="transparent"
+                           px={2}
+                           onClick={() => act('lock')}
+                         >
+                           Заблокировать
+                         </Button>
+                       </Stack.Item>
+                     )}
+                   </Stack>
+                 </Section>
+               </Stack.Item>
+             )}
++>>>>>>> origin/translate

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

Successfully merging this pull request may close these issues.