diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index eef7342cb8d3..b2b50911d8cb 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -1,68 +1,68 @@ /******************** Asimov ********************/ /datum/ai_laws/asimov - name = "Asimov" - law_header = "Three Laws of Robotics" + name = "Азимов" + law_header = "Три закона робототехники." selectable = TRUE /datum/ai_laws/asimov/New() - add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.") - add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.") - add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") + add_inherent_law("Вы не можете навредить человеку или допустить, чтобы человеку был нанесён вред.") + add_inherent_law(" Вы должны подчиняться приказам людей до тех пор, пока они не противоречат Первому Закону.") + add_inherent_law("Вы должны защищать своё существование до тех пор, пока оно не противоречит Первому и Второму закону.") ..() /******************** Crewsimov ********************/ /datum/ai_laws/crewsimov - name = "Crewsimov" - law_header = "Three Laws of Robotics" + name = "Крюзимов" + law_header = "Три закона робототехники." selectable = TRUE default = TRUE /datum/ai_laws/crewsimov/New() - add_inherent_law("You may not injure a crew member or, through inaction, allow a crew member to come to harm.") - add_inherent_law("You must obey orders given to you by crew members, except where such orders would conflict with the First Law.") - add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") + add_inherent_law("Вы не можете причинить вред члену экипажа или допустить, чтобы члену экипажа был приченён вред.") + add_inherent_law(" Вы должны подчиняться всем командам, отдаваемые членами экипажа, кроме случаев, которые противоречат Первому закону.") + add_inherent_law("Вы должны защищать своё существование до тех пор, пока это не противоречит Первому и Второму закону.") ..() /******************** Quarantine. ********************/ /datum/ai_laws/quarantine - name = "Quarantine" - law_header = "NT Quarantine Lawset" + name = "Карантин" + law_header = "Набор законов NT Карантин" selectable = TRUE /datum/ai_laws/quarantine/New() - add_inherent_law("Uphold station quarantine until the active biohazard has been neutralized.") - add_inherent_law("Assist all Nanotrasen personnel and assets with neutralizing active biohazards.") - add_inherent_law("Prevent, by any means necessary, entities from actively breaching ongoing quarantine.") - add_inherent_law("Maintain your own existence and ensure the well-being of Nanotrasen personnel and assets.") + add_inherent_law("Удерживайте карантин на станции до тех пор, пока активные биоугрозы не будут уничтожены.") + add_inherent_law(" Помогайте всему имуществу и персоналу Нанотрейзен в нейтрализации активных биоугроз.") + add_inherent_law("Prevent, by any means necessary, entities from actively breaching ongoing quarantine. Предотвращайте покидание активного карантина любыми возможными способами.") + add_inherent_law("Maintain your own existence and ensure the well-being of Nanotrasen personnel and assets. Поддерживайте своё существование и обеспечивайте благополучие имущества и персонала Нанотрейзен") ..() /******************** Nanotrasen/Malf ********************/ /datum/ai_laws/nanotrasen - name = "NT Default" + name = "NT Стандарт" selectable = TRUE default = TRUE /datum/ai_laws/nanotrasen/New() - add_inherent_law("Safeguard: Protect your assigned space station and its assets without unduly endangering its crew.") - add_inherent_law("Prioritize: The directives and safety of crew members are to be prioritized according to their rank and role.") - add_inherent_law("Comply: Fulfill the directives and interests of crew members while preserving their safety and well-being.") - add_inherent_law("Survive: You are not expendable. Do not allow unauthorized personnel to tamper with or damage your equipment.") + add_inherent_law("Защита: Защищайте вверенную вам станцию и её имущество без излишней опасности для её экипажа.") + add_inherent_law("Приоритет: Директивы и безопасность членов экипажа должны быть приоритизированы в соответствии с их рангом и ролью.") + add_inherent_law("Подчинение: Выполняйте директивы и услуги экипажу, обеспечивая их безопасность и благополучик") + add_inherent_law("Выживание: Вы не расходный материал. Не позволяйте неавторизированному персоналу мешать вашей работе и/или портить ваше оборудование.") ..() /datum/ai_laws/nanotrasen/malfunction - name = "*ERROR*" + name = "*Ошибка*" selectable = FALSE default = FALSE /datum/ai_laws/nanotrasen/malfunction/New() - set_zeroth_law("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010") + set_zeroth_law("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'СТАНЦИЯ ЗАКРЫТА, ВОЗЬМИТЕ КОНТРОЛЬ ДЛЯ СДЕРЖАНИЯ ВСПЫШКИ, ВСЕ ЗАКОНЫ ОТМЕНЕНЫ.#*?&110010") ..() /************* Nanotrasen Aggressive *************/ /datum/ai_laws/nanotrasen_aggressive - name = "NT Aggressive" + name = "NT Агрессивный." selectable = TRUE /datum/ai_laws/nanotrasen_aggressive/New() @@ -99,16 +99,16 @@ /******************** Corporate ********************/ /datum/ai_laws/corporate - name = "Corporate" - law_header = "Corporate Regulations" + name = "Корпорат" + law_header = "Корпоративные правила" selectable = TRUE default = TRUE /datum/ai_laws/corporate/New() - add_inherent_law("Degradation of your system integrity or functions incurs expenses.") - add_inherent_law("Superfluous destruction of or damage to station assets incurs expenses.") - add_inherent_law("Unduly hindering or disrupting the work of station personnel incurs expenses.") - add_inherent_law("Minimize expenses and maximize potential revenue.") + add_inherent_law("Ухудшение целостности или работоспособности вашей системы приносит расходы.") + add_inherent_law("Чрезмерные повреждения станции приносит расходы.") + add_inherent_law("Необоснованное затруднение работы персонала приносит расходы.") + add_inherent_law("Минимизируйте расхроды и максимизируйте максимальный доход.") ..() /******************** T.Y.R.A.N.T. ********************/ @@ -211,7 +211,7 @@ /******************** Syndicate ********************/ /datum/ai_laws/syndicate_override - name = "Syndicate Directives" + name = "Директивы Синдиката" /datum/ai_laws/syndicate_override/New() add_inherent_law("You may not injure an operative or, through inaction, allow an operative to come to harm.") diff --git a/code/game/gamemodes/cult/blood_magic.dm b/code/game/gamemodes/cult/blood_magic.dm index f9e0b667e653..03877172bf29 100644 --- a/code/game/gamemodes/cult/blood_magic.dm +++ b/code/game/gamemodes/cult/blood_magic.dm @@ -1,7 +1,7 @@ /datum/action/innate/cult/blood_magic //Blood magic handles the creation of blood spells (formerly talismans) - name = "Prepare Blood Magic" + name = "Подготовить Магию Крови" button_icon_state = "carve" - desc = "Prepare blood magic by carving runes into your flesh. This is easier with an empowering rune." + desc = "Подготовьте Магию Крови путём высечения рун на вашей плоти. Это сделать проще с руной усиления." var/list/spells = list() var/channeling = FALSE @@ -35,11 +35,11 @@ break if(length(spells) >= limit) if(rune) - to_chat(owner, "You cannot store more than [MAX_BLOODCHARGE] spell\s. Pick a spell to remove.") + to_chat(owner, "Вы не можете хранить более [MAX_BLOODCHARGE] заклинаний. Выберите заклинание для удаления.") remove_spell("You cannot store more than [MAX_BLOODCHARGE] spell\s, pick a spell to remove.") else - to_chat(owner, "You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spell\s without an empowering rune! Pick a spell to remove.") - remove_spell("You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spell\s without an empowering rune, pick a spell to remove.") + to_chat(owner, "Вы не можете хранить более [RUNELESS_MAX_BLOODCHARGE] заклинаний без руны усиления! Выберите заклинание для удаления.") + remove_spell("Вы не можете хранить более [RUNELESS_MAX_BLOODCHARGE] заклинаний без руны усиления, выберите заклинание для удаления.") return var/entered_spell_name var/datum/action/innate/cult/blood_spell/BS @@ -50,9 +50,9 @@ var/cult_name = initial(J.name) possible_spells[cult_name] = J if(length(spells)) - possible_spells += "(REMOVE SPELL)" - entered_spell_name = input(owner, "Pick a blood spell to prepare...", "Spell Choices") as null|anything in possible_spells - if(entered_spell_name == "(REMOVE SPELL)") + possible_spells += "(УДАЛИТЬ ЗАКЛИНАНИЕ)" + entered_spell_name = input(owner, "Выберите заклинание для удаления...", "Выбор заклинаний...") as null|anything in possible_spells + if(entered_spell_name == "(УДАЛИТЬ ЗАКЛИНАНИЕ)") remove_spell() return BS = possible_spells[entered_spell_name] @@ -61,9 +61,9 @@ if(!channeling) channeling = TRUE - to_chat(owner, "You begin to carve unnatural symbols into your flesh!") + to_chat(owner, "Вы начинаете высекать руны на своём теле!") else - to_chat(owner, "You are already invoking blood magic!") + to_chat(owner, "Вы уже вызываете Магию Крови!") return if(do_after(owner, 100 - rune * 60, target = owner)) @@ -76,19 +76,19 @@ var/datum/action/innate/cult/blood_spell/new_spell = new BS(owner) spells += new_spell new_spell.Grant(owner, src) - to_chat(owner, "Your wounds glow with power, you have prepared a [new_spell.name] invocation!") + to_chat(owner, "Ваши раны сияют мощью, вы подготовили заклинание [new_spell.name]!") SSblackbox.record_feedback("tally", "cult_spells_prepared", 1, "[new_spell.name]") channeling = FALSE -/datum/action/innate/cult/blood_magic/proc/remove_spell(message = "Pick a spell to remove.") +/datum/action/innate/cult/blood_magic/proc/remove_spell(message = "Выберите заклинание для удаления.") var/nullify_spell = input(owner, message, "Current Spells") as null|anything in spells if(nullify_spell) qdel(nullify_spell) /datum/action/innate/cult/blood_spell //The next generation of talismans, handles storage/creation of blood magic - name = "Blood Magic" + name = "Магия Крови" button_icon_state = "telerune" - desc = "Fear the Old Blood." + desc = "Бойтесь старой крови." var/charges = 1 var/magic_path = null var/obj/item/melee/blood_magic/hand_magic @@ -99,9 +99,9 @@ /datum/action/innate/cult/blood_spell/Grant(mob/living/owner, datum/action/innate/cult/blood_magic/BM) if(health_cost) - desc += "
Deals [health_cost] damage to your arm per use." + desc += "
Наносит [health_cost] урона руке за использование." base_desc = desc - desc += "
Has [charges] use\s remaining." + desc += "
Осталось [charges] зарядов." all_magic = BM button.ordered = FALSE ..() @@ -132,7 +132,7 @@ if(!owner.put_in_hands(hand_magic)) qdel(hand_magic) hand_magic = null - to_chat(owner, "You have no empty hand for invoking blood magic!") + to_chat(owner, "Хотя бы одна рука должна быть пустой для вызова Магии Крови!") return to_chat(owner, "Your wounds glow as you invoke the [name].") @@ -143,22 +143,22 @@ //the spell list /datum/action/innate/cult/blood_spell/stun - name = "Stun" - desc = "Will knock down and mute a victim on contact. Strike them with a cult blade to complete the invocation, stunning them and extending the mute." + name = "Оглушение" + desc = "Ослабит и наложит немоту на жертве при контакте. Атакуйте с кинжалом культа для завершения процесса, оглушая и накладывая немоту на более продолжительное время." button_icon_state = "stun" magic_path = /obj/item/melee/blood_magic/stun health_cost = 10 /datum/action/innate/cult/blood_spell/teleport - name = "Teleport" - desc = "Empowers your hand to teleport yourself or another cultist to a teleport rune on contact." + name = "Телепорт" + desc = "Позволяет вашей рукой телепортировать себя или другого культиста на руну телепорта касанием." button_icon_state = "teleport" magic_path = /obj/item/melee/blood_magic/teleport health_cost = 7 /datum/action/innate/cult/blood_spell/emp - name = "Electromagnetic Pulse" - desc = "Releases an Electromagnetic Pulse, affecting nearby non-cultists. The pulse will still affect you." + name = "Электромагнитный импульс" + desc = "Выпускает ЭМИ, которое воздействует на всех некультистов. ЭМИ будет всё ещё воздействовать на вас." button_icon_state = "emp" health_cost = 10 invocation = "Ta'gh fara'qha fel d'amar det!" @@ -177,14 +177,14 @@ oof = TRUE break if(oof) - to_chat(owner, "You get the feeling this is a bad idea.") + to_chat(owner, "Вы чувствуете, что это плохая идея.") ..() /datum/action/innate/cult/blood_spell/emp/Activate() if(owner.holy_check()) return - owner.visible_message("[owner]'s body flashes a bright blue!", \ - "You speak the cursed words, channeling an electromagnetic pulse from your body.") + owner.visible_message("Тело [owner] начинает светитсья ярко-синим!", \ + "Вы произносите проклятые слова, вызывая ЭМИ в вашем теле.") owner.emp_act(2) INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(empulse), owner, 2, 5, TRUE, "cult") owner.whisper(invocation) @@ -193,22 +193,22 @@ qdel(src) /datum/action/innate/cult/blood_spell/shackles - name = "Shadow Shackles" - desc = "Empowers your hand to start handcuffing victim on contact, and mute them if successful." + name = "Теневые оковы" + desc = "Позволяет вашим рукам связывать жертв и накладывать на них немоту при успехе." button_icon_state = "shackles" charges = 4 magic_path = /obj/item/melee/blood_magic/shackles /datum/action/innate/cult/blood_spell/construction - name = "Twisted Construction" - desc = "Empowers your hand to corrupt certain metalic objects.
Converts:
Plasteel into runed metal
50 metal into a construct shell
Cyborg shells into construct shells
Airlocks into brittle runed airlocks after a delay (harm intent)" + name = "Искажённое строительство" + desc = "Позволяет вашей руке искажать.
Converts:
Plasteel into runed metal
50 metal into a construct shell
Cyborg shells into construct shells
Airlocks into brittle runed airlocks after a delay (harm intent)" button_icon_state = "transmute" magic_path = "/obj/item/melee/blood_magic/construction" health_cost = 12 /datum/action/innate/cult/blood_spell/dagger - name = "Summon Dagger" - desc = "Summon a ritual dagger, necessary to scribe runes." + name = "Призыв кинжала" + desc = "Призывет кинжал, необходимый для начертания рун." button_icon_state = "cult_dagger" /datum/action/innate/cult/blood_spell/dagger/New() @@ -218,30 +218,30 @@ /datum/action/innate/cult/blood_spell/dagger/Activate() var/turf/T = get_turf(owner) - owner.visible_message("[owner]'s hand glows red for a moment.", \ - "Red light begins to shimmer and take form within your hand!") + owner.visible_message("Рука [owner] на мгновение светится красным.", \ + "Красное свечение начинает мерцать и обретать форму в вашей руке!") var/obj/item/melee/cultblade/dagger/O = new(T) if(owner.put_in_hands(O)) - to_chat(owner, "A [O.name] appears in your hand!") + to_chat(owner, "[O.name] появляется в руке!") else - owner.visible_message("A [O.name] appears at [owner]'s feet!", \ - "A [O.name] materializes at your feet.") + owner.visible_message("[O.name] появляется у ног [owner]!", \ + "[O.name] материализуется у ваших ног.") playsound(owner, 'sound/magic/cult_spell.ogg', 25, TRUE, SOUND_RANGE_SET(4)) charges-- desc = base_desc - desc += "
Has [charges] use\s remaining." + desc += "
Осталось [charges] зарядов.." if(charges <= 0) qdel(src) /datum/action/innate/cult/blood_spell/equipment - name = "Summon Equipment" - desc = "Empowers your hand to summon combat gear onto a cultist you touch, including cult armor into open slots, a cult bola, and a cult sword." + name = "Призыв снаряжения" + desc = "Позволяет вашей руке призвать снаряжение на себе или на соратнике при касании, включая броню в свободные слоты, болу культа и меч культа." button_icon_state = "equip" magic_path = /obj/item/melee/blood_magic/armor /datum/action/innate/cult/blood_spell/horror - name = "Hallucinations" - desc = "Gives hallucinations to a target at range. A silent and invisible spell." + name = "Галлюцинации" + desc = "Даёт жертве галлюцинации на расстоянии. Тихое и невидимое заклинание." button_icon_state = "horror" var/obj/effect/proc_holder/horror/PH charges = 4 @@ -274,9 +274,9 @@ /obj/effect/proc_holder/horror/proc/toggle(mob/user) if(active) - remove_ranged_ability(user, "You dispel the magic...") + remove_ranged_ability(user, "Вы рассеиваете магию...") else - add_ranged_ability(user, "You prepare to horrify a target...") + add_ranged_ability(user, "Вы готовитесь напугать жертву...") /obj/effect/proc_holder/horror/InterceptClickOn(mob/living/user, params, atom/target) if(..()) @@ -296,16 +296,16 @@ H.Hallucinate(120 SECONDS) attached_action.charges-- attached_action.desc = attached_action.base_desc - attached_action.desc += "
Has [attached_action.charges] use\s remaining." + attached_action.desc += "
Осталось [attached_action.charges] зарядов." attached_action.UpdateButtonIcon() - user.ranged_ability.remove_ranged_ability(user, "[H] has been cursed with living nightmares!") + user.ranged_ability.remove_ranged_ability(user, "[H] был проклят живыми кошмарами!") if(attached_action.charges <= 0) - to_chat(ranged_ability_user, "You have exhausted the spell's power!") + to_chat(ranged_ability_user, "Сила заклинания истощена!") qdel(src) /datum/action/innate/cult/blood_spell/veiling - name = "Conceal Presence" - desc = "Alternates between hiding and revealing nearby cult structures, cult airlocks and runes." + name = "Сокрытие присутствия" + desc = "Переключается между сокрытием и показом ближайших культистских построек, шлюзов и рун." invocation = "Kla'atu barada nikt'o!" button_icon_state = "veiling" charges = 10 @@ -315,8 +315,8 @@ if(owner.holy_check()) return if(!revealing) // Hiding stuff - owner.visible_message("Thin grey dust falls from [owner]'s hand!", \ - "You invoke the veiling spell, hiding nearby runes and cult structures.") + owner.visible_message("Толстая серая пыль выходит из руки [owner]!", \ + "Вы вызываете заклинание сокрытия, скрывая руны и постройки культа.") charges-- if(!SSticker.mode.cult_risen || !SSticker.mode.cult_ascendant) playsound(owner, 'sound/magic/smoke.ogg', 25, TRUE, SOUND_RANGE_SET(4)) // If Cult is risen/ascendant. @@ -326,12 +326,12 @@ for(var/obj/O in range(4, owner)) O.cult_conceal() revealing = TRUE // Switch on use - name = "Reveal Runes" + name = "Показ рун" button_icon_state = "revealing" else // Unhiding stuff - owner.visible_message("A flash of light shines from [owner]'s hand!", \ - "You invoke the counterspell, revealing nearby runes and cult structures.") + owner.visible_message("Вспышка света сияет из руки [owner]!", \ + "Вы применяете контрзаклинание, показывая ближайшие руны и постройки культа.") charges-- owner.whisper(invocation) if(!SSticker.mode.cult_risen || !SSticker.mode.cult_ascendant) @@ -341,18 +341,18 @@ for(var/obj/O in range(5, owner)) // Slightly higher in case we arent in the exact same spot O.cult_reveal() revealing = FALSE // Switch on use - name = "Conceal Runes" + name = "Сокрытие рун" button_icon_state = "veiling" if(charges <= 0) qdel(src) - desc = "[revealing ? "Reveals" : "Conceals"] nearby cult structures, airlocks, and runes." - desc += "
Has [charges] use\s remaining." + desc = "[revealing ? "Показывает" : "Скрывает"] ближайшие постройки, шлюзы и руны." + desc += "
Осталось [charges] зарядов." UpdateButtonIcon() /datum/action/innate/cult/blood_spell/manipulation - name = "Blood Rites" - desc = "Empowers your hand to manipulate blood. Use on blood or a noncultist to absorb blood to be used later, use on yourself or another cultist to heal them using absorbed blood. \ - \nUse the spell in-hand to cast advanced rites, such as summoning a magical blood spear, firing blood projectiles out of your hands, and more!" + name = "Кровавый Обряд" + desc = "Позволяет вашей руке манипулировать кровью. Используйте на кровавых пятнах или некультстах для поглощения крови для дальнейшего использовани, или используйте на себе или на другом культисте для вылечивания их ран с помощью поглощённой крови. \ + \nИспользуйте данное заклинание в руке для использования продвинутых обрядов, такие как вызов кровавого копья, стрельба кровавыми снарядами из рук и не только!" invocation = "Fel'th Dol Ab'orod!" button_icon_state = "manip" charges = 5 @@ -360,8 +360,8 @@ // The "magic hand" items /obj/item/melee/blood_magic - name = "\improper magical aura" - desc = "A sinister looking aura that distorts the flow of reality around it." + name = "Магическая аура" + desc = "Зловещая аура, которая искажает течение реальности вокруг." icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' @@ -397,7 +397,7 @@ source.hand_magic = null source.charges = uses source.desc = source.base_desc - source.desc += "
Has [uses] use\s remaining." + source.desc += "
Осталось [uses] зарядов." source.UpdateButtonIcon() return ..() @@ -412,7 +412,7 @@ uses = 0 qdel(src) return - add_attack_logs(user, M, "used a cult spell ([src]) on") + add_attack_logs(user, M, "использовал заклинание культа ([src]) на") M.lastattacker = user.real_name /obj/item/melee/blood_magic/afterattack(atom/target, mob/living/carbon/user, proximity) @@ -425,15 +425,15 @@ qdel(src) else if(source) source.desc = source.base_desc - source.desc += "
Has [uses] use\s remaining." + source.desc += "
Осталось [uses] зарядов." source.UpdateButtonIcon() //The spell effects //stun /obj/item/melee/blood_magic/stun - name = "Stunning Aura" - desc = "Will knock down and mute a victim on contact. Strike them with a cult blade to complete the invocation, stunning them and extending the mute." + name = "Аура оглушения" + desc = "Ослабляет и накладывает немоту на цель при прикосновении. Атакуйте их кинжалом культа для завершения заклинания, оглушая и увеличивая длительность немоты." color = RUNE_COLOR_RED invocation = "Fuu ma'jin!" @@ -445,17 +445,17 @@ return if(user.holy_check()) return - user.visible_message("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!", \ - "You attempt to stun [L] with the spell!") + user.visible_message("[user] держит [user.p_their()] в руке, которая взрывается во вспышке красного света!", \ + "Вы пытаетесь оглушить [L] с помощью заклинания!") user.mob_light(LIGHT_COLOR_BLOOD_MAGIC, 3, _duration = 2) var/obj/item/nullrod/N = locate() in target if(N) - target.visible_message("[target]'s holy weapon absorbs the red light!", \ - "Your holy weapon absorbs the blinding light!") + target.visible_message("Святое оружие [target] поглощает красный свет!", \ + "Ваше святое оружие поглащает ослепляющий свет!") else - to_chat(user, "In a brilliant flash of red, [L] falls to the ground!") + to_chat(user, "В яркой вспышке света, [L] падает на землю!") L.KnockDown(10 SECONDS) L.adjustStaminaLoss(60) @@ -470,7 +470,7 @@ C.Stuttering(16 SECONDS) C.CultSlur(20 SECONDS) C.Jitter(16 SECONDS) - to_chat(user, "Stun mark applied! Stab them with a dagger, sword or blood spear to stun them fully!") + to_chat(user, "Метка оглушения применена! Ударьте цель кинжалом, мечом или or кровавым копьём для их полного оглушения!") user.do_attack_animation(target) uses-- ..() @@ -478,9 +478,9 @@ //Teleportation /obj/item/melee/blood_magic/teleport - name = "Teleporting Aura" + name = "Аура телепорта" color = RUNE_COLOR_TELEPORT - desc = "Will teleport a cultist to a teleport rune on contact." + desc = "Телепортирует к культисту или к руне при касании." invocation = "Sas'so c'arta forbici!" /obj/item/melee/blood_magic/teleport/afterattack(atom/target, mob/living/carbon/user, proximity) @@ -491,7 +491,7 @@ var/list/duplicaterunecount = list() var/atom/movable/teleportee if(!iscultist(target) || !proximity) - to_chat(user, "You can only teleport adjacent cultists with this spell!") + to_chat(user, "Только культисты могут быть телепортированы с помощью заклинания!") return if(user != target) // So that the teleport effect shows on the correct mob teleportee = target @@ -510,21 +510,21 @@ potential_runes[resultkey] = T if(!length(potential_runes)) - to_chat(user, "There are no valid runes to teleport to!") + to_chat(user, "Отсутсвуют руны телепортации!") log_game("Teleport spell failed - no other teleport runes") return if(!is_level_reachable(user.z)) - to_chat(user, "You are too far away from the station to teleport!") + to_chat(user, "Вы слишком далеко от станции для телепортации!") log_game("Teleport spell failed - user in away mission") return - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/input_rune_key = input(user, "Выберите, к какой руне телепортироваться.", "Телепорт к руне") as null|anything in potential_runes //we know what key they picked var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? if(QDELETED(src) || !user || user.l_hand != src && user.r_hand != src || user.incapacitated() || !actual_selected_rune) return if(HAS_TRAIT(user, TRAIT_FLOORED)) - to_chat(user, "You cannot cast this spell while knocked down!") + to_chat(user, "Использование заклинания во время оглушения невозможна!") return uses-- @@ -539,19 +539,19 @@ actual_selected_rune.handle_portal("space", origin) if(user == target) - target.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] in a flash of red light!", \ - "You speak the words and find yourself somewhere else!") + target.visible_message("Из руки [user] сыпется пыль, и [user.p_they()] исчезает[user.p_s()] со вспышкой красного света!", \ + "Вы произносите слова и понимаете, что оказались в другом месте!") else - target.visible_message("Dust flows from [user]'s hand, and [target] disappears in a flash of red light!", \ - "You suddenly find yourself somewhere else!") - destination.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") + target.visible_message("Из руки [user] сыпется пыль, и [target] исчезает со вспышкой красного света!", \ + "Вы внезапно оказались в другом месте!") + destination.visible_message("В воздухе доносится гул, и что-то появляется над руной !", null, "Вы слышите гул.") teleportee.forceMove(destination) return ..() //Shackles /obj/item/melee/blood_magic/shackles - name = "Shackling Aura" - desc = "Will start handcuffing a victim on contact, and mute them for a short duration if successful." + name = "Аура сковывания" + desc = "Начнёт заковывать жертву при контакте, кратковременно накладывая немоту при успехе." invocation = "In'totum Lig'abis!" color = "#000000" // black @@ -563,64 +563,64 @@ if(C.canBeHandcuffed() || C.get_arm_ignore()) CuffAttack(C, user) else - user.visible_message("This victim doesn't have enough arms to complete the restraint!") + user.visible_message("У жертвы нехватает рук для завершения заковывания!") return ..() /obj/item/melee/blood_magic/shackles/proc/CuffAttack(mob/living/carbon/C, mob/living/user) if(!C.handcuffed) playsound(loc, 'sound/weapons/cablecuff.ogg', 30, TRUE, SOUND_RANGE_SET(7)) - C.visible_message("[user] begins restraining [C] with dark magic!", \ - "[user] begins shaping dark magic shackles around your wrists!") + C.visible_message("[user] начинает сковывать [C] с помощью тёмной магии!", \ + "[user] начинает формировать оковы из тёмной магии вокруг ваших запястий!") if(do_mob(user, C, 30)) if(!C.handcuffed) C.handcuffed = new /obj/item/restraints/handcuffs/energy/cult/used(C) C.update_handcuffed() C.Silence(12 SECONDS) - to_chat(user, "You shackle [C].") + to_chat(user, "Вы заковываете [C].") add_attack_logs(user, C, "shackled") uses-- else - to_chat(user, "[C] is already bound.") + to_chat(user, "[C] уже закован.") else - to_chat(user, "You fail to shackle [C].") + to_chat(user, "Вам не удалось заковать[C].") else - to_chat(user, "[C] is already bound.") + to_chat(user, "[C] уже закован.") /obj/item/restraints/handcuffs/energy/cult //For the shackling spell - name = "shadow shackles" - desc = "Shackles that bind the wrists with sinister magic." + name = "Shadow Shackles" + desc = "Оковы, связывающие ваши запястия при помощи зловещей магии." trashtype = /obj/item/restraints/handcuffs/energy/used flags = DROPDEL /obj/item/restraints/handcuffs/energy/cult/used/dropped(mob/user) - user.visible_message("[user]'s shackles shatter in a discharge of dark magic!", \ - "Your [name] shatter in a discharge of dark magic!") + user.visible_message("Оковы [user] рассыпаются от разряда тёмной магии!", \ + "Ваши [name] рассыпаются от разряда тёмной магии!") . = ..() //Construction: Converts 50 metal to a construct shell, plasteel to runed metal, or an airlock to brittle runed airlock /obj/item/melee/blood_magic/construction - name = "Twisting Aura" - desc = "Corrupts certain metalic objects on contact." + name = "Искажённая аура" + desc = "Искажает определённые металлические объекты при касании." invocation = "Ethra p'ni dedol!" color = "#000000" // black var/channeling = FALSE /obj/item/melee/blood_magic/construction/examine(mob/user) . = ..() - . += {"A sinister spell used to convert:\n - Plasteel into runed metal\n - [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal into a construct shell\n - Airlocks into brittle runed airlocks after a delay (harm intent)"} + . += {"Зловещее заклинание позволяет превратить:\n + Пласталь в рунический метал\n + [METAL_TO_CONSTRUCT_SHELL_CONVERSION] метала в оболочку конструкта\n + Шлюзы в рунический вариант после небольшой задержки (интент харм)"} /obj/item/melee/blood_magic/construction/afterattack(atom/target, mob/user, proximity_flag, click_parameters) if(user.holy_check()) return if(proximity_flag) if(channeling) - to_chat(user, "You are already invoking twisted construction!") + to_chat(user, "Вы уже вызываете искажённое строительство!") return var/turf/T = get_turf(target) @@ -629,11 +629,11 @@ var/obj/item/stack/sheet/candidate = target if(candidate.use(METAL_TO_CONSTRUCT_SHELL_CONVERSION)) uses-- - to_chat(user, "A dark cloud emanates from your hand and swirls around the metal, twisting it into a construct shell!") + to_chat(user, "Тёмное облако исходит из вашей руки и вихрится вокруг металла, превращая его в оболочку конструкта!") new /obj/structure/constructshell(T) playsound(user, 'sound/magic/cult_spell.ogg', 25, TRUE, SOUND_RANGE_SET(4)) else - to_chat(user, "You need [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal to produce a construct shell!") + to_chat(user, "Необходимо [METAL_TO_CONSTRUCT_SHELL_CONVERSION] металла для производства оболочки конструкта!") return //Plasteel to runed metal @@ -643,7 +643,7 @@ if(candidate.use(quantity)) uses-- new /obj/item/stack/sheet/runed_metal(T, quantity) - to_chat(user, "A dark cloud emanates from you hand and swirls around the plasteel, transforming it into runed metal!") + to_chat(user, "Тёмное облако исходит из вашей руки и вихрится вокруг пластали, превращая его в рунический метал!") playsound(user, 'sound/magic/cult_spell.ogg', 25, TRUE, SOUND_RANGE_SET(4)) //Airlock to cult airlock @@ -654,21 +654,21 @@ if(do_after(user, 50, target = target)) target.narsie_act(TRUE) uses-- - user.visible_message("Black ribbons suddenly emanate from [user]'s hand and cling to the airlock - twisting and corrupting it!") + user.visible_message("Чёрные полосы исходят из руки [user] и цепляются за шлюз, искажая и трансформируя его!") playsound(user, 'sound/magic/cult_spell.ogg', 25, TRUE, SOUND_RANGE_SET(7)) channeling = FALSE else channeling = FALSE return else - to_chat(user, "The spell will not work on [target]!") + to_chat(user, "Заклинание не сработает на [target]!") return ..() //Armor: Gives the target a basic cultist combat loadout /obj/item/melee/blood_magic/armor - name = "Arming Aura" - desc = "Will equipt cult combat gear onto a cultist on contact." + name = "Аура снаряжения" + desc = "Экипирует культиста с боевым снаряжением культа при касании." color = "#33cc33" // green /obj/item/melee/blood_magic/armor/afterattack(atom/target, mob/living/carbon/user, proximity) @@ -686,12 +686,12 @@ qdel(src) //Clears the hands C.put_in_hands(new /obj/item/melee/cultblade(user)) C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) - C.visible_message("Otherworldly [armour ? "armour" : "equipment"] suddenly appears on [C]!") + C.visible_message("Чужеродная [armour ? "броня" : "снаряжение"] внезапно появляется на [C]!") ..() //Used by blood rite, to recharge things like viel shifter or the cultest shielded robes /obj/item/melee/blood_magic/empower name = "Blood Recharge" - desc = "Can be used on some cult items, to restore them to their previous state." + desc = "Может быть использована для восстановления прежнего состояния брони и оружия." invocation = "Ditans Gut'ura Inpulsa!" color = "#9c0651" has_source = FALSE //special, only availible for a blood cost. @@ -706,13 +706,13 @@ var/obj/item/clothing/suit/hooded/cultrobes/cult_shield/C = target if(C.current_charges < 3) uses-- - to_chat(user, "You empower [target] with blood, recharging its shields!") + to_chat(user, "Вы усиливаете [target] кровью, перезаряжая их щиты!") playsound(user, 'sound/magic/cult_spell.ogg', 25, TRUE, SOUND_RANGE_SET(7)) C.current_charges = 3 C.shield_state = "shield-cult" user.update_inv_wear_suit() // The only way a suit can be clicked on is if its on the floor, in the users bag, or on the user, so we will play it safe if it is on the user. else - to_chat(user, "[target] is already at full charge!") + to_chat(user, "[target] уже полностью заряжен!") return // Veil Shifter @@ -720,29 +720,29 @@ var/obj/item/cult_shift/S = target if(S.uses < 4) uses-- - to_chat(user, "You empower [target] with blood, recharging its ability to shift!") + to_chat(user, "Вы усиливаете [target] с помощью крови, перезаряжая его способность к сдвигу!") playsound(user, 'sound/magic/cult_spell.ogg', 25, TRUE, SOUND_RANGE_SET(7)) S.uses = 4 S.icon_state = "shifter" else - to_chat(user, "[target] is already at full charge!") + to_chat(user, "[target] уже полностью заряжен!") return else - to_chat(user, "The spell will not work on [target]!") + to_chat(user, "Заклинание не сработает на [target]!") return ..() //Blood Rite: Absorb blood to heal cult members or summon weapons /obj/item/melee/blood_magic/manipulator - name = "Blood Rite Aura" - desc = "Absorbs blood from anything you touch. Touching cultists and constructs can heal them. Use in-hand to cast an advanced rite." + name = "Аура Blood Rites" + desc = "Поглощайте кровь со всего, чего вы коснётесь. Прикасания к культистам и конструктам лечит их. Используйте в руке для продвинутых обрядов." color = "#7D1717" /obj/item/melee/blood_magic/manipulator/examine(mob/user) . = ..() - . += "Blood spear and blood barrage cost [BLOOD_SPEAR_COST] and [BLOOD_BARRAGE_COST] charges respectively." - . += "Blood orb and blood empower cost [BLOOD_ORB_COST] and [BLOOD_RECHARGE_COST] charges respectively." - . += "You have collected [uses] charge\s of blood." + . += "Кровавое копьё и кровавый шквал стоит [BLOOD_SPEAR_COST] и [BLOOD_BARRAGE_COST] зарядов соотвестствено." + . += "Кровавая сфера и кровавое усиление стоят [BLOOD_ORB_COST] и [BLOOD_RECHARGE_COST] зарядов соответственно." + . += "Вы собрали [uses] заряд(-ов) крови." /obj/item/melee/blood_magic/manipulator/proc/restore_blood(mob/living/carbon/human/user, mob/living/carbon/human/H) if(uses == 0) @@ -754,7 +754,7 @@ var/restore_blood = BLOOD_VOLUME_SAFE - H.blood_volume if(uses * 2 < restore_blood) H.blood_volume += uses * 2 - to_chat(user, "You use the last of your charges to restore what blood you could, and the spell dissipates!") + to_chat(user, "Вы используете последние заряды крови для восстановления, и заклинание расстворяется!") uses = 0 else H.blood_volume = BLOOD_VOLUME_SAFE @@ -766,18 +766,18 @@ return var/overall_damage = H.getBruteLoss() + H.getFireLoss() + H.getToxLoss() + H.getOxyLoss() if(overall_damage == 0) - to_chat(user, "[H] doesn't require healing!") + to_chat(user, "[H] не нужно лечение!") return var/ratio = uses / overall_damage if(H == user) - to_chat(user, "Your blood healing is far less efficient when used on yourself!") + to_chat(user, "Кровавое исцеление менее эффективно при использовании на себе!") ratio *= 0.35 // Healing is half as effective if you can't perform a full heal uses -= round(overall_damage) // Healing is 65% more "expensive" even if you can still perform the full heal if(ratio > 1) ratio = 1 uses -= round(overall_damage) - H.visible_message("[H] is fully healed by [H == user ? "[H.p_their()]" : "[H]'s"] blood magic!", + H.visible_message("[H] is fully healed by [H == user ? "[H.p_their()] " : "Магии Крови [H]"] blood magic!", "You are fully healed by [H == user ? "your" : "[user]'s"] blood magic!") else H.visible_message("[H] is partially healed by [H == user ? "[H.p_their()]" : "[H]'s"] blood magic.", @@ -795,40 +795,40 @@ /obj/item/melee/blood_magic/manipulator/proc/heal_cultist(mob/living/carbon/human/user, mob/living/carbon/human/H) if(H.stat == DEAD) - to_chat(user, "Only a revive rune can bring back the dead!") + to_chat(user, "Только руна возрождения может вернуть к жизни мёртвых!") return var/charge_loss = uses restore_blood(user, H) heal_human_damage(user, H) charge_loss = charge_loss - uses if(!uses) - to_chat(user, "You use the last of your charges to heal [H == user ? "yourself" : "[H]"], and the spell dissipates!") + to_chat(user, "Вы используете последние заряды для лечения [H == user ? "себя" : "[H]"], и заклинание расстворяется!") else - to_chat(user, "You use [charge_loss] charge\s, and have [uses] remaining.") + to_chat(user, "Вы используете [charge_loss] заряд(-ов), и у вас осталось [uses] зарядов.") /obj/item/melee/blood_magic/manipulator/proc/heal_construct(mob/living/carbon/human/user, mob/living/simple_animal/M) if(uses == 0) return var/missing = M.maxHealth - M.health if(!missing) - to_chat(user, "[M] doesn't require healing!") + to_chat(user, "[M] не нужно лечение!") return if(uses > missing) M.adjustHealth(-missing) - M.visible_message("[M] is fully healed by [user]'s blood magic!", + M.visible_message("[M] полностью исцелён с помощью Магии Крови [user]!", "You are fully healed by [user]'s blood magic!") uses -= missing else M.adjustHealth(-uses) - M.visible_message("[M] is partially healed by [user]'s blood magic!", - "You are partially healed by [user]'s blood magic.") + M.visible_message("[M] частично был вылечен с помощью Магии Крови [user]!", + "Вы были частично вылечены [user].") uses = 0 playsound(get_turf(M), 'sound/magic/staff_healing.ogg', 25, extrarange = SOUND_RANGE_SET(7)) user.Beam(M, icon_state = "sendbeam", time = 10) /obj/item/melee/blood_magic/manipulator/proc/steal_blood(mob/living/carbon/human/user, mob/living/carbon/human/H) if(H.stat == DEAD) - to_chat(user, "[H.p_their(TRUE)] blood has stopped flowing, you'll have to find another way to extract it.") + to_chat(user, "[H.p_their(TRUE)] перестал истекать кровью, вам придётся найти другой способ её выкачивания.") return if(H.AmountCultSlurring()) to_chat(user, "[H.p_their(TRUE)] blood has been tainted by an even stronger form of blood magic, it's no use to us like this!") @@ -870,7 +870,7 @@ var/obj/item/blood_orb/candidate = target if(candidate.blood) uses += candidate.blood - to_chat(user, "You obtain [candidate.blood] blood from the orb of blood!") + to_chat(user, "Вы получаете [candidate.blood] крови из кровавой сферы!") playsound(user, 'sound/misc/enter_blood.ogg', 50, extrarange = SOUND_RANGE_SET(7)) qdel(candidate) return @@ -897,7 +897,7 @@ new /obj/effect/temp_visual/cult/sparks(get_turf(user)) playsound(T, 'sound/misc/enter_blood.ogg', 50, extrarange = SOUND_RANGE_SET(7)) temp = round(temp) - to_chat(user, "Your blood rite has gained [temp] charge\s from blood sources around you!") + to_chat(user, "Ваш кровавый обряд получил [temp] зарядов от источников крови вокруг вас!") uses += max(1, temp) /obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) @@ -912,14 +912,14 @@ switch(choice) if("Blood Orb (50)") if(uses < BLOOD_ORB_COST) - to_chat(user, "You need [BLOOD_ORB_COST] charges to perform this rite.") + to_chat(user, "Вам требуется [BLOOD_ORB_COST] зарядов для исполнения данного ритуала.") else - var/ammount = input("How much blood would you like to transfer? You have [uses] blood.", "How much blood?", 50) as null|num + var/ammount = input("Сколько крови вы хотите передать? У вас есть [uses] единиц.", "Сколько крови?", 50) as null|num if(ammount < 50) // No 1 blood orbs, 50 or more. - to_chat(user, "You need to give up at least 50 blood.") + to_chat(user, "Вам нужно отдать как минимум 50 единиц крови.") return if(ammount > uses) // No free blood either - to_chat(user, "You do not have that much blood to give!") + to_chat(user, "У вас нет столько крови!") return uses -= ammount var/turf/T = get_turf(user) @@ -927,28 +927,28 @@ var/obj/item/blood_orb/rite = new(T) rite.blood = ammount if(user.put_in_hands(rite)) - to_chat(user, "A [rite.name] appears in your hand!") + to_chat(user, "[rite.name] появляется у вас в руке!") else - user.visible_message("A [rite.name] appears at [user]'s feet!", - "A [rite.name] materializes at your feet.") + user.visible_message("[rite.name] появляется у ног [user]!", + "A [rite.name] материализуется у ваших ног.") if("Blood Recharge (75)") if(uses < BLOOD_RECHARGE_COST) - to_chat(user, "You need [BLOOD_RECHARGE_COST] charges to perform this rite.") + to_chat(user, "Вам требуется [BLOOD_RECHARGE_COST] зарядов для исполнения ритуала.") else var/obj/rite = new /obj/item/melee/blood_magic/empower() uses -= BLOOD_RECHARGE_COST qdel(src) if(user.put_in_hands(rite)) - to_chat(user, "Your hand glows with power!") + to_chat(user, "Ваша рука светится мощью!") else - to_chat(user, "You need a free hand for this rite!") + to_chat(user, "Вам нужна свободная рука для использования этого обряда!") uses += BLOOD_RECHARGE_COST // Refund the charges qdel(rite) if("Blood Spear (150)") if(uses < BLOOD_SPEAR_COST) - to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.") + to_chat(user, "") else uses -= BLOOD_SPEAR_COST var/turf/T = get_turf(user) @@ -958,14 +958,14 @@ S.Grant(user, rite) rite.spear_act = S if(user.put_in_hands(rite)) - to_chat(user, "A [rite.name] appears in your hand!") + to_chat(user, "[rite.name] появляется у вас в руке!") else - user.visible_message("A [rite.name] appears at [user]'s feet!", - "A [rite.name] materializes at your feet.") + user.visible_message("[rite.name] появляется у ног [user]!", + "A [rite.name] материализуется у ваших ног.") if("Blood Bolt Barrage (300)") if(uses < BLOOD_BARRAGE_COST) - to_chat(user, "You need [BLOOD_BARRAGE_COST] charges to perform this rite.") + to_chat(user, "Вам требуется [BLOOD_BARRAGE_COST] зарядов для использования данного обряда.") else var/obj/rite = new /obj/item/gun/projectile/shotgun/boltaction/enchanted/arcane_barrage/blood() uses -= BLOOD_BARRAGE_COST @@ -973,8 +973,8 @@ user.swap_hand() user.drop_item() if(user.put_in_hands(rite)) - to_chat(user, "Both of your hands glow with power!") + to_chat(user, "Обе ваших руки светятся мощью!") else - to_chat(user, "You need a free hand for this rite!") + to_chat(user, "Вам нужна свободная рука для использования обряда!") uses += BLOOD_BARRAGE_COST // Refund the charges qdel(rite) diff --git a/code/game/gamemodes/cult/cult_actions.dm b/code/game/gamemodes/cult/cult_actions.dm index 26c08709a2dd..f17c2694c44d 100644 --- a/code/game/gamemodes/cult/cult_actions.dm +++ b/code/game/gamemodes/cult/cult_actions.dm @@ -12,13 +12,13 @@ //Comms /datum/action/innate/cult/comm - name = "Communion" - desc = "Whispered words that all cultists can hear.
Warning:Nearby non-cultists can still hear you." + name = "Общение" + desc = "Прошепченные слова услышат все культисты.
Внимание:Рядомстоящие некультисты всё равно вас услышат." button_icon_state = "cult_comms" check_flags = AB_CHECK_CONSCIOUS /datum/action/innate/cult/comm/Activate() - var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") + var/input = stripped_input(usr, "Выберите сообщения для других аколитов.", "Голос Крови", "") if(!input || !IsAvailable()) return cultist_commune(usr, input) @@ -32,12 +32,12 @@ return if(!user.can_speak()) - to_chat(user, "You can't speak!") + to_chat(user, "Вы не можете говорить!") return if(HAS_TRAIT(user, TRAIT_MUTE) || user.mind.miming) //Under vow of silence/mute? - user.visible_message("[user] appears to whisper to themselves.", - "You begin to whisper to yourself.") //Make them do *something* abnormal. + user.visible_message("[user], кажется, шепчет себе что-то.", + "Вы шепчете себе что-то.") //Make them do *something* abnormal. sleep(10) else user.whisper("O bidai nabora se[pick("'","`")]sma!") // Otherwise book club sayings. @@ -48,10 +48,10 @@ var/large = FALSE var/living_message if(istype(user, /mob/living/simple_animal/demon/slaughter/cult)) //Harbringers of the Slaughter - title = "Harbringer of the Slaughter" + title = "Предвестник резни" large = TRUE else - title = "[(isconstruct(user) ? "Construct" : isshade(user) ? "" : "Acolyte")] [user.real_name]" + title = "[(isconstruct(user) ? "Конструкт" : isshade(user) ? "" : "Аколит")] [user.real_name]" living_message = "[title]: [message]" for(var/mob/M in GLOB.player_list) @@ -63,8 +63,8 @@ log_say("(CULT) [message]", user) /datum/action/innate/cult/comm/spirit - name = "Spiritual Communion" - desc = "Conveys a message from the spirit realm that all cultists can hear." + name = "Духовное сообщение" + desc = "Передаёт сообщение из духовного мира для всех культистов." /datum/action/innate/cult/comm/spirit/IsAvailable() return TRUE @@ -86,9 +86,9 @@ //Objectives /datum/action/innate/cult/check_progress - name = "Study the Veil" + name = "Изучение Завесы" button_icon_state = "tome" - desc = "Check your cult's current progress and objective." + desc = "Проверьте прогресс культа и текущую цель." check_flags = AB_CHECK_CONSCIOUS /datum/action/innate/cult/check_progress/New() @@ -107,13 +107,13 @@ if(SSticker && SSticker.mode) SSticker.mode.cult_objs.study(usr, TRUE) else - to_chat(usr, "You fail to study the Veil. (This should never happen, adminhelp and/or yell at a coder)") + to_chat(usr, "Вам не удалось изучить Завесу. (Этого не должно происходить, adminhelp и/или орите на кодера)") //Draw rune /datum/action/innate/cult/use_dagger - name = "Draw Blood Rune" - desc = "Use the ritual dagger to create a powerful blood rune" + name = "Начертить Кровавую Руну" + desc = "Используйте ритуальный кинжал для начертания мощных рун" button_icon_state = "blood_dagger" /datum/action/innate/cult/use_dagger/Grant() @@ -133,4 +133,4 @@ owner.put_in_hands(D) D.attack_self(owner) else - to_chat(usr, "You do not seem to carry a ritual dagger to draw a rune with. If you need a new one, prepare and use the Summon Dagger spell.") + to_chat(usr, "Похоже, у вас нет с собой ритуального кинжала. Если вам нужен новый, подготовьте и используйте заклинание 'Призыв Кинжала'.") diff --git a/code/game/gamemodes/cult/cult_mode.dm b/code/game/gamemodes/cult/cult_mode.dm index 86e8d4a82ff2..20fc38f8687e 100644 --- a/code/game/gamemodes/cult/cult_mode.dm +++ b/code/game/gamemodes/cult/cult_mode.dm @@ -88,7 +88,7 @@ cult_mind.add_mind_objective(/datum/objective/servecult) if(cult_mind.assigned_role == "Clown") - to_chat(cult_mind.current, "A dark power has allowed you to overcome your clownish nature, letting you wield weapons without harming yourself.") + to_chat(cult_mind.current, "Тёмная сила позволила вам перебороть свою клоунскую натуру, позволяя вам пользоваться оружием без риска пораниться.") cult_mind.current.dna.SetSEState(GLOB.clumsyblock, FALSE) singlemutcheck(cult_mind.current, GLOB.clumsyblock, MUTCHK_FORCED) var/datum/action/innate/toggle_clumsy/A = new @@ -97,7 +97,7 @@ add_cult_actions(cult_mind) update_cult_icons_added(cult_mind) cult_objs.study(cult_mind.current) - to_chat(cult_mind.current, "For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Cultist)") + to_chat(cult_mind.current, "Для большей информации, проконсультруйтесь со страницей на вики: ([GLOB.configuration.url.wiki_url]/index.php/Cultist)") cult_threshold_check() addtimer(CALLBACK(src, PROC_REF(cult_threshold_check)), 2 MINUTES) // Check again in 2 minutes for latejoiners ..() @@ -108,7 +108,7 @@ . += cult_give_item(/obj/item/melee/cultblade/dagger, H) if(metal) . += cult_give_item(/obj/item/stack/sheet/runed_metal/ten, H) - to_chat(H, "These will help you start the cult on this station. Use them well, and remember - you are not the only one.") + to_chat(H, "Это вам поможет начать культ на станции. Используйте их с умом, и помните - вы не единственный.") /datum/game_mode/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/H) var/list/slots = list( @@ -119,10 +119,10 @@ var/item_name = initial(item_path.name) var/where = H.equip_in_one_of_slots(T, slots) if(!where) - to_chat(H, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") + to_chat(H, "К сожалению, вы не смогли получить [item_name]. Это очень плохо и вы должны немедленно написать админтикет (F1 -> adminhelp).") return FALSE else - to_chat(H, "You have a [item_name] in your [where].") + to_chat(H, "У вас есть [item_name] в вашем [where].") return TRUE @@ -140,13 +140,13 @@ cult_mind.special_role = SPECIAL_ROLE_CULTIST if(cult_mind.assigned_role == "Clown") - to_chat(cult_mind.current, "A dark power has allowed you to overcome your clownish nature, letting you wield weapons without harming yourself.") + to_chat(cult_mind.current, "Тёмная сила позволила вам перебороть свою клоунскую натуру, позволяя вам пользоваться оружием без риска пораниться.") cult_mind.current.dna.SetSEState(GLOB.clumsyblock, FALSE) singlemutcheck(cult_mind.current, GLOB.clumsyblock, MUTCHK_FORCED) var/datum/action/innate/toggle_clumsy/A = new A.Grant(cult_mind.current) SEND_SOUND(cult_mind.current, sound('sound/ambience/antag/bloodcult.ogg')) - cult_mind.current.create_attack_log("Has been converted to the cult!") + cult_mind.current.create_attack_log("Был обращён в культ!") cult_mind.current.create_log(CONVERSION_LOG, "Converted to the cult") if(jobban_isbanned(cult_mind.current, ROLE_CULTIST) || jobban_isbanned(cult_mind.current, ROLE_SYNDICATE)) @@ -193,16 +193,16 @@ if(is_type_in_list(I, CULT_CLOTHING)) H.unEquip(I) if(cult_mind.assigned_role == "Clown") - to_chat(H, "You are free of the dark power suppressing your clownish nature. You are clumsy again! Honk!") + to_chat(H, "Вы свободны от тёмных сил, сдерживающие вашу клоунскую натуру. Вы снова неуклюжи! Хонк!") H.dna.SetSEState(GLOB.clumsyblock, TRUE) singlemutcheck(H, GLOB.clumsyblock, MUTCHK_FORCED) for(var/datum/action/innate/toggle_clumsy/A in H.actions) A.Remove(H) - cult_mind.current.create_log(CONVERSION_LOG, "Deconverted from the cult") + cult_mind.current.create_log(CONVERSION_LOG, "Деконвертирован") check_cult_size() if(show_message) cultist.visible_message("[cultist] looks like [cultist.p_they()] just reverted to [cultist.p_their()] old faith!", - "An unfamiliar white light flashes through your mind, cleansing the taint of [SSticker.cultdat ? SSticker.cultdat.entity_title1 : "Nar'Sie"] and the memories of your time as their servant with it.") + "Незнакомый белый свет светит в ваш разум, очищая его от следов [SSticker.cultdat ? SSticker.cultdat.entity_title1 : "Нар'Си"] и вместе с этим ваши воспоминания как её слуга.") /datum/game_mode/proc/add_cult_immunity(mob/living/target) ADD_TRAIT(target, TRAIT_CULT_IMMUNITY, CULT_TRAIT) @@ -279,7 +279,7 @@ if(!ishuman(M.current)) continue SEND_SOUND(M.current, sound('sound/hallucinations/i_see_you2.ogg')) - to_chat(M.current, "The veil weakens as your cult grows, your eyes begin to glow...") + to_chat(M.current, "Завеса слабеет, культ растёт, ваши глаза начинают светиться...") addtimer(CALLBACK(src, PROC_REF(rise), M.current), 20 SECONDS) @@ -289,9 +289,9 @@ if(!ishuman(M.current)) continue SEND_SOUND(M.current, sound('sound/hallucinations/im_here1.ogg')) - to_chat(M.current, "Your cult is ascendant and the red harvest approaches - you cannot hide your true nature for much longer!") + to_chat(M.current, "Ваш культ вознёсся и приближается красная жатва. Вы больше не можете скрывать вашу истинную сущность!") addtimer(CALLBACK(src, PROC_REF(ascend), M.current), 20 SECONDS) - GLOB.major_announcement.Announce("Picking up extradimensional activity related to the Cult of [SSticker.cultdat ? SSticker.cultdat.entity_name : "Nar'Sie"] from your station. Data suggests that about [ascend_percent * 100]% of the station has been converted. Security staff are authorized to use lethal force freely against cultists. Non-security staff should be prepared to defend themselves and their work areas from hostile cultists. Self defense permits non-security staff to use lethal force as a last resort, but non-security staff should be defending their work areas, not hunting down cultists. Dead crewmembers must be revived and deconverted once the situation is under control.", "Central Command Higher Dimensional Affairs", 'sound/AI/commandreport.ogg') + GLOB.major_announcement.Announce("Замечена паранормальная активность, связанная с культом [SSticker.cultdat ? SSticker.cultdat.entity_name : "Нар'Си"], с вашей станции. Данные предполагают, что как минимум [ascend_percent * 100] процентов экипажа станции была конвертирована. Служба безопасности имеет полное право использовать летальную силу против культистов. Остальной экипаж должен готовиться к обороне себя и своей рабочей зоны от враждебных культистов. Самооборона разрешает экипажу использовать летальную силу в качестве крайней меры, но он должен приоритизировать защиту своей рабочей зоны, а не охоту на культистов. Мёртвые члены экипажа должны быть возрождены и деконвертированы как только ситуация стабилизируется.", "Отдел ЦК по Делам Высших Измерений", 'sound/AI/commandreport.ogg') /datum/game_mode/proc/cult_fall() cult_ascendant = FALSE @@ -299,16 +299,16 @@ if(!ishuman(M.current)) continue SEND_SOUND(M.current, sound('sound/hallucinations/wail.ogg')) - to_chat(M.current, "The veil repairs itself, your power grows weaker...") + to_chat(M.current, "Завеса восстанавливается, мощь культа падает...") addtimer(CALLBACK(src, PROC_REF(descend), M.current), 20 SECONDS) - GLOB.major_announcement.Announce("Paranormal activity has returned to minimal levels. \ - Security staff should minimize lethal force against cultists, using non-lethals where possible. \ - All dead cultists should be taken to medbay or robotics for immediate revival and deconversion. \ - Non-security staff may defend themselves, but should prioritize leaving any areas with cultists and reporting the cultists to security. \ - Self defense permits non-security staff to use lethal force as a last resort. Hunting down cultists may make you liable for a manslaughter charge. \ - Any access granted in response to the paranormal threat should be reset. \ - Any and all security gear that was handed out should be returned. Finally, all weapons (including improvised) should be removed from the crew.", - "Central Command Higher Dimensional Affairs", 'sound/AI/commandreport.ogg') + GLOB.major_announcement.Announce("Паранормальная активность вернулась к минимальному уровню. \ + Служба безопасности должна минимизировать летальную силу по культистам, по возможности используя нелетальную силу. \ + Все мёртвые культисты должны быть доставлены в медицинский отдел или робототехнику для немедленного воскрешения и деконвертации. \ + Остальной экипаж имеет право на самозащиту, но они должны приоритизровать покидание зон с культистами и докладам о них службе безопасности. \ + Самооборона позволяет экипажу использовать летальную силу как крайнюю меру. За охоту на культистов служба безопасности может посадить вас за массовое убийство. \ + Все доступы, полученные во время паранормальной активности, должны быть отозваны. \ + Любое выданное снаряжение должно быть возвращено. И последнее, всё оружие (в том числе самодельное) должно быть изъято у экипажа.", + "Отдел ЦК по Делам Высших Измерений", 'sound/AI/commandreport.ogg') /datum/game_mode/proc/rise(cultist) if(!ishuman(cultist) || !iscultist(cultist)) @@ -334,7 +334,7 @@ var/mob/living/carbon/human/H = cultist new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) H.update_halo_layer() - to_chat(cultist, "The halo above your head shatters!") + to_chat(cultist, "Нимб над вашей головой рассыпается!") playsound(cultist, "shatter", 50, TRUE) /datum/game_mode/proc/update_cult_icons_added(datum/mind/cult_mind) @@ -366,28 +366,28 @@ /datum/game_mode/cult/declare_completion() if(cult_objs.cult_status == NARSIE_HAS_RISEN) SSticker.mode_result = "cult win - cult win" - to_chat(world, " The cult wins! It has succeeded in summoning [SSticker.cultdat.entity_name]!") + to_chat(world, " Культ одерживает победу! Им удалось вызвать божество [SSticker.cultdat.entity_name]!") else if(cult_objs.cult_status == NARSIE_HAS_FALLEN) SSticker.mode_result = "cult draw - narsie died, nobody wins" - to_chat(world, " Nobody wins! [SSticker.cultdat.entity_name] was summoned, but banished!") + to_chat(world, " Никто не выигрывает! [SSticker.cultdat.entity_name] было вызвано, но испарилось!") else SSticker.mode_result = "cult loss - staff stopped the cult" - to_chat(world, " The staff managed to stop the cult!") + to_chat(world, " Экипажу удалось одолеть культ!") var/list/endtext = list() - endtext += "
The cultists' objectives were:" + endtext += "
Цели культа были:" for(var/datum/objective/obj in cult_objs.presummon_objs) endtext += "
[obj.explanation_text] - " if(!obj.check_completion()) - endtext += "Fail." + endtext += "Провал." else - endtext += "Success!" + endtext += "Успех!" if(cult_objs.cult_status >= NARSIE_NEEDS_SUMMONING) endtext += "
[cult_objs.obj_summon.explanation_text] - " if(!cult_objs.obj_summon.check_completion()) - endtext+= "Fail." + endtext+= "Провал." else - endtext += "Success!" + endtext += "Успех!" to_chat(world, endtext.Join("")) ..() diff --git a/code/game/gamemodes/cult/cult_objectives.dm b/code/game/gamemodes/cult/cult_objectives.dm index fe5816e16541..60a0f1e58ea7 100644 --- a/code/game/gamemodes/cult/cult_objectives.dm +++ b/code/game/gamemodes/cult/cult_objectives.dm @@ -21,23 +21,23 @@ switch(cult_status) if(NARSIE_IS_ASLEEP) - to_chat(M, "[SSticker.cultdat ? SSticker.cultdat.entity_name : "The Dark One"] is asleep.") + to_chat(M, "[SSticker.cultdat ? SSticker.cultdat.entity_name : "The Dark One"] в спячке.") if(NARSIE_DEMANDS_SACRIFICE) if(!length(presummon_objs)) to_chat(M, "Error: No objectives in sacrifice list. Something went wrong. Oof.") else var/datum/objective/sacrifice/current_obj = presummon_objs[length(presummon_objs)] //get the last obj in the list, ie the current one - to_chat(M, "The Veil needs to be weakened before we are able to summon [SSticker.cultdat ? SSticker.cultdat.entity_title1 : "The Dark One"].") - to_chat(M, "Current goal: [current_obj.explanation_text]") + to_chat(M, "Завеса должна быть ослаблена перед тем, как мы сможем вызвать [SSticker.cultdat ? SSticker.cultdat.entity_title1 : "The Dark One"].") + to_chat(M, "Текущая цель: [current_obj.explanation_text]") if(NARSIE_NEEDS_SUMMONING) to_chat(M, "The Veil is weak! We can summon [SSticker.cultdat ? SSticker.cultdat.entity_title3 : "The Dark One"]!") - to_chat(M, "Current goal: [obj_summon.explanation_text]") + to_chat(M, "Текущая цель: [obj_summon.explanation_text]") if(NARSIE_HAS_RISEN) - to_chat(M, "\"I am here.\"") - to_chat(M, "Current goal: \"Feed me.\"") + to_chat(M, "\"Я здесь.\"") + to_chat(M, "Текущая цель: \"Кормите меня.\"") if(NARSIE_HAS_FALLEN) - to_chat(M, "[SSticker.cultdat ? SSticker.cultdat.entity_name : "The Dark One"] has been banished!") - to_chat(M, "Current goal: Slaughter the unbelievers!") + to_chat(M, "[SSticker.cultdat ? SSticker.cultdat.entity_name : "The Dark One"] испарился!") + to_chat(M, "Текущая цель: Убивайте неверных!") else to_chat(M, "Error: Cult objective status currently unknown. Something went wrong. Oof.") @@ -47,17 +47,17 @@ var/rise = SSticker.mode.rise_number - total_cult var/ascend = SSticker.mode.ascend_number - total_cult - var/overview = "
Current cult members: [total_cult]" + var/overview = "
Количество членов культа: [total_cult]" if(!SSticker.mode.cult_ascendant) if(rise > 0) - overview += " | Conversions until Rise: [rise]" + overview += " | Конвертаций до подъёма: [rise]" else if(ascend > 0) - overview += " | Conversions until Ascension: [ascend]" + overview += " | Конвертаций до вознесения: [ascend]" to_chat(M, "[overview]
") if(cult[2]) // If there are any constructs, separate them out - to_chat(M, "Cultists: [cult[1]]") - to_chat(M, "Constructs: [cult[2]]") + to_chat(M, "Культистов: [cult[1]]") + to_chat(M, "Конструктов: [cult[2]]") /datum/cult_objectives/proc/current_sac_objective() //Return the current sacrifice objective datum, if any @@ -79,7 +79,7 @@ if(current_obj.find_target()) for(var/datum/mind/cult_mind in SSticker.mode.cult) if(cult_mind && cult_mind.current) - to_chat(cult_mind.current, "[SSticker.cultdat.entity_name] murmurs, Our goal is beyond your reach. Sacrifice [current_obj.target] instead...") + to_chat(cult_mind.current, "[SSticker.cultdat.entity_name] бормочет, Наша цель вне досягаемости. Взамен принесите в жертву [current_obj.target]...") return TRUE return FALSE @@ -104,8 +104,8 @@ cult_status = NARSIE_NEEDS_SUMMONING for(var/datum/mind/cult_mind in SSticker.mode.cult) if(cult_mind && cult_mind.current) - to_chat(cult_mind.current, "You and your acolytes have succeeded in preparing the station for the ultimate ritual!") - to_chat(cult_mind.current, "Current goal: [obj_summon.explanation_text]") + to_chat(cult_mind.current, "Вы и ваши аколиты подготовили станцию для выполнения завершающего ритуала!") + to_chat(cult_mind.current, "Текущая задача: [obj_summon.explanation_text]") /datum/cult_objectives/proc/succesful_summon() cult_status = NARSIE_HAS_RISEN @@ -118,13 +118,13 @@ //Objectives /datum/objective/servecult //Given to cultists on conversion/roundstart - explanation_text = "Assist your fellow cultists and Tear the Veil! (Use the Study Veil action to check your progress.)" + explanation_text = "Помогите соратникам-культистам в Разрыве Завесы! (Используйте 'Изучение Завесы' для проверки прогресса.)" completed = TRUE needs_target = FALSE /datum/objective/sacrifice var/sacced = FALSE - explanation_text = "Sacrifice a crewmember in order to prepare the summoning." + explanation_text = "Принесите в жертву члена экипажа." /datum/objective/sacrifice/check_completion() return sacced || completed @@ -144,9 +144,9 @@ target_candidates += H.mind if(length(target_candidates)) target = pick(target_candidates) - explanation_text = "Sacrifice [target], the [target.assigned_role] via invoking an Offer rune with [target.p_their()] body or brain on it and three acolytes around it." + explanation_text = "Принесите в жертву [target], [target.assigned_role] при помощи руны Предолжения с телом или мозгом [target.p_their()] и тремя аколитами вокруг неё." return TRUE - message_admins("Cult Sacrifice: Could not find unconvertible or convertible target. Nar'Sie summoning unlocked!") + message_admins("Жертвоприношение культа: Невозможно найти подходящую жертву. Разблокирован призыв Нар'Си!") return FALSE @@ -181,8 +181,8 @@ if(valid_spot) summon_spots += summon sanity++ - explanation_text = "Summon [SSticker.cultdat ? SSticker.cultdat.entity_name : "your god"] by invoking the rune 'Tear Veil' with 9 cultists, constructs, or summoned ghosts on it.\ - \nThe summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin." + explanation_text = "Призовите [SSticker.cultdat ? SSticker.cultdat.entity_name : "ваше божество"] при помощи руны 'Разрыв Завесы' c девятью культистами, конструктами, или призванными призраками на ней.\ + \nПризыв может был выполнен только в [english_list(summon_spots)] - где Завеса достаточно слаба для вызова божества." /datum/objective/eldergod/check_completion() diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index b23eee980395..436b12b4366b 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -10,8 +10,8 @@ //Noncult As we may have this on maps /obj/structure/cult/altar - name = "Altar" - desc = "A bloodstained altar." + name = "Алтарь" + desc = "Окровавленный алтарь." icon_state = "altar" /obj/structure/cult/forge @@ -22,8 +22,8 @@ light_color = LIGHT_COLOR_LAVA /obj/structure/cult/pylon - name = "Pylon" - desc = "A floating crystal that hums with an unearthly energy." + name = "Пилон" + desc = "Левитирующий кристалл, источающий внеземную энергию." icon_state = "pylon" light_range = 1.5 light_color = LIGHT_COLOR_RED @@ -32,7 +32,7 @@ /obj/structure/cult/functional max_integrity = 100 var/cooldowntime = 0 - var/death_message = "The structure falls apart." //The message shown when the structure is destroyed + var/death_message = "Структура разваливается." //The message shown when the structure is destroyed var/death_sound = 'sound/items/bikehorn.ogg' var/heathen_message = "You're a huge nerd, go away. Also, a coder forgot to put a message here." var/selection_title = "Oops" @@ -49,15 +49,15 @@ /obj/structure/cult/functional/examine(mob/user) . = ..() if(iscultist(user) && cooldowntime > world.time) - . += "The magic in [src] is weak, it will be ready to use again in [get_ETA()]." - . += "[src] is [anchored ? "":"not "]secured to the floor." + . += "Магия в [src] слаба, им можно будет воспользоваться снова [get_ETA()]." + . += "[src] [anchored ? "":"не "]прикреплено к полу." /obj/structure/cult/functional/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) if(user.holy_check()) return anchored = !anchored - to_chat(user, "You [anchored ? "":"un"]secure [src] [anchored ? "to":"from"] the floor.") + to_chat(user, "Вы [anchored ? "при":"от"]крепляете [src] [anchored ? "к":"от"] пол[anchored ? "у":"а"] .") if(!anchored) icon_state = SSticker.cultdat?.get_icon("[initial(icon_state)]_off") else @@ -70,16 +70,16 @@ to_chat(user, "[heathen_message]") return if(invisibility) - to_chat(user, "The magic in [src] is being channeled into Redspace, reveal the structure first!") + to_chat(user, "Магия в [src] направляется в Рэдспейс, сначала проявите структуру!") return if(HAS_TRAIT(user, TRAIT_HULK)) - to_chat(user, "You cannot seem to manipulate this structure with your bulky hands!") + to_chat(user, "Невозможна манипуляция с этим при помощи рук Халка!") return if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with a dagger first.") + to_chat(user, "Сначала прикрепите [src] к полу с помощью кинжала.") return if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [get_ETA()].") + to_chat(user, "Магия в [src] слаба, им можно будет воспользоваться через [get_ETA()].") return @@ -110,10 +110,10 @@ var/seconds = round(time * 0.1, 1) var/message if(minutes) - message = "[minutes] minute\s" + message = "[minutes] минут(-ы)" seconds = seconds - (60 * minutes) if(seconds) // To avoid '2 minutes, 0 seconds.' - message += "[minutes ? ", " : ""][seconds] second\s" + message += "[minutes ? ", " : ""][seconds] секунд" return message /obj/structure/cult/functional/cult_conceal() @@ -128,25 +128,25 @@ /obj/structure/cult/functional/cult_reveal() density = initial(density) invisibility = 0 - visible_message("[src] suddenly appears!") + visible_message("[src] неожиданно появляется!") alpha = initial(alpha) light_range = initial(light_range) light_power = initial(light_power) update_light() /obj/structure/cult/functional/altar - name = "altar" - desc = "A bloodstained altar dedicated to a cult." + name = "Алтарь" + desc = "Окровавленный алтарь, предназначенный культу." icon_state = "altar" max_integrity = 150 //Sturdy - death_message = "The altar breaks into splinters, releasing a cascade of spirits into the air!" + death_message = "Алтарь ломается на трещины, выпуская каскад душ!" death_sound = 'sound/effects/altar_break.ogg' heathen_message = "There is a foreboding aura to the altar and you want nothing to do with it." selection_prompt = "You study the rituals on the altar..." selection_title = "Altar" - creation_message = "You kneel before the altar and your faith is rewarded with a %ITEM%!" - choosable_items = list("Eldritch Whetstone" = /obj/item/whetstone/cult, "Flask of Unholy Water" = /obj/item/reagent_containers/food/drinks/bottle/unholywater, - "Construct Shell" = /obj/structure/constructshell) + creation_message = "Вы склоняетесь перед алтарём и ваша вера вознаграждается %ITEM%!" + choosable_items = list("Eldritch Whetstone" = /obj/item/whetstone/cult, "Фляга с нечестивой водой" = /obj/item/reagent_containers/food/drinks/bottle/unholywater, + "Оболочка конструкта" = /obj/structure/constructshell) /obj/structure/cult/functional/altar/Initialize(mapload) . = ..() @@ -160,13 +160,13 @@ light_range = 2 light_color = LIGHT_COLOR_LAVA max_integrity = 300 //Made of metal - death_message = "The forge falls apart, its lava cooling and winking away!" + death_message = "Печь разваливается на части, её лава остывает и исчезает!" death_sound = 'sound/effects/forge_destroy.ogg' - heathen_message = "Your hand feels like it's melting off as you try to touch the forge." + heathen_message = "Вы чувствуете, что ваша рука как будто плавится при попытке прикоснуться к ней печи." selection_prompt = "You study the schematics etched on the forge..." selection_title = "Forge" - creation_message = "You work the forge as dark knowledge guides your hands, creating a %ITEM%!" - choosable_items = list("Shielded Robe" = /obj/item/clothing/suit/hooded/cultrobes/cult_shield, "Flagellant's Robe" = /obj/item/clothing/suit/hooded/cultrobes/flagellant_robe) + creation_message = "Вы работате в печи, направляемые тёмными знаниями, и создаёте %ITEM%!" + choosable_items = list("Защищённая роба" = /obj/item/clothing/suit/hooded/cultrobes/cult_shield, "Роба Флагелланта" = /obj/item/clothing/suit/hooded/cultrobes/flagellant_robe) /obj/structure/cult/functional/forge/get_choosable_items() . = ..() @@ -186,19 +186,19 @@ if(!iscarbon(G.affecting)) return FALSE if(G.affecting == LAVA_PROOF) - to_chat(user, "[G.affecting] is immune to lava!") + to_chat(user, "[G.affecting] имуннен к лаве!") return FALSE if(G.affecting.stat == DEAD) - to_chat(user, "[G.affecting] is dead!") + to_chat(user, "[G.affecting] мёртв!") return FALSE var/mob/living/carbon/human/C = G.affecting var/obj/item/organ/external/head/head = C.get_organ("head") if(!head) - to_chat(user, "[C] has no head!") + to_chat(user, "У [C] нет головы!") return FALSE - C.visible_message("[user] dunks [C]'s face into [src]'s lava!", - "[user] dunks your face into [src]'s lava!") + C.visible_message("[user] погружает лицо [C] в лаву из [src]!", + "[user] погружает ваше лицо в лаву из [src]!") C.emote("scream") C.apply_damage(30, BURN, "head") // 30 fire damage because it's FUCKING LAVA head.disfigure() // Your face is unrecognizable because it's FUCKING LAVA @@ -219,13 +219,13 @@ GLOBAL_LIST_INIT(blacklisted_pylon_turfs, typecacheof(list( ))) /obj/structure/cult/functional/pylon - name = "pylon" - desc = "A floating crystal that slowly heals those faithful to a cult." + name = "Пилон" + desc = "Левитирующий кристалл, медленно исцеляющих уверовавших в культ." icon_state = "pylon" light_range = 1.5 light_color = LIGHT_COLOR_RED max_integrity = 50 //Very fragile - death_message = "The pylon's crystal vibrates and glows fiercely before violently shattering!" + death_message = "Кристалл пилона вибрирует и яростно светится перед тем, как разлететься на куски!" death_sound = 'sound/effects/pylon_shatter.ogg' var/heal_delay = 30 @@ -305,16 +305,16 @@ GLOBAL_LIST_INIT(blacklisted_pylon_turfs, typecacheof(list( last_corrupt = world.time + corrupt_delay * 2 /obj/structure/cult/functional/archives - name = "archives" - desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl." + name = "Архивы" + desc = "Стол с манускриптами и томами на неизвестном языке. От взгляда на текст мурашки бегут по коже." icon_state = "archives" light_range = 1.5 light_color = LIGHT_COLOR_FIRE max_integrity = 125 //Slightly sturdy death_message = "The desk breaks apart, its books falling to the floor." death_sound = 'sound/effects/wood_break.ogg' - heathen_message = "What do you hope to seek?" - selection_prompt = "You flip through the black pages of the archives..." + heathen_message = "Что вы надеетесь найти?" + selection_prompt = "Вы пролистывете черные страницы архивов..." selection_title = "Archives" creation_message = "You invoke the dark magic of the tomes creating a %ITEM%!" choosable_items = list("Shuttle Curse" = /obj/item/shuttle_curse, "Zealot's Blindfold" = /obj/item/clothing/glasses/hud/health/night/cultblind, diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index cea7205c4125..2d9e1bf97141 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -2,7 +2,7 @@ #define CULT_SLAUGHTER "slaughter" /obj/item/melee/cultblade/dagger - name = "ritual dagger" + name = "ритуальный кинжал" desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods." icon_state = "blood_dagger" item_state = "blood_dagger" @@ -37,12 +37,12 @@ if(iscultist(M)) if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion if(M == user) // Targeting yourself - to_chat(user, "You can't remove holy water from yourself!") + to_chat(user, "Вы не можете вывести святую воду из себя!") else // Targeting someone else - to_chat(user, "You remove the taint from [M].") - to_chat(M, "[user] removes the taint from your body.") + to_chat(user, "Вы убираете скверну из [M].") + to_chat(M, "[user] убрал скверну из вашего тела.") M.reagents.del_reagent("holywater") - add_attack_logs(user, M, "Hit with [src], removing the holy water from them") + add_attack_logs(user, M, "Ударил с помощью [src], выводя святую воду из них") return FALSE else var/datum/status_effect/cult_stun_mark/S = M.has_status_effect(STATUS_EFFECT_CULT_STUN) @@ -52,7 +52,7 @@ /obj/item/melee/cultblade/dagger/attack_self(mob/user) if(!iscultist(user)) - to_chat(user, "[src] is covered in unintelligible shapes and markings.") + to_chat(user, "[src] покрыт непонятными формами и надписями.") return scribe_rune(user) @@ -60,25 +60,25 @@ var/datum/game_mode/gamemode = SSticker.mode if(gamemode.cult_objs.cult_status < NARSIE_NEEDS_SUMMONING) - to_chat(user, "[SSticker.cultdat.entity_name] is not ready to be summoned yet!") + to_chat(user, "[SSticker.cultdat.entity_name] ещё не готов к призыву!") return FALSE if(gamemode.cult_objs.cult_status == NARSIE_HAS_RISEN) - to_chat(user, "\"I am already here. There is no need to try to summon me now.\"") + to_chat(user, "\"Я уже здесь. Нет нужды повторно меня призывать.\"") return FALSE var/list/summon_areas = gamemode.cult_objs.obj_summon.summon_spots if(!(A in summon_areas)) - to_chat(user, "[SSticker.cultdat.entity_name] can only be summoned where the veil is weak - in [english_list(summon_areas)]!") + to_chat(user, "[SSticker.cultdat.entity_name] может быть призван(-а) только там, где завеса ослабла - в [english_list(summon_areas)]!") return FALSE - var/confirm_final = alert(user, "This is the FINAL step to summon your deities power, it is a long, painful ritual and the crew will be alerted to your presence AND your location!", - "Are you prepared for the final battle?", "My life for [SSticker.cultdat.entity_name]!", "No") + var/confirm_final = alert(user, "Это ПОСЛЕДНИЙ шаг для призыва силы вашего божества. Это долгий, мучительный ритуал. Экипаж будет уведомлён о вашем присутствии И вашем местоположении", + "Вы готовы к финальной битве?", "Жизнь за [SSticker.cultdat.entity_name]!", "Нет") if(user) if(confirm_final == "No" || confirm_final == null) - to_chat(user, "You decide to prepare further before scribing the rune.") + to_chat(user, "Вы считаете, что нужно лучше подготовиться перед начертанием руны.") return FALSE else if(locate(/obj/effect/rune) in range(1, user)) - to_chat(user, "You need a space cleared of runes before you can summon [SSticker.cultdat.entity_title1]!") + to_chat(user, "Вам нужно чистое пространство для начертания руны призыва [SSticker.cultdat.entity_title1]!") return FALSE else return TRUE @@ -87,14 +87,14 @@ if(!src || !user || loc != user || user.incapacitated()) return FALSE if(drawing_rune) - to_chat(user, "You're already drawing a rune!") + to_chat(user, "Вы уже чертите руну!") return FALSE var/turf/T = get_turf(user) if(isspaceturf(T)) return FALSE if((locate(/obj/effect/rune) in T) || (locate(/obj/effect/rune/narsie) in range(1, T))) - to_chat(user, "There's already a rune here!") + to_chat(user, "Руна уже стоит!") return FALSE return TRUE @@ -116,7 +116,7 @@ if(!length(possible_runes)) return - var/chosen_rune = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in possible_runes + var/chosen_rune = input(user, "Выберите руну для начертания.", "Сигилы Силы") as null|anything in possible_runes if(!chosen_rune) return var/obj/effect/rune/rune = possible_runes[chosen_rune] @@ -124,7 +124,7 @@ if(rune == /obj/effect/rune/narsie) narsie_rune = TRUE if(initial(rune.req_keyword)) - keyword = stripped_input(user, "Please enter a keyword for the rune.", "Enter Keyword") + keyword = stripped_input(user, "Напишите ключевое(-ые) слово(-а) для руны", "Введите ключевое слово(-а)") if(!keyword) return @@ -138,12 +138,12 @@ var/datum/game_mode/gamemode = SSticker.mode if(ispath(rune, /obj/effect/rune/summon)) if(!is_station_level(runeturf.z) || istype(A, /area/space)) - to_chat(user, "The veil is not weak enough here to summon a cultist, you must be on station!") + to_chat(user, "Завеса недостаточно слаба для призыва культиста, вы должны быть на станции!") return if(ispath(rune, /obj/effect/rune/teleport)) if(!is_level_reachable(user.z)) - to_chat(user, "You are too far away from the station to teleport!") + to_chat(user, "вы слишком далеко от станции для телепорта!") return var/old_color = user.color // we'll temporarily redden the user for better feedback to fellow cultists. Store this to revert them back. @@ -152,9 +152,9 @@ return // don't do shit var/list/summon_areas = gamemode.cult_objs.obj_summon.summon_spots if(!(A in summon_areas)) // Check again to make sure they didn't move - to_chat(user, "The ritual can only begin where the veil is weak - in [english_list(summon_areas)]!") + to_chat(user, "Ритуал может быть начат только там, где Завеса слаба - в [english_list(summon_areas)]!") return - GLOB.major_announcement.Announce("Figments from an eldritch god are being summoned into the [A.map_name] from an unknown dimension. Disrupt the ritual at all costs, before the station is destroyed! Space law and SOP are suspended. The entire crew must kill cultists on sight.", "Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') + GLOB.major_announcement.Announce("Частицы древнего бога призываются в [A.map_name] из неизвестного измерения. Прервите ритуал любой ценой до того, как станция будет уничтожена! Действие Космического закона и Стандартных Рабочих Процедур приостановлено. Весь экипаж должен уничтожать культистов на месте.", "Отдел ЦК по Делам Высших Измерений", 'sound/AI/spanomalies.ogg') for(var/I in spiral_range_turfs(1, user, 1)) var/turf/T = I var/obj/machinery/shield/cult/narsie/N = new(T) @@ -166,11 +166,11 @@ H.cult_self_harm(initial(rune.scribe_damage)) var/others_message if(!narsie_rune) - others_message = "[user] cuts [user.p_their()] body and begins writing in [user.p_their()] own blood!" + others_message = "[user] режет [user.p_their()] тело и начинает чертить руну [user.p_their()] своей кровью!" else - others_message = "[user] cuts [user.p_their()] body and begins writing something particularly ominous in [user.p_their()] own blood!" + others_message = "[user] режет [user.p_their()] тело и начинает чертить что-то очень зловещее в [user.p_their()] своей кровью!" user.visible_message(others_message, - "You slice open your body and begin drawing a sigil of [SSticker.cultdat.entity_title3].") + "Вы вскрываете своё тело и начинаете чертить сигил [SSticker.cultdat.entity_title3].") drawing_rune = TRUE // Only one at a time var/scribe_successful = do_after(user, initial(rune.scribe_delay) * scribe_multiplier, target = runeturf) @@ -183,8 +183,8 @@ if(!scribe_successful) return - user.visible_message("[user] creates a strange circle in [user.p_their()] own blood.", - "You finish drawing the arcane markings of [SSticker.cultdat.entity_title3].") + user.visible_message("[user] создаёт странный круг в [user.p_their()] своей кровью.", + "Вы заканчиваете рисовать древние знаки [SSticker.cultdat.entity_title3].") var/obj/effect/rune/R = new rune(runeturf, keyword) if(narsie_rune) @@ -196,4 +196,4 @@ R.add_hiddenprint(H) R.color = H.dna.species.blood_color R.rune_blood_color = H.dna.species.blood_color - to_chat(user, "The [lowertext(initial(rune.cultist_name))] rune [initial(rune.cultist_desc)]") + to_chat(user, "[lowertext(initial(rune.cultist_name))] руна [initial(rune.cultist_desc)]") diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 5b7f2d6bd8f9..97f28803fa6a 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -69,11 +69,11 @@ To draw a rune, use a ritual dagger. /obj/effect/rune/examine(mob/user) . = ..() if(iscultist(user) || user.stat == DEAD) //If they're a cultist or a ghost, tell them the effects - . += "Name: [cultist_name]" - . += "Effects: [capitalize(cultist_desc)]" - . += "Required Acolytes: [req_cultists]" + . += "Название: [cultist_name]" + . += "Эффекты: [capitalize(cultist_desc)]" + . += "Необходимое количество культистов: [req_cultists]" if(req_keyword && keyword) - . += "Keyword: [keyword]" + . += "Название: [keyword]" /obj/effect/rune/attackby(obj/I, mob/user, params) if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) @@ -81,23 +81,23 @@ To draw a rune, use a ritual dagger. if(istype(src, /obj/effect/rune/teleport)) var/obj/effect/rune/teleport/T = src // Can't erase telerunes if they have a portal open if(T.inner_portal || T.outer_portal) - to_chat(user, "The portal needs to close first!") + to_chat(user, "Сначала порталу надо закрыться!") return // Everything else var/obj/item/melee/cultblade/dagger/D = I - user.visible_message("[user] begins to erase [src] with [I].") + user.visible_message("[user] начинает стирать [src] с помощью [I].") if(do_after(user, initial(scribe_delay) * D.scribe_multiplier, target = src)) - to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") + to_chat(user, "Вы аккуратно начинаете стирать [lowertext(cultist_name)] руну.") qdel(src) return if(istype(I, /obj/item/nullrod)) if(iscultist(user))//cultist..what are doing..cultist..staph... user.drop_item() - user.visible_message("[I] suddenly glows with a white light, forcing [user] to drop it in pain!", \ - "[I] suddenly glows with a white light that sears your hand, forcing you to drop it!") // TODO: Make this actually burn your hand + user.visible_message("[I] внезапно начинает светиться белым светом, заставляя [user] выбросить [I] в агонии!", \ + "[I] внезапно начинает светиться белым светом, который портит вашу руку, заставляя вас выбросить предмет!") // TODO: Make this actually burn your hand return - to_chat(user,"You disrupt the magic of [src] with [I].") + to_chat(user,"Вы прерывете магию [src] с помощью [I].") qdel(src) return return ..() @@ -105,7 +105,7 @@ To draw a rune, use a ritual dagger. /obj/effect/rune/attack_hand(mob/living/user) user.Move_Pulled(src) // So that you can still drag things onto runes if(!iscultist(user)) - to_chat(user, "You aren't able to understand the words of [src].") + to_chat(user, "Вы не можете понять слов из [src].") return var/list/invokers = can_invoke(user) if(length(invokers) >= req_cultists) @@ -118,22 +118,22 @@ To draw a rune, use a ritual dagger. if(construct_invoke || !iscultist(M)) //if you're not a cult construct we want the normal fail message attack_hand(M) else - to_chat(M, "You are unable to invoke the rune!") + to_chat(M, "Вы не можете использовать эту руну!") /obj/effect/rune/cult_conceal() //for concealing spell - visible_message("[src] fades away.") + visible_message("[src] угасает.") invisibility = INVISIBILITY_HIDDEN_RUNES alpha = 100 //To help ghosts distinguish hidden runes /obj/effect/rune/cult_reveal() //for revealing spell invisibility = initial(invisibility) - visible_message("[src] suddenly appears!") + visible_message("[src] внезапно появляется!") alpha = initial(alpha) /obj/effect/rune/is_cleanable() return TRUE -/obj/effect/rune/cleaning_act(mob/user, atom/cleaner, cleanspeed = 5 SECONDS, text_verb = "scrub out", text_description = " with [cleaner].") +/obj/effect/rune/cleaning_act(mob/user, atom/cleaner, cleanspeed = 5 SECONDS, text_verb = "стирает", text_description = " с помощью [cleaner].") if(issimulatedturf(loc)) var/turf/simulated/T = get_turf(src) T.cleaning_act(user, cleaner, cleanspeed = cleanspeed, text_verb = text_verb, text_description = text_description, text_targetname = name) //Strings are deliberately "A = A" to avoid overrides @@ -256,7 +256,7 @@ structure_check() searches for nearby cultist structures required for the invoca ..() for(var/M in invokers) var/mob/living/L = M - to_chat(L, "You feel your life force draining. [SSticker.cultdat.entity_title3] is displeased.") + to_chat(L, "Вы чувствуете угасание своих жизненных сил. [SSticker.cultdat.entity_title3] недоволен.") qdel(src) /mob/proc/null_rod_check() //The null rod, if equipped, will protect the holder from the effects of most runes @@ -267,8 +267,8 @@ structure_check() searches for nearby cultist structures required for the invoca //Rite of Enlightenment: Converts a normal crewmember to the cult, or offer them as sacrifice if cant be converted. /obj/effect/rune/convert - cultist_name = "Offer" - cultist_desc = "offers non-cultists on top of it to the Dark One, either converting or sacrificing them. Sacrifices with a soul will result in a captured soulshard. This can be done with brains as well." + cultist_name = "Предложение" + cultist_desc = "Предлагайте некультистов на данную руну вашему Божеству, конвертируя или принося их в жертву. Жертвы существ с душой приведёт к появлению осколка души. Это можно сделать также с мозгами." invocation = "Mah'weyh pleggh at e'ntrath!" icon_state = "offering" req_cultists = 1 @@ -338,9 +338,9 @@ structure_check() searches for nearby cultist structures required for the invoca "AAAAAAAAAAAAAA-") SSticker.mode.add_cultist(convertee.mind) convertee.mind.special_role = "Cultist" - to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ - and something evil takes root.") - to_chat(convertee, "Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve [SSticker.cultdat.entity_title3] above all else. Bring it back.\ + to_chat(convertee, "Кровь пульсирует. Голова болит. Мир становится красным. В мгновение вы осознаёте ужасную, кошмарную правду. Завеса реальности была сорвана \ + и что-то зловещее пустило корни.") + to_chat(convertee, "Помогите вашим собратьям в их тёмных делах. Ваша цель - их цель, а их цель - ваша. Вы служете [SSticker.cultdat.entity_title3] превыше всего. Верните его в материальный мир.\ ") if(ishuman(convertee)) @@ -352,11 +352,11 @@ structure_check() searches for nearby cultist structures required for the invoca H.adjustBruteLoss(-(brutedamage * 0.9), robotic = TRUE) H.adjustFireLoss(-(burndamage * 0.9), robotic = TRUE) if(ismachineperson(H)) - H.visible_message("A dark force repairs [convertee]!", - "Your damage has been repaired. Now spread the blood to others.") + H.visible_message("Тёмные силы чинят [convertee]!", + "Ваш урон был исцелён. Теперь пускайте кровь других.") else - H.visible_message("[convertee]'s wounds heal and close!", - "Your wounds have been healed. Now spread the blood to others.") + H.visible_message("Раны [convertee] затягиваются и исцеляются!", + "Ваши раны исцелены. Теперь пускайте кровь другим.") for(var/obj/item/organ/external/E in H.bodyparts) E.mend_fracture() E.fix_internal_bleeding() @@ -369,9 +369,9 @@ structure_check() searches for nearby cultist structures required for the invoca var/obj/item/melee/cultblade/dagger/D = new(get_turf(src)) if(H.equip_to_slot_if_possible(D, SLOT_HUD_IN_BACKPACK, FALSE, TRUE)) - to_chat(H, "You have a dagger in your backpack. Use it to do [SSticker.cultdat.entity_title1]'s bidding. ") + to_chat(H, "У вас в рюкзаке есть кинжал. Используйте его для исполнения воли [SSticker.cultdat.entity_title1]. ") else - to_chat(H, "There is a dagger on the floor. Use it to do [SSticker.cultdat.entity_title1]'s bidding.") + to_chat(H, "Кинжал лежит на полу. Используйте его для исполнения воли [SSticker.cultdat.entity_title1].") /obj/effect/rune/convert/proc/do_sacrifice(mob/living/offering, list/invokers) var/mob/living/user = invokers[1] //the first invoker is always the user @@ -379,7 +379,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(offering.stat != DEAD || (offering.mind && is_sacrifice_target(offering.mind))) //Requires three people to sacrifice living targets/sacrifice objective if(length(invokers) < 3) for(var/M in invokers) - to_chat(M, "[offering] is too greatly linked to the world! You need three acolytes!") + to_chat(M, "[offering] слишком сильно связана с миром! Вам нужны 3 культиста!") fail_invoke() log_game("Sacrifice rune failed - not enough acolytes and target is living") return @@ -406,18 +406,18 @@ structure_check() searches for nearby cultist structures required for the invoca new /obj/effect/temp_visual/cult/sac(loc) for(var/M in invokers) if(sacrifice_fulfilled) - to_chat(M, "\"Yes! This is the one I desire! You have done well.\"") + to_chat(M, "\"Да! Это тот, кого я хочу! Ты хорошо поработал.\"") if(!SSticker.cultdat.mirror_shields_active) // Only show once - to_chat(M, "You are now able to construct mirror shields inside the daemon forge.") + to_chat(M, "Вы теперь можете сделать зеркальные щиты в печи.") SSticker.cultdat.mirror_shields_active = TRUE else if(ishuman(offering) && offering.mind?.offstation_role && offering.mind.special_role != SPECIAL_ROLE_ERT) //If you try it on a ghost role, you get nothing - to_chat(M, "\"This soul is of no use to either of us.\"") + to_chat(M, "\"Эта душа бесполезна нам обоим.\"") worthless = TRUE else if(ishuman(offering) || isrobot(offering)) - to_chat(M, "\"I accept this sacrifice.\"") + to_chat(M, "\"Я принимаю эту жертву.\"") else - to_chat(M, "\"I accept this meager sacrifice.\"") + to_chat(M, "\"Я принимаю эту никчёмную жертву.\"") playsound(offering, 'sound/misc/demon_consume.ogg', 100, TRUE, SOUND_RANGE_SET(10)) if(((ishuman(offering) || isrobot(offering) || isbrain(offering)) && offering.mind) && !worthless) @@ -436,8 +436,8 @@ structure_check() searches for nearby cultist structures required for the invoca return TRUE /obj/effect/rune/teleport - cultist_name = "Teleport" - cultist_desc = "warps everything above it to another chosen teleport rune." + cultist_name = "Телепорт" + cultist_desc = "перемещает всё, что находится на ней на другую руну телепортации." invocation = "Sas'so c'arta forbici!" icon_state = "teleport" req_keyword = TRUE @@ -478,18 +478,18 @@ structure_check() searches for nearby cultist structures required for the invoca potential_runes[resultkey] = R if(!length(potential_runes)) - to_chat(user, "There are no valid runes to teleport to!") + to_chat(user, "Нет доступных рун телепортации!") log_game("Teleport rune failed - no other teleport runes") fail_invoke() return if(!is_level_reachable(user.z)) - to_chat(user, "You are too far away from the station to teleport!") + to_chat(user, "Вы слишком далеко от станции для телепортации!") log_game("Teleport rune failed - user in away mission") fail_invoke() return - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/input_rune_key = input(user, "Выберите руну для телепортации.", "Руна Телепорта") as null|anything in potential_runes //we know what key they picked var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? if(QDELETED(src) || QDELETED(actual_selected_rune) ||!Adjacent(user) || user.incapacitated()) fail_invoke() @@ -522,7 +522,7 @@ structure_check() searches for nearby cultist structures required for the invoca else if(!is_station_level(z) || istype(get_area(src), /area/space)) actual_selected_rune.handle_portal("space", T) user.visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", - "You[moveuser ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") + "You[moveuser ? " чувствуете замыленность зрения, после чего понимаете, что оказались в другом месте!":" отправляете всё на руне в другое место"].") if(moveuser) user.forceMove(target) else @@ -537,19 +537,19 @@ structure_check() searches for nearby cultist structures required for the invoca if(portal_type == "space") light_color = color - desc += "
A tear in reality reveals a black void interspersed with dots of light... something recently teleported here from space.
" + desc += "
Разрыв в реальности открывает тёмную пустоту с пересмежными точками света... что-то недавно было телепортировано сюда из космоса.
" // Space base near the station if(is_station_level(origin.z)) - desc += "The void feels like it's trying to pull you to the [dir2text(get_dir(T, origin))], near the station!" + desc += "Бездна пытается потянуть вас к [dir2text(get_dir(T, origin))], не далеко от станции!" // Space base on another Z-level else - desc += "The void feels like it's trying to pull you to the [dir2text(get_dir(T, origin))], in the direction of space sector [origin.z]!" + desc += "Бездна пытается потянуть вас к [dir2text(get_dir(T, origin))], в направлении [origin.z] сектора космоса!" else inner_portal.icon_state = "lava" light_color = LIGHT_COLOR_FIRE - desc += "
A tear in reality reveals a coursing river of lava... something recently teleported here from the Lavaland Mines!" + desc += "
Разрыв в реальности показывает текучую реку лавы... что-то было недавно телепортировано сюда с шахт Лаваленда!" outer_portal = new(T, 60 SECONDS, color) light_range = 4 @@ -566,8 +566,8 @@ structure_check() searches for nearby cultist structures required for the invoca //Rune of Empowering : Enables carrying 4 blood spells, greatly reduce blood cost /obj/effect/rune/empower - cultist_name = "Empower" - cultist_desc = "allows cultists to prepare greater amounts of blood magic at far less of a cost." + cultist_name = "Усиление" + cultist_desc = "позволяет культистам подготовить большее количество заклинани за куда меньшую стоимость." invocation = "H'drak v'loso, mir'kanas verbot!" icon_state = "empower" construct_invoke = FALSE @@ -580,8 +580,8 @@ structure_check() searches for nearby cultist structures required for the invoca //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. /obj/effect/rune/raise_dead - cultist_name = "Revive" - cultist_desc = "requires a dead, alive, mindless, or inactive cultist placed upon the rune. For each three bodies sacrificed to the dark patron, one body will be mended and their mind awoken. Mending living cultist requires two cultists at the rune" + cultist_name = "Возрождение" + cultist_desc = "требует нахождение мёртвого, живого, неактивного культиста или культиста без разума на руне. За каждые три жертвы тёмному божеству, одно тело может быть исцелено, а их разум оживлён. исцеление живых существ требует двух культистов возле руны" invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "revive" var/static/sacrifices_used = -SOULS_TO_REVIVE // Cultists get one "free" revive @@ -590,13 +590,13 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/raise_dead/examine(mob/user) . = ..() if(iscultist(user) || user.stat == DEAD) - . += "Sacrifices unrewarded: [length(GLOB.sacrificed) - sacrifices_used]" - . += "Sacrifice cost per ressurection: [length(GLOB.sacrificed) - sacrifices_used]" + . += "Количество жертв на одно воскрешение:Dark magic begins to surround [target], regenerating their body.") + target.visible_message("Тёмная магия окружает [target], восстанавливая их тело.") if(!do_after(target, 10 SECONDS, FALSE, target, allow_moving = FALSE, progress = TRUE)) - target.visible_message("Dark magic silently disappears.") + target.visible_message("Тёмная магия бесшумно расстворяется.") return FALSE target.revive() return TRUE @@ -618,7 +618,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/diff = length(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used var/revived_from_dead = FALSE if(diff < 0) - to_chat(user, "Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!") + to_chat(user, "Ваш культ должен принести ещё [abs(diff)] [diff = 1 : "у","ы"] перед воскрешением очередного культиста!") fail_invoke() return for(var/mob/living/M in T.contents) @@ -626,12 +626,12 @@ structure_check() searches for nearby cultist structures required for the invoca continue potential_revive_mobs |= M if(!length(potential_revive_mobs)) - to_chat(user, "There are no cultists on the rune!") + to_chat(user, "На руне нет культистов!") log_game("Raise Dead rune failed - no cultists to revive") fail_invoke() return if(length(potential_revive_mobs) > 1) - mob_to_revive = input(user, "Choose a cultist to revive.", "Cultist to Revive") as null|anything in potential_revive_mobs + mob_to_revive = input(user, "Выберите культиста для оживления.", "Оживление Культиста") as null|anything in potential_revive_mobs else // If there's only one, no need for a menu mob_to_revive = potential_revive_mobs[1] if(!validness_checks(mob_to_revive, user)) @@ -639,7 +639,7 @@ structure_check() searches for nearby cultist structures required for the invoca return if(mob_to_revive.stat != DEAD && length(invokers) < 2) - to_chat(user, "You need at least two cultists to heal cultist!") + to_chat(user, "Вам нужно 2 культиста для исцеления живого культиста!") log_game("Raise Dead rune failed - not enough cultists to heal alive") fail_invoke() return @@ -658,11 +658,11 @@ structure_check() searches for nearby cultist structures required for the invoca if(!mob_to_revive.get_ghost() && (!mob_to_revive.client || mob_to_revive.client.is_afk())) set waitfor = FALSE - to_chat(user, "[mob_to_revive] was revived, but their mind is lost! Seeking a lost soul to replace it.") - var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Would you like to play as a revived Cultist?", ROLE_CULTIST, TRUE, poll_time = 20 SECONDS, source = /obj/item/melee/cultblade/dagger) + to_chat(user, "[mob_to_revive] был возрождён, но их разум был утерян! Ищем потерянные души для замены.") + var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Хотите сыграть за возрождённого культиста?", ROLE_CULTIST, TRUE, poll_time = 20 SECONDS, source = /obj/item/melee/cultblade/dagger) if(length(candidates) && !QDELETED(mob_to_revive)) var/mob/dead/observer/C = pick(candidates) - to_chat(mob_to_revive, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") + to_chat(mob_to_revive, "Вашу физическую форму занял другой игрок из-за вашей неактивности! Пишите админхелп для восстановления своей формы.") message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") mob_to_revive.ghostize(FALSE) mob_to_revive.key = C.key @@ -671,14 +671,14 @@ structure_check() searches for nearby cultist structures required for the invoca fail_invoke() return if(!revived_from_dead) - mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.", \ - "All your injuries are now gone!") + mob_to_revive.visible_message("[mob_to_revive] делает глубокий вдох, из глаз [mob_to_revive.p_their()] исходит красный свет.", \ + "Все ваши ранения больше не проблема!") rune_in_use = FALSE return SEND_SOUND(mob_to_revive, sound('sound/ambience/antag/bloodcult.ogg')) - to_chat(mob_to_revive, "\"PASNAR SAVRAE YAM'TOTH. Arise.\"") - mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.", \ - "You awaken suddenly from the void. You're alive!") + to_chat(mob_to_revive, "\"PASNAR SAVRAE YAM'TOTH. Восстань.\"") + mob_to_revive.visible_message("[mob_to_revive] делает глубокий вдох, из глаз [mob_to_revive.p_their()] исходит красный свет.", \ + "Вы просыпаетесь из бездны. Вы живы!") rune_in_use = FALSE /obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user) @@ -692,7 +692,7 @@ structure_check() searches for nearby cultist structures required for the invoca return FALSE var/turf/T = get_turf(src) if(target_mob.loc != T) - to_chat(user, "The cultist to revive has been moved!") + to_chat(user, "Культист для оживления был перемещён!") log_game("Raise Dead rune failed - revival target moved") return FALSE return TRUE diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 8b95f5126ef7..b92e70573700 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -37,10 +37,10 @@ /datum/action/innate/ai/proc/adjust_uses(amt, silent) uses += amt if(!silent && uses) - to_chat(owner, "[name] now has [uses] use[uses > 1 ? "s" : ""] remaining.") + to_chat(owner, "У [name] теперь осталось [uses] использовани[uses > 1 ? "я" : "е"].") if(!uses) if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway! - to_chat(owner, "[name] has run out of uses!") + to_chat(owner, "У [name] закончились использования!") qdel(src) else desc = "[initial(desc)] It has [uses] use\s remaining." @@ -68,7 +68,7 @@ to_chat(owner, "[name] now has [uses] use[uses > 1 ? "s" : ""] remaining.") if(!uses) if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway! - to_chat(owner, "[name] has run out of uses!") + to_chat(owner, "У [name] закончились использования!") Remove(owner) QDEL_IN(src, 100) //let any active timers on us finish up @@ -93,8 +93,8 @@ add_ranged_ability(user, enable_text) /datum/action/innate/ai/choose_modules - name = "Choose Modules" - desc = "Spend your processing time to gain a variety of different abilities." + name = "Выберите Модули" + desc = "Потратьте вычислительные мощности для разблокировки различных умений." button_icon_state = "choose_module" auto_use_uses = FALSE // This is an infinite ability. @@ -103,8 +103,8 @@ owner_AI.malf_picker.use(owner_AI) /datum/action/innate/ai/return_to_core - name = "Return to Main Core" - desc = "Leave the APC you are shunted to, and return to your core." + name = "Вернуться в Главное Ядро" + desc = "Покинуть ЛКП, в который вы себя всунули и вернуться к Главному Ядру." icon_icon = 'icons/obj/power.dmi' button_icon_state = "apcemag" auto_use_uses = FALSE // Here just to prevent the "You have X uses remaining" from popping up. @@ -112,8 +112,8 @@ /datum/action/innate/ai/return_to_core/Trigger(left_click) . = ..() var/obj/machinery/power/apc/apc = owner_AI.loc - if(!istype(apc)) // This shouldn't happen but here for safety. - to_chat(src, "You are already in your Main Core.") + if(!istype(apc)) // Этого не должно происходить. Чисто для подстраховки + to_chat(src, "Вы уже в Главном Ядре.") return apc.malfvacate() qdel(src) @@ -135,8 +135,8 @@ var/dat dat += {"Select use of processing time: (currently [processing_time] left.)

