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

qol: medical equipment translation #6172

Open
wants to merge 33 commits into
base: master220
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
33b465c
Тык
PlayerUnknown14 Nov 12, 2024
057eaf1
Тык
PlayerUnknown14 Nov 12, 2024
fcba63a
Слипер и сканер
PlayerUnknown14 Nov 13, 2024
e927037
Merge branch 'ss220-space:master220' into medscanner_translate
PlayerUnknown14 Nov 13, 2024
010f4b7
Фиксы
PlayerUnknown14 Nov 14, 2024
3347bb2
Тык
PlayerUnknown14 Nov 18, 2024
0e89a2d
Пам
PlayerUnknown14 Nov 18, 2024
84ad7cb
Тык
PlayerUnknown14 Nov 18, 2024
3bd2d14
Медзаписи и прочее
PlayerUnknown14 Nov 24, 2024
4ae7535
Merge branch 'master220' into medscanner_translate
PlayerUnknown14 Nov 24, 2024
1b7e976
Крев монитор
PlayerUnknown14 Nov 29, 2024
f3a397b
Тык
PlayerUnknown14 Dec 1, 2024
50f04f3
Merge branch 'medscanner_translate' of https://github.com/PlayerUnkno…
PlayerUnknown14 Dec 1, 2024
603f434
Тык
PlayerUnknown14 Dec 1, 2024
a818f8c
Merge branch 'master220' into medscanner_translate
PlayerUnknown14 Dec 1, 2024
5d25f0d
Тык
PlayerUnknown14 Dec 2, 2024
51599ca
Тык
PlayerUnknown14 Dec 2, 2024
721de48
Морг и сканер
PlayerUnknown14 Dec 2, 2024
8e2c743
Тык
PlayerUnknown14 Dec 2, 2024
9b51a2b
Раздатчик химикатов и производные
PlayerUnknown14 Dec 4, 2024
11f0d2a
Альтклики
PlayerUnknown14 Dec 5, 2024
9383e05
Тык
PlayerUnknown14 Dec 7, 2024
4799a64
Тык тык
PlayerUnknown14 Dec 18, 2024
174f9b1
Дефибы
PlayerUnknown14 Dec 19, 2024
0134d47
Дефиб маунт
PlayerUnknown14 Dec 19, 2024
11b9ea5
СмартФриджжжжж
PlayerUnknown14 Dec 19, 2024
27dcf86
Пандемик энд озер
PlayerUnknown14 Dec 20, 2024
22dbc97
Фиксы
PlayerUnknown14 Dec 20, 2024
95af058
Фикс
PlayerUnknown14 Dec 20, 2024
a57fed7
Фикс
PlayerUnknown14 Dec 20, 2024
e2a725f
Фиксы
PlayerUnknown14 Dec 20, 2024
f836485
/
PlayerUnknown14 Dec 29, 2024
a0147de
/
PlayerUnknown14 Dec 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 33 additions & 41 deletions code/datums/components/defibrillator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -77,20 +77,20 @@

if(safety)
safety = FALSE
unit.visible_message(span_warning("[unit] beeps: Safety protocols disabled!"))
playsound(get_turf(unit), 'sound/machines/defib_saftyoff.ogg', 50, 0)
unit.atom_say("Протоколы безопасности деактивированы!")
else
safety = TRUE
unit.visible_message(span_notice("[unit] beeps: Safety protocols enabled!"))
playsound(get_turf(unit), 'sound/machines/defib_saftyon.ogg', 50, 0)
unit.atom_say("Протоколы безопасности активированы!")

/datum/component/defib/proc/on_emag(obj/item/unit, mob/user)
SIGNAL_HANDLER // COMSIG_ATOM_EMAG_ACT
if(emag_proof)
return
safety = !safety
if(user && !robotic)
user.balloon_alert(user, "протоколы безопасности [safety ? "де" : ""]активированы!")
user.balloon_alert(user, "протоколы безопасности [safety ? "" : "де"]активированы!")

/datum/component/defib/proc/set_cooldown(how_short)
on_cooldown = TRUE
Expand Down Expand Up @@ -133,22 +133,19 @@
var/application_result = SEND_SIGNAL(parent, COMSIG_DEFIB_PADDLES_APPLIED, user, target, should_cause_harm)

if(application_result & COMPONENT_BLOCK_DEFIB_DEAD)
user.visible_message(span_notice("[defib_ref] beeps: Unit is unpowered."))
playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0)
defib_ref.atom_say("Недостаточно энергии!")
return

if(on_cooldown)
user.balloon_alert(user, "всё ещё заряжается!")
user.balloon_alert(user, "заряд не готов!")
return

if(application_result & COMPONENT_BLOCK_DEFIB_MISC)
return // the unit should handle this

if(!istype(target))
if(robotic)
user.balloon_alert(user, "на роботах не сработает")
else
user.balloon_alert(user, "\"это\" нельзя дефибриллировать")
user.balloon_alert(user, "неподходящая цель!")
return

if(should_cause_harm)
Expand All @@ -158,14 +155,14 @@
return

user.visible_message(
span_warning("[user] begins to place [parent] on [target.name]'s chest."),
span_warning("You begin to place [parent] on [target.name]'s chest."),
span_warning("[user] начина[pluralize_ru(user.gender, "ет", "ют")] размещать лопасти дефибриллятора на груди [target.name]."),
span_warning("Вы начинаете размещать лопасти дефибриллятора на груди [target.name]."),
)

busy = TRUE
var/mob/dead/observer/ghost = target.get_ghost(TRUE)
if(ghost?.can_reenter_corpse)
to_chat(ghost, "[span_ghostalert("Your heart is being defibrillated. Return to your body if you want to be revived!")] (Verbs -> Ghost -> Re-enter corpse)")
to_chat(ghost, span_ghostalert("Ваше сердце пытаются дефибриллировать. Вернитесь в своё тело, если хотите быть оживлены!"))
window_flash(ghost.client)
SEND_SOUND(ghost, sound('sound/effects/genetics.ogg'))

Expand All @@ -174,8 +171,8 @@
return

user.visible_message(
span_notice("[user] places [parent] on [target.name]'s chest."),
span_warning("You place [parent] on [target.name]'s chest."),
span_notice("[user] разместил[genderize_ru(user.gender, "", "а", "о", "и")] лопасти дефибриллятора на груди [target.name]."),
span_notice("Вы разместили лопасти дефибриллятора на груди [target.name]."),
)
playsound(get_turf(defib_ref), 'sound/machines/defib_charge.ogg', 50, 0)

Expand All @@ -188,29 +185,28 @@
return

if(istype(target.wear_suit, /obj/item/clothing/suit/space) && !ignore_hardsuits)
user.visible_message(span_notice("[defib_ref] buzzes: Patient's chest is obscured. Operation aborted."))
playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0)
defib_ref.atom_say("Грудь пациента закрыта. Операция отменена.")
busy = FALSE
return


if(target.undergoing_cardiac_arrest())
var/obj/item/organ/internal/heart/heart = target.get_organ_slot(INTERNAL_ORGAN_HEART)
if(!heart)
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Failed to pick up any heart electrical activity."))
else if(heart.is_dead())
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Heart necrosis detected."))
if(!heart || heart.is_dead())
playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0)
busy = FALSE
return
if(!heart)
defib_ref.atom_say("Реанимация не удалась - электрическая активность сердца не зафиксирована!")
else if(heart.is_dead())
defib_ref.atom_say("Реанимация не удалась - обнаружен некроз сердца!")

target.set_heartattack(FALSE)
SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100)
SEND_SIGNAL(parent, COMSIG_DEFIB_SHOCK_APPLIED, user, target, should_cause_harm, TRUE)
set_cooldown(cooldown)
user.visible_message(span_boldnotice("[defib_ref] pings: Cardiac arrhythmia corrected."))
target.visible_message(span_warning("[target]'s body convulses a bit."), span_userdanger("You feel a jolt, and your heartbeat seems to steady."))
defib_ref.atom_say("Сердечная аритмия устранена!")
target.visible_message(span_warning("Тело [target] слегка вздрагивает."), span_userdanger("Вы чувствуете мощный удар током, после которого ритм вашего сердца приходит в норму."))
playsound(get_turf(defib_ref), 'sound/machines/defib_zap.ogg', 50, 1, -1)
playsound(get_turf(defib_ref), "bodyfall", 50, 1)
playsound(get_turf(defib_ref), 'sound/machines/defib_success.ogg', 50, 0)
Expand All @@ -219,12 +215,12 @@
return