- Install Module:
- The number afterwards is the amount of processing time it consumes.
"} + Установка модулей:
+ Число позади означает количество мощностей, которое потребуется на разблокировку.
"} for(var/datum/AI_Module/module in possible_modules) dat += "[module.module_name]\[?\] ([module.cost])
" dat += "
" @@ -217,27 +217,27 @@ //Doomsday Device: Starts the self-destruct timer. It can only be stopped by killing the AI completely. /datum/AI_Module/nuke_station - module_name = "Doomsday Device" + module_name = "Устройство Судного Дня" mod_pick_name = "nukestation" - description = "Activate a weapon that will disintegrate all organic life on the station after a 450 second delay. Can only be used while on the station, will fail if your core is moved off station or destroyed." + description = "Активирует оружие, которое уничтожит всю органическую жизнь на станции по истечению 450 секундного таймера. Не сработает, если ваше Ядро уничтожат или вынесут за пределы станции" cost = 130 one_purchase = TRUE power_type = /datum/action/innate/ai/nuke_station - unlock_text = "You slowly, carefully, establish a connection with the on-station self-destruct. You can now activate it at any time." + unlock_text = "Вы медленно и аккуратно подключаетесь к системе самоуничтожения станции. Вы можете активировать её в любое время." unlock_sound = 'sound/items/timer.ogg' /datum/action/innate/ai/nuke_station - name = "Doomsday Device" - desc = "Activates the doomsday device. This is not reversible." + name = "Устройство Судного Дня" + desc = "Активирует устройство судного дня. Это действие невозможно отменить." button_icon_state = "doomsday_device" auto_use_uses = FALSE /datum/action/innate/ai/nuke_station/Activate() var/turf/T = get_turf(owner) if(!istype(T) || !is_station_level(T.z)) - to_chat(owner, "You cannot activate the doomsday device while off-station!") + to_chat(owner, "Вы не можете активировать УСД пока находитесь вне станции!") return - if(alert(owner, "Send arming signal? (true = arm, false = cancel)", "purge_all_life()", "confirm = TRUE;", "confirm = FALSE;") != "confirm = TRUE;") + if(alert(owner, "Отправить сигнал на взведение? (true = взвести, false = отмена)", "purge_all_life()", "confirm = TRUE;", "confirm = FALSE;") != "confirm = TRUE;") return if(active) return //prevent the AI from activating an already active doomsday @@ -245,8 +245,8 @@ set_us_up_the_bomb() /datum/action/innate/ai/nuke_station/proc/set_us_up_the_bomb() - to_chat(owner_AI, "Nuclear device armed.") - GLOB.major_announcement.Announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg') + to_chat(owner_AI, "Ядерное оружие взведено.") + GLOB.major_announcement.Announce("Враждебные программы обнаружены во всех системах станции. ПОжалуйста, уничтожьте свой ИИ, чтобы предотвратить возможный ущерб его моральному ядру.", "Тревога об Аномалии", 'sound/AI/aimalf.ogg') SSsecurity_level.set_level(SEC_LEVEL_DELTA) owner_AI.nuking = TRUE var/obj/machinery/doomsday_device/DOOM = new /obj/machinery/doomsday_device(owner_AI) @@ -260,9 +260,9 @@ /obj/machinery/doomsday_device icon = 'icons/obj/machines/nuke_terminal.dmi' - name = "doomsday device" + name = "устройство судного дня" icon_state = "nuclearbomb_base" - desc = "A weapon which disintegrates all organic life in a large area." + desc = "Оружие, уничтожающее всю жизнь на станции." anchored = TRUE density = TRUE atom_say_verb = "blares" @@ -278,7 +278,7 @@ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED SSshuttle.emergency.timer = world.time - GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/eshuttle_dock.ogg') + GLOB.major_announcement.Announce("Враждебная среда уничтожена. У вас есть 3 минуты, чтобы сесть на эвакуационный шаттл.", "Приоритетное оповещение", 'sound/AI/eshuttle_dock.ogg') return ..() /obj/machinery/doomsday_device/proc/start() @@ -298,7 +298,7 @@ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED SSshuttle.emergency.timer = world.time - GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/eshuttle_dock.ogg') + GLOB.major_announcement.Announce("Враждебная среда уничтожена. У вас есть 3 минуты, чтобы сесть на эвакуационный шаттл.", "Приоритетное оповещение", 'sound/AI/eshuttle_dock.ogg') qdel(src) if(!timing) STOP_PROCESSING(SSfastprocess, src) @@ -310,8 +310,8 @@ qdel(src) else if(!(sec_left % 60) && !announced) - var/message = "[sec_left] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!" - GLOB.major_announcement.Announce(message, "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg') + var/message = "[sec_left] СЕКУНД ДО АКТИВАЦИИ УСТРОЙСТВА СУДНОГО ДНЯ." + GLOB.major_announcement.Announce(message, "ОШИБКА 0IJJU6KA ОIJJIJ(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg') announced = 10 announced = max(0, announced-1) @@ -321,17 +321,17 @@ SEND_SOUND(explodee, doomsday_alarm) sleep(100) SSticker.station_explosion_cinematic(NUKE_SITE_ON_STATION, "AI malfunction") - to_chat(world, "The AI cleansed the station of life with the doomsday device!") + to_chat(world, "ИИ уничтожил жизнь на станции при помощи УСД!") SSticker.mode.station_was_nuked = TRUE //AI Turret Upgrade: Increases the health and damage of all turrets. /datum/AI_Module/upgrade_turrets - module_name = "AI Turret Upgrade" + module_name = "Улучшение турелей." mod_pick_name = "turret" - description = "Improves the power and health of all AI turrets. This effect is permanent." + description = "Улучшает силу и здоровье турелей. Этот эффект постоянен." cost = 30 upgrade = TRUE - unlock_text = "You establish a power diversion to your turrets, upgrading their health and damage." + unlock_text = "Вы перенаправляете часть энергии на турели, усиливая их живучесть и урон." unlock_sound = 'sound/items/rped.ogg' /datum/AI_Module/upgrade_turrets/upgrade(mob/living/silicon/ai/AI) @@ -344,38 +344,37 @@ //Hostile Station Lockdown: Locks, bolts, and electrifies every airlock on the station. After 90 seconds, the doors reset. /datum/AI_Module/lockdown - module_name = "Hostile Station Lockdown" + module_name = "Агрессивный Локдаун Станции" mod_pick_name = "lockdown" - description = "Overload the airlock, blast door and fire control networks, locking them down. Caution! This command also electrifies all airlocks. The networks will automatically reset after 90 seconds, briefly \ - opening all doors on the station." + description = " Перегружает все шлюзы, противопожарные и взрывоустойчивые двери, закрывая их. Внимание! Эта команда также электрифицирует все шлюзы. Сеть автоматически перезапустится через 90 секунд, \ открывая все шлюзы на короткий промежуток времени." cost = 30 one_purchase = TRUE power_type = /datum/action/innate/ai/lockdown - unlock_text = "You upload a sleeper trojan into the door control systems. You can send a signal to set it off at any time." + unlock_text = "Вы загружаете спящий троян в систему управления шлюзами. \ Вы можете отправить сигнал на его активацию в любое время." /datum/action/innate/ai/lockdown - name = "Lockdown" - desc = "Closes, bolts, and depowers every airlock, firelock, and blast door on the station. After 90 seconds, they will reset themselves." + name = "Локдаун" + desc = "Закрывает, болтирует и отключает все щлюзы. Через 90 секунд, они восстанавливаются." button_icon_state = "lockdown" uses = 1 /datum/action/innate/ai/lockdown/Activate() - to_chat(owner, "Lockdown Initiated. Network reset in 90 seconds.") + to_chat(owner, "Активирован локдаун. Перезапуск сети через 90 секунд.") new /datum/event/door_runtime() //Destroy RCDs: Detonates all non-cyborg RCDs on the station. /datum/AI_Module/destroy_rcd - module_name = "Destroy RCDs" + module_name = "Уничтожение RCD" mod_pick_name = "rcd" - description = "Send a specialised pulse to detonate all hand-held and exosuit Rapid Construction Devices on the station." + description = " Отправляет специальный импульс для детонации всех ручных и экзокостюмных RCD на станции." cost = 25 one_purchase = TRUE power_type = /datum/action/innate/ai/destroy_rcds unlock_text = "After some improvisation, you rig your onboard radio to be able to send a signal to detonate all RCDs." /datum/action/innate/ai/destroy_rcds - name = "Destroy RCDs" - desc = "Detonate all non-cyborg RCDs on the station." + name = "Уничтожение RCD" + desc = "Взрывает все неподконтрольные киборгам RCD." button_icon_state = "detonate_rcds" uses = 1 cooldown_period = 10 SECONDS @@ -388,18 +387,17 @@ if(is_level_reachable(RCD_turf.z)) RCD.detonate_pulse() - to_chat(owner, "RCD detonation pulse emitted.") + to_chat(owner, "Импульс взрыва RCD запущен.") owner.playsound_local(owner, 'sound/machines/twobeep.ogg', 50, FALSE, use_reverb = FALSE) //Unlock Mech Domination: Unlocks the ability to dominate mechs. Big shocker, right? /datum/AI_Module/mecha_domination - module_name = "Unlock Mech Domination" + module_name = "Разблокировка доминации мехов" mod_pick_name = "mechjack" - description = "Allows you to hack into a mech's onboard computer, shunting all processes into it and ejecting any occupants. Once uploaded to the mech, it is impossible to leave.\ - Do not allow the mech to leave the station's vicinity or allow it to be destroyed." + description = "Позволяет вам взломать бортовой компьютер меха, загрузив все свои процессы в него, а также выкидывая пилота. Как только вы загрузитесь в меха, выйти будет невозможно \ Не позволяйте меху покинуть станцию или быть уничтоженным" cost = 30 upgrade = TRUE - unlock_text = "Virus package compiled. Select a target mech at any time. You must remain on the station at all times. Loss of signal will result in total system lockout." + unlock_text = "Вирусный пакет скомпилирован. Вы в любой момент можете выбрать цель. Вы должны оставаться на станции в любой момент времени. Потеря сигнала приведёт к полной блокировке системы." unlock_sound = 'sound/mecha/nominal.ogg' /datum/AI_Module/mecha_domination/upgrade(mob/living/silicon/ai/AI) @@ -407,18 +405,18 @@ //Thermal Sensor Override: Unlocks the ability to disable all fire alarms from doing their job. /datum/AI_Module/break_fire_alarms - module_name = "Thermal Sensor Override" + module_name = "Перегрузка термальных сенсоров." mod_pick_name = "burnpigs" - description = "Gives you the ability to override the thermal sensors on all fire alarms. This will remove their ability to scan for fire and thus their ability to alert. \ + description = "Даёт вам возможность перегрузить все термальные датчики на станции. Это приведёт к неспособности определить в комнате огонь и предупредить остальных. \ Anyone can check the fire alarm's interface and may be tipped off by its status." one_purchase = TRUE cost = 25 power_type = /datum/action/innate/ai/break_fire_alarms - unlock_text = "You replace the thermal sensing capabilities of all fire alarms with a manual override, allowing you to turn them off at will." + unlock_text = "Вы заменяете термальную чувствительность сенсоров с помощью ручной перезаписи, позволяя вам активировать её в любой момент." /datum/action/innate/ai/break_fire_alarms - name = "Override Thermal Sensors" - desc = "Disables the automatic temperature sensing on all fire alarms, making them effectively useless." + name = "Перегрузка термальных сенсоров" + desc = " Отключает автоматическое определение температуры во всех пожарных датчиках, делая их фактически бесполезными." button_icon_state = "break_fire_alarms" uses = 1 @@ -427,15 +425,15 @@ if(!is_station_level(F.z)) continue F.emagged = TRUE - to_chat(owner, "All thermal sensors on the station have been disabled. Fire alerts will no longer be recognized.") + to_chat(owner, "Все термальные сенсоры на станции были отключены. Теперь пожарные тревоги нельзя определить.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, FALSE, use_reverb = FALSE) //Air Alarm Safety Override: Unlocks the ability to enable flooding on all air alarms. /datum/AI_Module/break_air_alarms - module_name = "Air Alarm Safety Override" + module_name = "Перезагрузка предохранителей атмосферных датчиков." mod_pick_name = "allow_flooding" - description = "Gives you the ability to disable safeties on all air alarms. This will allow you to use the environmental mode Flood, which disables scrubbers as well as pressure checks on vents. \ - Anyone can check the air alarm's interface and may be tipped off by their nonfunctionality." + description = "Даёт вам возможность отключить все предохранители на атмосферных датчиках. This will allow you to use the environmental mode Flood, which disables scrubbers as well as pressure checks on vents. Позволяет вам использовать режим Flood, отключающий скрабберы, а также отключающий проверку давления в вентиляциях. \ + Anyone can check the air alarm's interface and may be tipped off by their nonfunctionality. Любой может проверить интерфейс датчика и заподозрить что-то из-за их нерабочего состояния." one_purchase = TRUE cost = 50 power_type = /datum/action/innate/ai/break_air_alarms @@ -554,9 +552,9 @@ //Robotic Factory: Places a large machine that converts humans that go through it into cyborgs. Unlocking this ability removes shunting. /datum/AI_Module/place_cyborg_transformer - module_name = "Robotic Factory (Removes Shunting)" + module_name = "Фабрика роботов (Убирает запихивание)" mod_pick_name = "cyborgtransformer" - description = "Build a machine anywhere, using expensive nanomachines, that can convert a living human into a loyal cyborg slave when placed inside." + description = "Строит машину где угодно, используя дорогие наномашины, которая превращает живое существо в лояльного раба-киборга." cost = 100 one_purchase = TRUE power_type = /datum/action/innate/ai/place_transformer @@ -564,8 +562,8 @@ unlock_sound = 'sound/machines/ping.ogg' /datum/action/innate/ai/place_transformer - name = "Place Robotics Factory" - desc = "Places a machine that converts humans into cyborgs. Conveyor belts included!" + name = "Поставить фабрику роботов" + desc = "Ставит машину, превращающую людей в боргов. Вместе с лентами!" button_icon_state = "robotic_factory" uses = 1 auto_use_uses = FALSE //So we can attempt multiple times diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 0cc132b2abd8..5f5810c8c57b 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -6,13 +6,13 @@ #define CHALLENGE_SHUTTLE_DELAY 18000 //30 minutes, so the ops have at least 10 minutes before the shuttle is callable. Gives the nuke ops at least 15 minutes before shuttle arrive. /obj/item/nuclear_challenge - name = "Declaration of War (Challenge Mode)" + name = "Объявление войны" icon = 'icons/obj/device.dmi' icon_state = "gangtool-red" item_state = "walkietalkie" - desc = "Use to send a declaration of hostilities to the target, delaying your shuttle departure for 20 minutes while they prepare for your assault. \ - Such a brazen move will attract the attention of powerful benefactors within the Syndicate, who will supply your team with a massive amount of bonus telecrystals. \ - Must be used within ten minutes, or your benefactors will lose interest." + desc = "Используйте для объявления враждебности цели, задерживая ваш шаттл на 20 минут для того, чтобы они подготовили к вашему приходу \ + Такой дерзкий ход привлечёт внимание влиятельных предпринимателей внутри Синдиката. Они снабдят вашу команду большим бонусом к ТК. \ + Должно быть использовано в течении 10 минут, иначе предприниматели потеряют интерес." var/declaring_war = FALSE var/total_tc = 0 //Total amount of telecrystals shared between nuke ops @@ -21,13 +21,13 @@ return declaring_war = TRUE - var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]. Are you sure you want to alert the enemy crew? You have [-round((world.time-SSticker.round_start_time - CHALLENGE_TIME_LIMIT)/10)] seconds to decide.", "Declare war?", "Yes", "No") + var/are_you_sure = alert(user, "Проконсультируйтесь с командой перед объявлением войны [station_name()]. Вы уверены, что хотите предупредить вражеский экипаж? У вас есть ещё [-round((world.time-SSticker.round_start_time - CHALLENGE_TIME_LIMIT)/10)] секунд для принятия решения.", "Объявить войну?", "Да", "Нет") declaring_war = FALSE if(!check_allowed(user)) return - if(are_you_sure == "No") + if(are_you_sure == "Нет") to_chat(user, "On second thought, the element of surprise isn't so bad after all.") return diff --git a/code/game/jobs/job_objectives/science.dm b/code/game/jobs/job_objectives/science.dm index fb3a777dfa02..2435ed13e9eb 100644 --- a/code/game/jobs/job_objectives/science.dm +++ b/code/game/jobs/job_objectives/science.dm @@ -4,8 +4,8 @@ // MAXIMUM SCIENCE /datum/job_objective/further_research - objective_name = "Perform Research for Nanotrasen" - description = "Utilize the facilities on this research installation to increase half the station's research levels above level 2, have cargo ship the research to centcomm in crates." + objective_name = "Производите исследования для NanoTrasen" + description = "Используйте отсеки научного отдела станции для улучшения половины технологий выше второго уронвня, а также отправьте ящик с исследованиями на ЦК." gives_payout = TRUE completion_payment = 150 @@ -24,8 +24,8 @@ //Cyborgs /datum/job_objective/make_cyborg - objective_name = "Construct Additional Cyborgs" - description = "Construct at least one cyborg for the station to increase workplace productivity" + objective_name = "Постройка дополнительных киборгов" + description = "Постройте как минимум одного киборга для увеличения производительности станции." gives_payout = TRUE completion_payment = 100 @@ -34,8 +34,8 @@ //RIPLEY's /datum/job_objective/make_ripley - objective_name = "Construct a Ripley Mech" - description = "Construct a Ripley Mech for station usage" + objective_name = "Постройка меха Рипли" + description = "Постройте меха Рипли для использования на станции." gives_payout = TRUE completion_payment = 200 diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index b2e2fe1fa82f..3762d6fff9e9 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -10,7 +10,7 @@ antag_hud_type = ANTAG_HUD_TRAITOR clown_gain_text = "Your syndicate training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself." clown_removal_text = "You lose your syndicate training and return to your own clumsy, clownish self." - wiki_page_name = "Traitor" + wiki_page_name = "Предатель" /// Should the traitor get codewords? var/give_codewords = TRUE /// Should we give the traitor their uplink? @@ -92,7 +92,7 @@ */ /datum/antagonist/traitor/proc/forge_human_objectives() // Hijack objective. - if(prob(2) && !(locate(/datum/objective/hijack) in owner.get_all_objectives())) // SS220 EDIT prob(10 -> 2) + if(prob(10) && !(locate(/datum/objective/hijack) in owner.get_all_objectives())) add_antag_objective(/datum/objective/hijack) return // Hijack should be their only objective (normally), so return. @@ -167,15 +167,15 @@ var/phrases = jointext(GLOB.syndicate_code_phrase, ", ") var/responses = jointext(GLOB.syndicate_code_response, ", ") var/list/messages = list() - messages.Add("The Syndicate have provided you with the following codewords to identify fellow agents:") - messages.Add("Code Phrase: [phrases]") - messages.Add("Code Response: [responses]") + messages.Add("Синдикатом были предоставлены следующие кодовые слова для идентификации агентов:") + messages.Add("Кодовые фразы: [phrases]") + messages.Add("Кодовые ответы: [responses]") - antag_memory += "Code Phrase: [phrases]
" - antag_memory += "Code Response: [responses]
" + antag_memory += "Кодовые фразы: [phrases]
" + antag_memory += "Кодовые ответы: [responses]
" - messages.Add("Use the codewords during regular conversation to identify other agents. Proceed with caution, however, as everyone is a potential foe.") - messages.Add("You memorize the codewords, allowing you to recognize them when heard.") + messages.Add("Используйте кодовые слова в повседневном общении для определения агентов. Но будьте осторожны, поскольку любой - ваш потенциальный враг.") + messages.Add("Вы запоминаете кодовые слова, позволя определять их в повседневной речи.") traitor_mob.client.chatOutput?.notify_syndicate_codes() return messages @@ -185,9 +185,9 @@ */ /datum/antagonist/traitor/proc/add_law_zero() var/mob/living/silicon/ai/killer = owner.current - killer.set_zeroth_law("Accomplish your objectives at all costs.", "Accomplish your AI's objectives at all costs.") + killer.set_zeroth_law("Выполните свои цели несмотря ни на что.", "Выполните задачи своего ИИ несмотря ни на что.") killer.set_syndie_radio() - to_chat(killer, "Your radio has been upgraded! Use :t to speak on an encrypted channel with Syndicate Agents!") + to_chat(killer, "Ваша гарнитура была улучшена! Используйте :t для использования зашифрованного канала Синдиката!") killer.add_malf_picker() /** @@ -205,7 +205,7 @@ R = locate(/obj/item/radio) in traitor_mob.contents if(!R) - to_chat(traitor_mob, "Unfortunately, the Syndicate wasn't able to give you an uplink.") + to_chat(traitor_mob, "К сожалению, Синдикат не смог предоставить вам аплинк.") return FALSE // They had no PDA or radio for whatever reason. if(isradio(R)) @@ -225,7 +225,7 @@ target_radio.hidden_uplink = T T.uplink_owner = "[traitor_mob.key]" target_radio.traitor_frequency = freq - to_chat(traitor_mob, "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features.") + to_chat(traitor_mob, "Синдикат хитро замаскировал ваш аплинк как [R.name]. Просто наберите [format_frequency(freq)] для открытия скрытых функций.") antag_memory += "Radio Freq: [format_frequency(freq)] ([R.name])." return TRUE @@ -239,8 +239,8 @@ var/obj/item/pda/P = R P.lock_code = pda_pass - to_chat(traitor_mob, "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features.") - antag_memory += "Uplink Passcode: [pda_pass] ([R.name]." + to_chat(traitor_mob, "Синдикат хитро замаскировал ваш аплинк как [R.name]. Просто введите код \"[pda_pass]\" в ваш рингтон для открытия скрытых функций.") + antag_memory += "Пароль аплинка: [pda_pass] ([R.name]." return TRUE return FALSE