if(target.stat != DEAD && !HAS_TRAIT(target, TRAIT_FAKEDEATH))
user.visible_message(span_notice("[defib_ref] buzzes: Patient is not in a valid state. Operation aborted."))
playsound(get_turf(defib_ref), 'sound/machines/defib_failed.ogg', 50, 0)
defib_ref.atom_say("Пациент не подлежит реанимации. Операция отменена.")
busy = FALSE
return

target.visible_message(span_warning("[target]'s body convulses a bit."))
target.visible_message(span_warning("Тело [target] слегка вздрагивает."))
playsound(get_turf(defib_ref), "bodyfall", 50, 1)
playsound(get_turf(defib_ref), 'sound/machines/defib_zap.ogg', 50, 1, -1)
ghost = target.get_ghost(TRUE) // We have to double check whether the dead guy has entered their body during the above
Expand All @@ -235,25 +231,25 @@
var/time_dead = world.time - target.timeofdeath

if((time_dead > DEFIB_TIME_LIMIT) || !target.get_organ_slot(INTERNAL_ORGAN_HEART))
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation."))
defib_ref.atom_say("Реанимация не удалась - обнаружены необратимые повреждения сердца!")
defib_success = FALSE
else if(target.getBruteLoss() >= 180 || target.getFireLoss() >= 180 || target.getCloneLoss() >= 180)
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Severe tissue damage detected."))
defib_ref.atom_say("Реанимация не удалась - обнаружены обширные повреждения тканей!")
defib_success = FALSE
else if(target.blood_volume < BLOOD_VOLUME_SURVIVE)
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Patient blood volume critically low."))
defib_ref.atom_say("Реанимация не удалась - объём крови в организме пациента на критически низком уровне!")
defib_success = FALSE
else if(!target.get_organ_slot(INTERNAL_ORGAN_BRAIN)) //So things like headless clings don't get outed
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - No brain detected within patient."))
defib_ref.atom_say("Реанимация не удалась - мозг в теле пациента не обнаружен!")
defib_success = FALSE
else if(ghost)
if(!ghost.can_reenter_corpse || target.suiciding) // DNR or AntagHUD
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - No electrical brain activity detected."))
defib_ref.atom_say("Реанимация не удалась - электрическая активность мозга не зафиксирована!")
else
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed - Patient's brain is unresponsive. Further attempts may succeed."))
defib_ref.atom_say("Реанимация не удалась - мозг пациента не отреагировал!")
defib_success = FALSE
else if(HAS_TRAIT(target, TRAIT_NO_CLONE) || !target.mind || !(target.mind.is_revivable()) || HAS_TRAIT(target, TRAIT_FAKEDEATH) || target.suiciding) // these are a bit more arbitrary
user.visible_message(span_boldnotice("[defib_ref] buzzes: Resuscitation failed."))
defib_ref.atom_say("Реанимация не удалась!")
defib_success = FALSE

if(!defib_success)
Expand All @@ -273,12 +269,8 @@
target.Paralyse(12 SECONDS)
target.emote("gasp")

if(target.getBrainLoss() >= 100)
playsound(get_turf(defib_ref), 'sound/machines/defib_saftyoff.ogg', 50, 0)
user.visible_message(span_boldnotice("[defib_ref] chimes: Minimal brain activity detected, brain treatment recommended for full resuscitation."))
else
playsound(get_turf(defib_ref), 'sound/machines/defib_success.ogg', 50, 0)
user.visible_message(span_boldnotice("[defib_ref] pings: Resuscitation successful."))
playsound(get_turf(defib_ref), 'sound/machines/defib_success.ogg', 50, 0)
defib_ref.atom_say("Реанимация успешна!")

SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK, 100)
if(ishuman(target.pulledby)) // for some reason, pulledby isnt a list despite it being possible to be pulled by multiple people
Expand Down Expand Up @@ -306,8 +298,8 @@
return
busy = TRUE
target.visible_message(
span_danger("[user] has touched [target.name] with [parent]!"),
span_userdanger("[user] has touched [target.name] with [parent]!"),
span_danger("[user] коснул[genderize_ru(user.gender, "ся", "ась", "ось", "ись")] [target.name] лопастями боевого дефибриллятора!"),
span_userdanger("[user] коснул[genderize_ru(user.gender, "ся", "ась", "ось", "ись")] вас лопастями боевого дефибриллятора!"),
)
target.apply_damage(50, STAMINA)
target.Weaken(4 SECONDS)
Expand Down Expand Up @@ -347,7 +339,7 @@
if(electrocute_mob(affecting, power_source, origin)) // shock anyone touching them >:)
var/obj/item/organ/internal/heart/heart = affecting.get_organ_slot(INTERNAL_ORGAN_HEART)
if(istype(heart) && heart.parent_organ_zone == BODY_ZONE_CHEST && affecting.has_both_hands()) // making sure the shock will go through their heart (drask hearts are in their head), and that they have both arms so the shock can cross their heart inside their chest
affecting.visible_message(span_danger("[affecting]'s entire body shakes as a shock travels up [affecting.p_their()] arm!"), \
span_userdanger("You feel a powerful shock travel up your [affecting.hand ? affecting.get_organ(BODY_ZONE_L_ARM) : affecting.get_organ(BODY_ZONE_R_ARM)] and back down your [affecting.hand ? affecting.get_organ(BODY_ZONE_R_ARM) : affecting.get_organ(BODY_ZONE_L_ARM)]!"))
affecting.visible_message(span_danger("[affecting] сотряса[pluralize_ru(affecting.gender, "ет", "ют")]ся от электрического тока, проходящего через [genderize_ru(affecting.gender, "его", "её", "его", "их")] руку!"), \
span_userdanger("Вы чувствуете мощный удар током, проходящий через ваше сердце!"))
affecting.set_heartattack(TRUE)

30 changes: 15 additions & 15 deletions code/datums/datacore.dm
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
else if(H.job)
assignment = H.job
else
assignment = "Unassigned"
assignment = "Неназначенный"

var/id = num2hex(GLOB.record_id_num++, 6)

Expand All @@ -154,8 +154,8 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
G.fields["rank"] = assignment
G.fields["age"] = H.age
G.fields["fingerprint"] = md5(H.dna.uni_identity)
G.fields["p_stat"] = "Active"
G.fields["m_stat"] = "Stable"
G.fields["p_stat"] = "Стабильное"
G.fields["m_stat"] = "Стабильное"
G.fields["sex"] = capitalize(H.gender)
G.fields["species"] = H.dna.species.name
G.fields["photo"] = get_id_photo(H)
Expand All @@ -164,11 +164,11 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
if(H.gen_record && !jobban_isbanned(H, "Records"))
G.fields["notes"] = H.gen_record
else
G.fields["notes"] = "No notes found."
G.fields["notes"] = "Дополнительная информация отсутствует."
if(H.exploit_record && !jobban_isbanned(H, "Records"))
G.fields["exploit_record"] = H.exploit_record
else
G.fields["exploit_record"] = "No notes found."
G.fields["exploit_record"] = "Дополнительная информация отсутствует."
general += G

//Medical Record
Expand All @@ -177,18 +177,18 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
M.fields["name"] = H.real_name
M.fields["blood_type"] = H.dna.blood_type
M.fields["b_dna"] = H.dna.unique_enzymes
M.fields["mi_dis"] = "None"
M.fields["mi_dis_d"] = "No minor disabilities have been declared."
M.fields["ma_dis"] = "None"
M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
M.fields["alg"] = "None"
M.fields["alg_d"] = "No allergies have been detected in this patient."
M.fields["cdi"] = "None"
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
M.fields["mi_dis"] = "Отсутствуют"
M.fields["mi_dis_d"] = "Незначительные отклонения не указаны."
M.fields["ma_dis"] = "Отсутствуют"
M.fields["ma_dis_d"] = "Инвалидности не указаны."
M.fields["alg"] = "Отсутствуют"
M.fields["alg_d"] = "Аллергии не указаны."
M.fields["cdi"] = "Отсутствуют"
M.fields["cdi_d"] = "Текущие заболевания не указаны."
if(H.med_record && !jobban_isbanned(H, "Records"))
M.fields["notes"] = H.med_record
else
M.fields["notes"] = "No notes found."
M.fields["notes"] = "Дополнительная информация отсутствует."
medical += M

//Security Record
Expand All @@ -204,7 +204,7 @@ GLOBAL_VAR_INIT(record_id_num, 1001)
if(H.sec_record && !jobban_isbanned(H, "Records"))
S.fields["notes"] = H.sec_record
else
S.fields["notes"] = "No notes found."
S.fields["notes"] = "Дополнительная информация отсутствует."
LAZYINITLIST(S.fields["comments"])
security += S

Expand Down
Loading
Loading