From 2dbf910369cea9303739aed7b9c7184fe1217aec Mon Sep 17 00:00:00 2001 From: Ingakem <146962612+Ingakem@users.noreply.github.com> Date: Thu, 2 May 2024 03:18:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=BB=D1=88=D0=B5=D0=B1=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=A1=D0=BF=D0=B5=D0=B9=D1=81=20=D0=92=D0=B8=D0=B7=D0=B0=D1=80?= =?UTF-8?q?=D0=B4=D0=B0=20(#229)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Перевод чаклуна ## Why It's Good For The Game Потому что, потому ## Changelog :cl: Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод Перевод /:cl: --- code/datums/status_effects/buffs.dm | 2 +- .../antagonists/_common/antag_datum.dm | 2 +- .../equipment/spellbook_entries/_entry.dm | 22 +- .../equipment/spellbook_entries/assistance.dm | 56 ++--- .../equipment/spellbook_entries/challenges.dm | 4 +- .../equipment/spellbook_entries/defensive.dm | 68 +++--- .../equipment/spellbook_entries/mobility.dm | 18 +- .../equipment/spellbook_entries/offensive.dm | 54 ++--- .../equipment/spellbook_entries/summons.dm | 36 +-- .../wizard/equipment/wizard_spellbook.dm | 50 ++-- .../wizard/grand_ritual/grand_ritual.dm | 58 ++--- .../wizard/grand_ritual/grand_rune.dm | 82 +++---- code/modules/antagonists/wizard/wizard.dm | 78 +++---- .../tgui/interfaces/AntagInfoWizard.tsx | 77 ++++--- .../tgui/interfaces/ApprenticeContract.tsx | 35 +-- tgui/packages/tgui/interfaces/Spellbook.tsx | 217 +++++++++--------- 16 files changed, 433 insertions(+), 426 deletions(-) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 5784739cd9c6a..71fa10c2a1c04 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -550,7 +550,7 @@ /atom/movable/screen/alert/status_effect/blessing_of_insanity name = "Blessing of Insanity" - desc = "Your devotion to madness has improved your resilience to all damage and you gain the power to levitate!" + desc = "Преданность безумию повысила вашу устойчивость к любым повреждениям, и вы обрели способность левитировать!" //no screen alert - the gravity already throws one /datum/status_effect/blessing_of_insanity/on_apply() diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index c401826fdbdfe..dbc6139c9cb0b 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -407,7 +407,7 @@ GLOBAL_LIST_EMPTY(antagonists) * Appears at start of roundend_catagory section. */ /datum/antagonist/proc/roundend_report_header() - return "The [roundend_category] were:
" + return "[roundend_category] были:
" /** * Proc that sends string data for the round-end report. diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm index 0586d7ea6da4a..4e247a0e1059a 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/_entry.dm @@ -25,7 +25,7 @@ /// Is this refundable? var/refundable = TRUE /// Flavor. Verb used in saying how the spell is aquired. Ex "[Learn] Fireball" or "[Summon] Ghosts" - var/buy_word = "Learn" + var/buy_word = "Выучить" /// The cooldown of the spell var/cooldown /// Whether the spell requires wizard garb or not @@ -86,10 +86,10 @@ if(existing) var/before_name = existing.name if(!existing.level_spell()) - to_chat(user, span_warning("This spell cannot be improved further!")) + to_chat(user, span_warning("Это заклинание не может быть болeе улучшено!")) return FALSE - to_chat(user, span_notice("You have improved [before_name] into [existing.name].")) + to_chat(user, span_notice("Вы улучшили [before_name] в [existing.name].")) name = existing.name //we'll need to update the cooldowns for the spellbook @@ -104,7 +104,7 @@ //No same spell found - just learn it var/datum/action/cooldown/spell/new_spell = new spell_type(user.mind || user) new_spell.Grant(user) - to_chat(user, span_notice("You have learned [new_spell.name].")) + to_chat(user, span_notice("Вы выучили - [new_spell.name].")) if(log_buy) log_spellbook("[key_name(user)] learned [new_spell] for [cost] points") @@ -160,7 +160,7 @@ /datum/spellbook_entry/proc/refund_spell(mob/living/carbon/human/user, obj/item/spellbook/book) var/area/centcom/wizard_station/wizard_home = GLOB.areas_by_type[/area/centcom/wizard_station] if(get_area(user) != wizard_home) - to_chat(user, span_warning("You can only refund spells at the wizard lair!")) + to_chat(user, span_warning("Вы можете вернуть очки за заклинания только в логове волшебника!")) return -1 for(var/datum/action/cooldown/spell/to_refund in user.actions) @@ -193,7 +193,7 @@ /// Item summons, they give you an item. /datum/spellbook_entry/item refundable = FALSE - buy_word = "Summon" + buy_word = "Призвать" /// Typepath of what item we create when purchased var/obj/item/item_path @@ -209,14 +209,14 @@ /// Attempts to give the item to the buyer on purchase. /datum/spellbook_entry/item/proc/try_equip_item(mob/living/carbon/human/user, obj/item/to_equip) var/was_put_in_hands = user.put_in_hands(to_equip) - to_chat(user, span_notice("\A [to_equip.name] has been summoned [was_put_in_hands ? "in your hands" : "at your feet"].")) + to_chat(user, span_notice("Приобретенный [to_equip.name] был призван [was_put_in_hands ? "в ваши руки" : "у ваших ног"].")) /// Ritual, these cause station wide effects and are (pretty much) a blank slate to implement stuff in /datum/spellbook_entry/summon - category = "Rituals" + category = "Ритуалы" limit = 1 refundable = FALSE - buy_word = "Cast" + buy_word = "Провести" /datum/spellbook_entry/summon/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE) if(log_buy) @@ -229,9 +229,9 @@ /// Non-purchasable flavor spells to populate the spell book with, for style. /datum/spellbook_entry/challenge name = "Take the Challenge" - category = "Challenges" + category = "Испытания" refundable = FALSE - buy_word = "Accept" + buy_word = "Принять" // See, non-purchasable. /datum/spellbook_entry/challenge/can_buy(mob/living/carbon/human/user, obj/item/spellbook/book) diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm index 69c33e751ece7..c8b21c8ba6c98 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/assistance.dm @@ -1,49 +1,49 @@ -#define SPELLBOOK_CATEGORY_ASSISTANCE "Assistance" +#define SPELLBOOK_CATEGORY_ASSISTANCE "Поддержка" // Wizard spells that assist the caster in some way /datum/spellbook_entry/summonitem name = "Summon Item" - desc = "Recalls a previously marked item to your hand from anywhere in the universe." + desc = "Возвращает в вашу руку ранее отмеченный предмет из любой точки вселенной." spell_type = /datum/action/cooldown/spell/summonitem category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/charge name = "Charge" - desc = "This spell can be used to recharge a variety of things in your hands, from magical artifacts to electrical components. A creative wizard can even use it to grant magical power to a fellow magic user." + desc = "Это заклинание можно использовать для подзарядки самых разных предметов в ваших руках, от магических артефактов до электрических компонентов. Креативный волшебник может даже использовать его, чтобы наделить магической силой своего товарища." spell_type = /datum/action/cooldown/spell/charge category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/shapeshift name = "Wild Shapeshift" - desc = "Take on the shape of another for a time to use their natural abilities. Once you've made your choice it cannot be changed." + desc = "Примите на время облик другого существа, чтобы использовать его способности. После того как вы сделали свой выбор, его нельзя изменить." spell_type = /datum/action/cooldown/spell/shapeshift/wizard category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/tap name = "Soul Tap" - desc = "Fuel your spells using your own soul!" + desc = "Заряжайте свои заклинания, используя собственную душу!" spell_type = /datum/action/cooldown/spell/tap category = SPELLBOOK_CATEGORY_ASSISTANCE cost = 1 /datum/spellbook_entry/item/staffanimation name = "Staff of Animation" - desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." + desc = "Арканный посох, способный стрелять зарядами эльдрической энергии, которые заставляют оживать неодушевленные предметы. Эта магия не действует на машины." item_path = /obj/item/gun/magic/staff/animate category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/soulstones name = "Soulstone Shard Kit" - desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. \ - The spell Artificer allows you to create arcane machines for the captured souls to pilot." + desc = "Осколки камней душ - древние инструменты, способные захватить и использовать души мертвых и умирающих. \ + Заклинание Artificer позволяет создавать магические машины для пойманных душ, которыми они могут управлять." item_path = /obj/item/storage/belt/soulstone/full category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/soulstones/try_equip_item(mob/living/carbon/human/user, obj/item/to_equip) var/was_equipped = user.equip_to_slot_if_possible(to_equip, ITEM_SLOT_BELT, disable_warning = TRUE) - to_chat(user, span_notice("\A [to_equip.name] has been summoned [was_equipped ? "on your waist" : "at your feet"].")) + to_chat(user, span_notice("[to_equip.name] был призван [was_equipped ? "на вашем поясе" : "у ваших ног"].")) /datum/spellbook_entry/item/soulstones/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE) . =..() @@ -55,30 +55,30 @@ /datum/spellbook_entry/item/necrostone name = "A Necromantic Stone" - desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." + desc = "Камень некроманта способен воскресить трех мертвецов в виде скелетов-рабов, подчиненных вам." item_path = /obj/item/necromantic_stone category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/contract name = "Contract of Apprenticeship" - desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." + desc = "Магический контракт, привязывающий ученика волшебника к вашей службе, при использовании вызовет его на вашу сторону." item_path = /obj/item/antag_spawner/contract category = SPELLBOOK_CATEGORY_ASSISTANCE refundable = TRUE /datum/spellbook_entry/item/guardian name = "Guardian Deck" - desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ - It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." + desc = "Колода карт хранителей Таро, способная привязать к вашему телу личного хранителя. Существует несколько типов хранителей, но они все будут переносить на вас определенный урон. \ + Разумно будет избегать покупки их с чем-то, что может заставить вас поменяться телами с другими." item_path = /obj/item/guardian_creator/wizard category = SPELLBOOK_CATEGORY_ASSISTANCE /datum/spellbook_entry/item/bloodbottle name = "Bottle of Blood" - desc = "A bottle of magically infused blood, the smell of which will \ - attract extradimensional beings when broken. Be careful though, \ - the kinds of creatures summoned by blood magic are indiscriminate \ - in their killing, and you yourself may become a victim." + desc = "Бутылка с магической кровью, запах которой привлекает \ + внепространственных существ, если ее разбить. Но будьте осторожны, \ + существа, вызываемые магией крови, неизбирательны \ + в своих убийствах, и вы сами можете стать жертвой." item_path = /obj/item/antag_spawner/slaughter_demon limit = 3 category = SPELLBOOK_CATEGORY_ASSISTANCE @@ -86,13 +86,13 @@ /datum/spellbook_entry/item/hugbottle name = "Bottle of Tickles" - desc = "A bottle of magically infused fun, the smell of which will \ - attract adorable extradimensional beings when broken. These beings \ - are similar to slaughter demons, but they do not permanently kill \ - their victims, instead putting them in an extradimensional hugspace, \ - to be released on the demon's death. Chaotic, but not ultimately \ - damaging. The crew's reaction to the other hand could be very \ - destructive." + desc = "Бутылка с волшебным напитком, запах которого притягивает \ + очаровательных внепространственных существ, если его разбить. Эти существа \ + похожи на демонов резни, но они не убивают своих жертв навсегда, \ + вместо этого помещая их во внепространственный мир обьятий, \ + из которого они освобождаются после смерти демона. Хаотично, но не окончательно \ + деструктивно. С другой стороны, реакция экипажа может быть очень \ + разрушительной." item_path = /obj/item/antag_spawner/slaughter_demon/laughter cost = 1 //non-destructive; it's just a jape, sibling! limit = 3 @@ -101,10 +101,10 @@ /datum/spellbook_entry/item/vendormancer name = "Scepter of Vendormancy" - desc = "A scepter containing the power of Runic Vendormancy.\ - It can summon up to 3 Runic Vendors that decay over time, but can be \ - throw around to squash oponents or be directly detonated. When out of \ - charges a long channel will restore the charges." + desc = "Скипетр, содержащий силу Рунической Вендормантии. \ + Он может вызвать до 3 рунических вендоров, которые со временем разлагаются, но могут быть \ + брошены в противников или непосредственно взорваны. Если заряды \ + кончатся, после длительного периода времени они восстановятся." item_path = /obj/item/runic_vendor_scepter category = SPELLBOOK_CATEGORY_ASSISTANCE diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/challenges.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/challenges.dm index d200b89758854..03ad1ccdeb57d 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/challenges.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/challenges.dm @@ -3,8 +3,8 @@ // shit that sounds stupid but fun so we can painfully lock behind a dimmer /datum/spellbook_entry/challenge/multiverse name = "Multiverse Sword" - desc = "The Station gets a multiverse sword to stop you. Can you withstand the hordes of multiverse realities?" + desc = "Чтобы остановить вас, станция получает меч мультивселенной. Сможете ли вы противостоять полчищам мультивселенных реальностей?" /datum/spellbook_entry/challenge/antiwizard name = "Friendly Wizard Scum" - desc = "A \"Friendly\" Wizard will protect the station, and try to kill you. They get a spellbook much like you, but will use it for \"GOOD\"." + desc = "«Дружелюбный» волшебник будет защищать станцию и пытаться убить вас. Он получит книгу заклинаний, как и вы, но будет использовать ее «во благо»." diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm index a66d99c21c88d..d5948f3391b9b 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/defensive.dm @@ -1,135 +1,135 @@ -#define SPELLBOOK_CATEGORY_DEFENSIVE "Defensive" +#define SPELLBOOK_CATEGORY_DEFENSIVE "Защита" // Defensive wizard spells /datum/spellbook_entry/magicm name = "Magic Missile" - desc = "Fires several, slow moving, magic projectiles at nearby targets." + desc = "Выпускает несколько медленно движущихся магических снарядов по ближайшим целям." spell_type = /datum/action/cooldown/spell/aoe/magic_missile category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/disabletech name = "Disable Tech" - desc = "Disables all weapons, cameras and most other technology in range." + desc = "Отключает все оружие, камеры и большинство других устройств в радиусе действия." spell_type = /datum/action/cooldown/spell/emp/disable_tech category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/repulse name = "Repulse" - desc = "Throws everything around the user away." + desc = "Отбрасывает все вокруг пользователя." spell_type = /datum/action/cooldown/spell/aoe/repulse/wizard category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/lightning_packet name = "Thrown Lightning" - desc = "Forged from eldrich energies, a packet of pure power, \ - known as a spell packet will appear in your hand, that when thrown will stun the target." + desc = "Выкованный из мистической энергии, мешочек чистой силы, \ + известный как мешочек заклинаний, появится в вашей руке и при броске оглушит цель." spell_type = /datum/action/cooldown/spell/conjure_item/spellpacket category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/timestop name = "Time Stop" - desc = "Stops time for everyone except for you, allowing you to move freely \ - while your enemies and even projectiles are frozen." + desc = "Останавливает время для всех, кроме вас, позволяя вам свободно двигаться, \ + в то время как ваши враги и даже снаряды заморожены." spell_type = /datum/action/cooldown/spell/timestop category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/smoke name = "Smoke" - desc = "Spawns a cloud of choking smoke at your location." + desc = "Порождает облако удушливого дыма на вашем месте." spell_type = /datum/action/cooldown/spell/smoke category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/forcewall name = "Force Wall" - desc = "Create a magical barrier that only you can pass through." + desc = "Создайте магический барьер, через который сможете пройти только вы." spell_type = /datum/action/cooldown/spell/forcewall category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/lichdom name = "Bind Soul" - desc = "A dark necromantic pact that can forever bind your soul to an item of your choosing, \ - turning you into an immortal Lich. So long as the item remains intact, you will revive from death, \ - no matter the circumstances. Be wary - with each revival, your body will become weaker, and \ - it will become easier for others to find your item of power." + desc = "Темный некромантический договор, который может навсегда привязать вашу душу к выбранному вами предмету, \ + превратив вас в бессмертного лича. Пока предмет остается нетронутым, вы будете возрождаться после смерти, \ + независимо от обстоятельств. Будьте осторожны - с каждым возрождением ваше тело будет слабеть, и \ + другим станет проще найти ваш предмет силы." spell_type = /datum/action/cooldown/spell/lichdom category = SPELLBOOK_CATEGORY_DEFENSIVE no_coexistance_typecache = list(/datum/action/cooldown/spell/splattercasting) /datum/spellbook_entry/chuunibyou name = "Chuuni Invocations" - desc = "Makes all your spells shout invocations, and the invocations become... stupid. You heal slightly after casting a spell." + desc = "Заставляет все ваши заклинания выкрикивать призывы, а сами призывы становятся... глупыми. Вы немного исцеляетесь после произнесения заклинания." spell_type = /datum/action/cooldown/spell/chuuni_invocations category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/spacetime_dist name = "Spacetime Distortion" - desc = "Entangle the strings of space-time in an area around you, \ - randomizing the layout and making proper movement impossible. The strings vibrate..." + desc = "Запутывает нити пространства-времени в области вокруг вас, \ + случайным образом изменяя расположение и делая невозможным правильное перемещение. Нити колеблются..." spell_type = /datum/action/cooldown/spell/spacetime_dist category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/the_traps name = "The Traps!" - desc = "Summon a number of traps around you. They will damage and enrage any enemies that step on them." + desc = "Вызовите вокруг себя несколько ловушек. Они нанесут урон и разозлят любых врагов, которые на них наступят." spell_type = /datum/action/cooldown/spell/conjure/the_traps category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/bees name = "Lesser Summon Bees" - desc = "This spell magically kicks a transdimensional beehive, \ - instantly summoning a swarm of bees to your location. These bees are NOT friendly to anyone." + desc = "Это заклинание магически бьет по транспространственному улью, \ + мгновенно вызывая рой пчел в ваше местоположение. Эти пчелы НЕ дружелюбны ко кому-либо." spell_type = /datum/action/cooldown/spell/conjure/bee category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/duffelbag name = "Bestow Cursed Duffel Bag" - desc = "A curse that firmly attaches a demonic duffel bag to the target's back. \ - The duffel bag will make the person it's attached to take periodical damage \ - if it is not fed regularly, and regardless of whether or not it's been fed, \ - it will slow the person wearing it down significantly." + desc = "Проклятие, прочно прикрепляющее к спине цели демонический вещмешок. \ + Сумка будет периодически наносить урон тому, к кому она прикреплена, \ + если ее не кормить регулярно, и независимо от того, кормили ее или нет, \ + она будет значительно замедлять передвижение того, кто ее носит." spell_type = /datum/action/cooldown/spell/touch/duffelbag category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 /datum/spellbook_entry/item/staffhealing name = "Staff of Healing" - desc = "An altruistic staff that can heal the lame and raise the dead." + desc = "Альтруистический посох, способный исцелять хромых и воскрешать мертвых." item_path = /obj/item/gun/magic/staff/healing cost = 1 category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/lockerstaff name = "Staff of the Locker" - desc = "A staff that shoots lockers. It eats anyone it hits on its way, leaving a welded locker with your victims behind." + desc = "Посох, стреляющий шкафчиками. Он съедает всех, в кого попадает на своем пути, оставляя после себя заваренный шкафчик с вашими жертвами." item_path = /obj/item/gun/magic/staff/locker category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/scryingorb name = "Scrying Orb" - desc = "An incandescent orb of crackling energy. Using it will allow you to release your ghost while alive, allowing you to spy upon the station and talk to the deceased. In addition, buying it will permanently grant you X-ray vision." + desc = "Накаленная сфера с потрескивающей энергией. Используя его, вы сможете выпустить свой дух при сохранении жизни, что позволит вам шпионить за станцией и разговаривать с умершими. Кроме того, купив его, вы навсегда получите рентгеновское зрение." item_path = /obj/item/scrying category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/wands name = "Wand Assortment" - desc = "A collection of wands that allow for a wide variety of utility. \ - Wands have a limited number of charges, so be conservative with their use. Comes in a handy belt." + desc = "Коллекция палочек, позволяющих использовать их в самых разных целях. \ + У палочек ограниченное количество зарядов, поэтому будьте осторожны при их использовании. Поставляется в удобном поясе." item_path = /obj/item/storage/belt/wands/full category = SPELLBOOK_CATEGORY_DEFENSIVE /datum/spellbook_entry/item/wands/try_equip_item(mob/living/carbon/human/user, obj/item/to_equip) var/was_equipped = user.equip_to_slot_if_possible(to_equip, ITEM_SLOT_BELT, disable_warning = TRUE) - to_chat(user, span_notice("\A [to_equip.name] has been summoned [was_equipped ? "on your waist" : "at your feet"].")) + to_chat(user, span_notice("[to_equip.name] был призван [was_equipped ? "на ваш пояс" : "у ваших ног"].")) /datum/spellbook_entry/item/armor name = "Mastercrafted Armor Set" - desc = "An artefact suit of armor that allows you to cast spells \ - while providing more protection against attacks and the void of space. \ - Also grants a battlemage shield." + desc = "Артефактный комплект брони, позволяющий использовать заклинания \ + и обеспечивающий дополнительную защиту от атак и пустоты космоса. \ + Также дает силовой щит боевого мага." item_path = /obj/item/mod/control/pre_equipped/enchanted category = SPELLBOOK_CATEGORY_DEFENSIVE @@ -150,7 +150,7 @@ /datum/spellbook_entry/item/battlemage_charge name = "Battlemage Armour Charges" - desc = "A powerful defensive rune, it will grant eight additional charges to a battlemage shield." + desc = "Мощная защитная руна, предоставляющая восемь дополнительных зарядов к силовому щиту боевого мага." item_path = /obj/item/wizard_armour_charge category = SPELLBOOK_CATEGORY_DEFENSIVE cost = 1 diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm index bc09b092f6cd9..71a79c2892743 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/mobility.dm @@ -1,53 +1,53 @@ -#define SPELLBOOK_CATEGORY_MOBILITY "Mobility" +#define SPELLBOOK_CATEGORY_MOBILITY "Мобильность" // Wizard spells that aid mobiilty(or stealth?) /datum/spellbook_entry/mindswap name = "Mindswap" - desc = "Allows you to switch bodies with a target next to you. You will both fall asleep when this happens, and it will be quite obvious that you are the target's body if someone watches you do it." + desc = "Позволяет вам поменяться телами с целью, находящейся рядом с вами. Вы оба заснете, когда это произойдет, и будет совершенно очевидно, что вы - тело цели, если кто-то увидит, как вы это делаете.." spell_type = /datum/action/cooldown/spell/pointed/mind_transfer category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/knock name = "Knock" - desc = "Opens nearby doors and closets." + desc = "Открывает ближайшие двери и шкафы." spell_type = /datum/action/cooldown/spell/aoe/knock category = SPELLBOOK_CATEGORY_MOBILITY cost = 1 /datum/spellbook_entry/blink name = "Blink" - desc = "Randomly teleports you a short distance." + desc = "Случайным образом телепортирует вас на небольшое расстояние." spell_type = /datum/action/cooldown/spell/teleport/radius_turf/blink category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/teleport name = "Teleport" - desc = "Teleports you to an area of your selection." + desc = "Телепортирует вас в выбранную вами область." spell_type = /datum/action/cooldown/spell/teleport/area_teleport/wizard category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/jaunt name = "Ethereal Jaunt" - desc = "Turns your form ethereal, temporarily making you invisible and able to pass through walls." + desc = "Превращает вас в эфирную форму, временно делая вас невидимым и способным проходить сквозь стены." spell_type = /datum/action/cooldown/spell/jaunt/ethereal_jaunt category = SPELLBOOK_CATEGORY_MOBILITY /datum/spellbook_entry/swap name = "Swap" - desc = "Switch places with any living target within nine tiles. Right click to mark a secondary target. You will always swap to your primary target." + desc = "Поменяйтесь местами с любой живой целью в пределах девяти плиток. Нажмите ПКМ, чтобы отметить вторую цель. Вы всегда будете меняться местами с основной целью." spell_type = /datum/action/cooldown/spell/pointed/swap category = SPELLBOOK_CATEGORY_MOBILITY cost = 1 /datum/spellbook_entry/item/warpwhistle name = "Warp Whistle" - desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the beginning of every use." + desc = "Странный свисток, который перенесет вас в далекое безопасное место на станции. В начале каждого использования есть окно уязвимости." item_path = /obj/item/warp_whistle category = SPELLBOOK_CATEGORY_MOBILITY cost = 1 /datum/spellbook_entry/item/staffdoor name = "Staff of Door Creation" - desc = "A particular staff that can mold solid walls into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass." + desc = "Особый посох, способный превращать твердые стены в украшенные двери. Пригодится для передвижения при отсутствии другого вида передвижения. Не работает со стеклом." item_path = /obj/item/gun/magic/staff/door cost = 1 category = SPELLBOOK_CATEGORY_MOBILITY diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm index d919c5e768ff6..16bb2ea4a393a 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/offensive.dm @@ -1,72 +1,72 @@ -#define SPELLBOOK_CATEGORY_OFFENSIVE "Offensive" +#define SPELLBOOK_CATEGORY_OFFENSIVE "Наступление" // Offensive wizard spells /datum/spellbook_entry/fireball name = "Fireball" - desc = "Fires an explosive fireball at a target. Considered a classic among all wizards." + desc = "Выпускает в цель взрывной огненный шар. Считается классическим среди всех волшебников." spell_type = /datum/action/cooldown/spell/pointed/projectile/fireball category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/spell_cards name = "Spell Cards" - desc = "Blazing hot rapid-fire homing cards. Send your foes to the shadow realm with their mystical power!" + desc = "Пылающие жаром быстрые самонаводящиеся карты. Отправляйте своих врагов в теневую реальность с помощью их мистической силы!" spell_type = /datum/action/cooldown/spell/pointed/projectile/spell_cards category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/rod_form name = "Rod Form" - desc = "Take on the form of an immovable rod, destroying all in your path. Purchasing this spell multiple times will also increase the rod's damage and travel range." + desc = "Примите форму недвижимого стержня, уничтожающего все на своем пути. Приобретая это заклинание несколько раз, вы также увеличите урон от стержня и дальность его полета." spell_type = /datum/action/cooldown/spell/rod_form category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/disintegrate name = "Smite" - desc = "Charges your hand with an unholy energy that can be used to cause a touched victim to violently explode." + desc = "Заряжает вашу руку нечестивой энергией, которая может быть использована для того, чтобы заставить тронутую жертву жестоко взорваться." spell_type = /datum/action/cooldown/spell/touch/smite category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/summon_simians name = "Summon Simians" - desc = "This spell reaches deep into the elemental plane of bananas (the monkey one, not the clown one), and \ - summons primal monkeys and lesser gorillas that will promptly flip out and attack everything in sight. Fun! \ - Their lesser, easily manipulable minds will be convinced you are one of their allies, but only for a minute. Unless you also are a monkey." + desc = "Это заклинание проникает глубоко в элементальный план бананов (обезьяньих, а не клоунских) и \ + вызывает первобытных обезьян и малых горилл, которые тут же выходят из себя и нападают на все вокруг. Веселье! \ + Их слабые, легко манипулируемые умы будут убеждены, что вы один из их союзников, но только на минуту. Если только вы не обезьяна." spell_type = /datum/action/cooldown/spell/conjure/simian category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/blind name = "Blind" - desc = "Temporarily blinds a single target." + desc = "Временно ослепляет одну цель." spell_type = /datum/action/cooldown/spell/pointed/blind category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 1 /datum/spellbook_entry/mutate name = "Mutate" - desc = "Causes you to turn into a hulk and gain laser vision for a short while." + desc = "Превращает вас в Халка и на короткое время дает лазерное зрение." spell_type = /datum/action/cooldown/spell/apply_mutations/mutate category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/fleshtostone name = "Flesh to Stone" - desc = "Charges your hand with the power to turn victims into inert statues for a long period of time." + desc = "Заряжает вашу руку силой, позволяющей превращать жертв в неподвижные статуи на длительное время." spell_type = /datum/action/cooldown/spell/touch/flesh_to_stone category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/teslablast name = "Tesla Blast" - desc = "Charge up a tesla arc and release it at a random nearby target! You can move freely while it charges. The arc jumps between targets and can knock them down." + desc = "Зарядите заряд тесла-дуги и выпустите его в случайную ближайшую цель! Пока она заряжается, вы можете свободно перемещаться. Дуга проскакивает между целями и может сбить их с ног." spell_type = /datum/action/cooldown/spell/charged/beam/tesla category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/lightningbolt name = "Lightning Bolt" - desc = "Fire a lightning bolt at your foes! It will jump between targets, but can't knock them down." + desc = "Выпустите молнию в своих врагов! Она перепрыгивает между целями, но не может сбить их с ног." spell_type = /datum/action/cooldown/spell/pointed/projectile/lightningbolt category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 1 /datum/spellbook_entry/infinite_guns name = "Lesser Summon Guns" - desc = "Why reload when you have infinite guns? Summons an unending stream of bolt action rifles that deal little damage, but will knock targets down. Requires both hands free to use. Learning this spell makes you unable to learn Arcane Barrage." + desc = "Зачем перезаряжаться, если у вас бесконечное количество пушек? Вызывает нескончаемый поток винтовок, которые наносят мало урона, но сбивают цели с ног. Для использования требуются обе свободные руки. Изучив это заклинание, вы не сможете выучить Arcane Barrage." spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/gun category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 @@ -74,7 +74,7 @@ /datum/spellbook_entry/arcane_barrage name = "Arcane Barrage" - desc = "Fire a torrent of arcane energy at your foes with this (powerful) spell. Deals much more damage than Lesser Summon Guns, but won't knock targets down. Requires both hands free to use. Learning this spell makes you unable to learn Lesser Summon Gun." + desc = "Выпустите в противников поток магической энергии с помощью этого (мощного) заклинания. Наносит гораздо больше урона, чем Lesser Summon Guns, но не сбивает цели с ног. Для использования требуются обе свободные руки. Изучив это заклинание, вы не сможете выучить Lesser Summon Gun." spell_type = /datum/action/cooldown/spell/conjure_item/infinite_guns/arcane_barrage category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 @@ -82,71 +82,71 @@ /datum/spellbook_entry/barnyard name = "Barnyard Curse" - desc = "This spell dooms an unlucky soul to possess the speech and facial attributes of a barnyard animal." + desc = "Это заклинание обрекает неудачливую душу на обладание речью и чертами лица домашнего скота." spell_type = /datum/action/cooldown/spell/pointed/barnyardcurse category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/splattercasting name = "Splattercasting" - desc = "Dramatically lowers the cooldown on all spells, but each one will cost blood, as well as it naturally \ - draining from you over time. You can replenish it from your victims, specifically their necks." + desc = "Значительно снижает время действия всех заклинаний, но каждое из них требует затрат крови, а также естественного \ + ее высасывания из вас с течением времени. Вы можете пополнять ее запасы из своих жертв, в частности из их шей." spell_type = /datum/action/cooldown/spell/splattercasting category = SPELLBOOK_CATEGORY_OFFENSIVE no_coexistance_typecache = list(/datum/action/cooldown/spell/lichdom) /datum/spellbook_entry/sanguine_strike name = "Exsanguinating Strike" - desc = "Sanguine spell that enchants your next weapon strike to deal more damage, heal you for damage dealt, and refill blood." + desc = "Кровожадное заклинание, которое зачаровывает ваш следующий удар оружием, чтобы нанести больше урона, исцелить вас за нанесенный урон и пополнить запасы крови." spell_type = /datum/action/cooldown/spell/sanguine_strike category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/scream_for_me name = "Scream For Me" - desc = "Sadistic sanguine spell that inflicts numerous severe blood wounds all over the victim's body." + desc = "Садистско-кровожадное заклинание, наносящее многочисленные тяжелые кровоточащие раны по всему телу жертвы." spell_type = /datum/action/cooldown/spell/touch/scream_for_me cost = 1 category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/staffchaos name = "Staff of Chaos" - desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." + desc = "Капризный инструмент, который может стрелять всеми видами магии без всякой причины. Не рекомендуется использовать его на дорогих вам людях." item_path = /obj/item/gun/magic/staff/chaos category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/staffchange name = "Staff of Change" - desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." + desc = "Артефакт, извергающий потоки сотрясающей энергии, которая заставляет саму форму цели изменяться." item_path = /obj/item/gun/magic/staff/change category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/mjolnir name = "Mjolnir" - desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." + desc = "Могучий молот, одолженный у Тора, бога грома. Он трещит от едва сдерживаемой силы." item_path = /obj/item/mjollnir category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/singularity_hammer name = "Singularity Hammer" - desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." + desc = "Молот, который создает мощное поле гравитации в месте удара, притягивая все, что находится рядом, к точке удара." item_path = /obj/item/singularityhammer category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/spellblade name = "Spellblade" - desc = "A sword capable of firing blasts of energy which rip targets limb from limb." + desc = "Меч, способный стрелять вспышками энергии, отрывающими конечности у цели." item_path = /obj/item/gun/magic/staff/spellblade category = SPELLBOOK_CATEGORY_OFFENSIVE /datum/spellbook_entry/item/highfrequencyblade name = "High Frequency Blade" - desc = "An incredibly swift enchanted blade resonating at a frequency high enough to be able to slice through anything." + desc = "Невероятно быстрый зачарованный клинок, резонирующий на достаточно высокой частоте, чтобы пронзить все насквозь." item_path = /obj/item/highfrequencyblade/wizard category = SPELLBOOK_CATEGORY_OFFENSIVE cost = 3 /datum/spellbook_entry/item/frog_contract name = "Frog Contract" - desc = "Sign a pact with the frogs to have your own destructive pet guardian!" + desc = "Заключите договор с лягушками, чтобы завести своего собственного разрушительного питомца-хранителя!" item_path = /obj/item/frog_contract category = SPELLBOOK_CATEGORY_OFFENSIVE diff --git a/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm b/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm index fe5f69fd9fa53..fa9144be17268 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook_entries/summons.dm @@ -4,9 +4,9 @@ /datum/spellbook_entry/summon/ghosts name = "Summon Ghosts" - desc = "Spook the crew out by making them see dead people. \ - Be warned, ghosts are capricious and occasionally vindicative, \ - and some will use their incredibly minor abilities to frustrate you." + desc = "Напугайте экипаж, заставив их видеть мертвых. \ + Будьте внимательны, призраки капризны и иногда мстительны, \ + а некоторые из них будут использовать свои невероятно незначительные способности, чтобы насолить вам." cost = 0 /datum/spellbook_entry/summon/ghosts/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE) @@ -16,8 +16,8 @@ /datum/spellbook_entry/summon/guns name = "Summon Guns" - desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. \ - There is a good chance that they will shoot each other first." + desc = "Нет ничего плохого в том, чтобы вооружить команду сумасшедших, которые только и ждут повода, чтобы убить вас. \ + Но велика вероятность, что они сперва перестреляют друг друга." /datum/spellbook_entry/summon/guns/can_be_purchased() // Summon Guns requires 98 threat. @@ -33,8 +33,8 @@ /datum/spellbook_entry/summon/magic name = "Summon Magic" - desc = "Share the wonders of magic with the crew and show them \ - why they aren't to be trusted with it at the same time." + desc = "Поделитесь с командой чудесами магии \ + и заодно покажите им, почему им нельзя ее доверять." /datum/spellbook_entry/summon/magic/can_be_purchased() // Summon Magic requires 98 threat. @@ -50,9 +50,9 @@ /datum/spellbook_entry/summon/events name = "Summon Events" - desc = "Give Murphy's law a little push and replace all events with \ - special wizard ones that will confound and confuse everyone. \ - Multiple castings increase the rate of these events." + desc = "Подтолкните закон Мерфи и замените все события на \ + специальные магические, которые запутают и собьют с толку всех. \ + Многократное использование увеличивает частоту этих событий." cost = 2 limit = 5 // Each purchase can intensify it. @@ -70,11 +70,11 @@ /datum/spellbook_entry/summon/curse_of_madness name = "Curse of Madness" - desc = "Curses the station, warping the minds of everyone inside, causing lasting traumas. Warning: this spell can affect you if not cast from a safe distance." + desc = "Проклинает станцию, искажая сознание всех, кто в ней находится, и вызывая неизгладимые травмы. Предупреждение: это заклинание может подействовать на вас, если оно не применяется с безопасного расстояния." cost = 4 /datum/spellbook_entry/summon/curse_of_madness/buy_spell(mob/living/carbon/human/user, obj/item/spellbook/book, log_buy = TRUE) - var/message = tgui_input_text(user, "Whisper a secret truth to drive your victims to madness", "Whispers of Madness") + var/message = tgui_input_text(user, "Прошепчите секретную истину, чтобы довести ваших жертв до безумия", "Шепоты безумия") if(!message || QDELETED(user) || QDELETED(book) || !can_buy(user, book)) return FALSE curse_of_madness(user, message) @@ -85,8 +85,8 @@ /// This includes item entries (which will be given to everyone) but disincludes other rituals like itself /datum/spellbook_entry/summon/specific_spell name = "Mass Wizard Teaching" - desc = "Teach a specific spell (or give a specific item) to everyone on the station. \ - The cost of this is increased by the cost of the spell you choose. And don't worry - you, too, will learn the spell!" + desc = "Научите определенному заклинанию (или дайте определенный предмет) каждому на станции. \ + Стоимость этого увеличивается на стоимость выбранного вами заклинания. И не волнуйтесь - вы тоже выучите заклинание!" cost = 3 // cheapest is 4 cost, most expensive is 7 cost limit = 1 @@ -101,16 +101,16 @@ spell_options[entry.name] = entry sortTim(spell_options, GLOBAL_PROC_REF(cmp_text_asc)) - var/chosen_spell_name = tgui_input_list(user, "Choose a spell (or item) to grant to everyone...", "Wizardly Teaching", spell_options) + var/chosen_spell_name = tgui_input_list(user, "Выберите заклинание (или предмет), которое вы дадите каждому...", "Волшебное обучение", spell_options) if(isnull(chosen_spell_name) || QDELETED(user) || QDELETED(book)) return FALSE if(GLOB.mass_teaching) - tgui_alert(user, "Someone's already cast [name]!", "Wizardly Teaching", list("Shame")) + tgui_alert(user, "Кто-то уже провел [name]!", "Волшебное обучение", list("Shame")) return FALSE var/datum/spellbook_entry/chosen_entry = spell_options[chosen_spell_name] if(cost + chosen_entry.cost > book.uses) - tgui_alert(user, "You can't afford to grant everyone [chosen_spell_name]! ([cost] points needed)", "Wizardly Teaching", list("Shame")) + tgui_alert(user, "Вы не можете позволить себе предоставить всем [chosen_spell_name]! (нужно [cost] очков)", "Волшебное обучение", list("Shame")) return FALSE cost += chosen_entry.cost @@ -122,7 +122,7 @@ GLOB.mass_teaching.equip_all_affected() var/item_entry = istype(chosen_entry, /datum/spellbook_entry/item) - to_chat(user, span_hypnophrase("You have [item_entry ? "granted everyone the power" : "taught everyone the ways"] of [chosen_spell_name]!")) + to_chat(user, span_hypnophrase("Вы [item_entry ? "даровали всем силу" : "обучили всех приемами"] [chosen_spell_name]!")) message_admins("[ADMIN_LOOKUPFLW(user)] gave everyone the [item_entry ? "item" : "spell"] \"[chosen_spell_name]\"!") user.log_message("has gave everyone the [item_entry ? "item" : "spell"] \"[chosen_spell_name]\"!", LOG_GAME) diff --git a/code/modules/antagonists/wizard/equipment/wizard_spellbook.dm b/code/modules/antagonists/wizard/equipment/wizard_spellbook.dm index f13b53b12edd4..2d6e5bb0115e0 100644 --- a/code/modules/antagonists/wizard/equipment/wizard_spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/wizard_spellbook.dm @@ -1,6 +1,6 @@ /obj/item/spellbook name = "spell book" - desc = "An unearthly tome that glows with power." + desc = "Необычный том, светящийся силой." icon = 'icons/obj/service/library.dmi' icon_state ="book" worn_icon_state = "book" @@ -39,13 +39,13 @@ /obj/item/spellbook/proc/on_magic_charge(datum/source, datum/action/cooldown/spell/spell, mob/living/caster) SIGNAL_HANDLER - to_chat(caster, span_warning("Glowing red letters appear on the front cover...")) + to_chat(caster, span_warning("На обложке появляются красные светящиеся буквы...")) to_chat(caster, span_red(pick( - "NICE TRY BUT NO!", - "CLEVER BUT NOT CLEVER ENOUGH!", - "SUCH FLAGRANT CHEESING IS WHY WE ACCEPTED YOUR APPLICATION!", - "CUTE! VERY CUTE!", - "YOU DIDN'T THINK IT'D BE THAT EASY, DID YOU?", + "ХОРОШАЯ ПОПЫТКА, НО НЕТ!", + "УМНО, НО НЕДОСТАТОЧНО УМНО!", + "ИЗ-ЗА ТАКОГО ВОПИЮЩЕГО ШУЛЕРСТВА МЫ И ПРИНЯЛИ ВАШЕ ЗАЯВЛЕНИЕ!", + "МИЛО! ОЧЕНЬ МИЛО!", + "ТЫ ЖЕ НЕ ДУМАЛ, ЧТО ЭТО БУДЕТ ТАК ПРОСТО, ПРАВДА?", ))) return COMPONENT_ITEM_BURNT_OUT @@ -53,23 +53,23 @@ /obj/item/spellbook/examine(mob/user) . = ..() if(owner) - . += "There is a small signature on the front cover: \"[owner]\"." + . += "На передней обложке есть небольшая подпись: \"[owner]\"." else - . += "It appears to have no author." + . += "Похоже, что у нее нет автора." /obj/item/spellbook/attack_self(mob/user) if(!owner) if(!user.mind) return - to_chat(user, span_notice("You bind [src] to yourself.")) + to_chat(user, span_notice("Вы привязываете [src.name] к себе.")) owner = user.mind return if(user.mind != owner) if(user.mind?.special_role == ROLE_WIZARD_APPRENTICE) - to_chat(user, span_warning("If you got caught sneaking a peek from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not.")) + to_chat(user, span_warning("Если бы вас поймают за подглядыванием в книгу заклинаний вашего учителя, то, скорее всего, вас отчислять из Академии волшебников. Лучше не стоит.")) else - to_chat(user, span_warning("[src] does not recognize you as its owner and refuses to open!")) + to_chat(user, span_warning("Вы не признаетесь владельцем [src.name], и она не собирается открываться!")) return return ..() @@ -79,17 +79,17 @@ if(istype(O, /obj/item/antag_spawner/contract)) var/datum/spellbook_entry/item/contract/contract_entry = locate() in entries if(!istype(contract_entry)) - to_chat(user, span_warning("[src] doesn't seem to want to refund [O].")) + to_chat(user, span_warning("Похоже, что [src.name] не хочет возвращать очки за [O.name].")) return if(!contract_entry.can_refund(user, src)) - to_chat(user, span_warning("You can't refund [src].")) + to_chat(user, span_warning("Вы не можете вернуть очки за [src.name].")) return var/obj/item/antag_spawner/contract/contract = O if(contract.used) - to_chat(user, span_warning("The contract has been used, you can't get your points back now!")) + to_chat(user, span_warning("Контракт был использован, вы не можете вернуть себе очки!")) return - to_chat(user, span_notice("You feed the contract back into the spellbook, refunding your points.")) + to_chat(user, span_notice("Вы возвращаете контракт в книгу заклинаний, возвращая себе очки.")) uses += contract_entry.cost contract_entry.times-- qdel(O) @@ -97,13 +97,13 @@ else if(istype(O, /obj/item/antag_spawner/slaughter_demon/laughter)) var/datum/spellbook_entry/item/hugbottle/demon_entry = locate() in entries if(!istype(demon_entry)) - to_chat(user, span_warning("[src] doesn't seem to want to refund [O].")) + to_chat(user, span_warning("Похоже, что [src.name] не хочет возвращать очки за [O.name].")) return if(!demon_entry.can_refund(user, src)) - to_chat(user, span_warning("You can't refund [O].")) + to_chat(user, span_warning("Вы не можете вернуть очки за [O.name].")) return - to_chat(user, span_notice("On second thought, maybe summoning a demon isn't a funny idea. You refund your points.")) + to_chat(user, span_notice("Если подумать, может быть, вызов демона - не такая уж и смешная идея. Вы возвращаете свои очки.")) uses += demon_entry.cost demon_entry.times-- qdel(O) @@ -111,13 +111,13 @@ else if(istype(O, /obj/item/antag_spawner/slaughter_demon)) var/datum/spellbook_entry/item/bloodbottle/demon_entry = locate() in entries if(!istype(demon_entry)) - to_chat(user, span_warning("[src] doesn't seem to want to refund [O].")) + to_chat(user, span_warning("Похоже, что [src.name] не хочет возвращать очки за [O.name].")) return if(!demon_entry.can_refund(user, src)) - to_chat(user, span_warning("You can't refund [O].")) + to_chat(user, span_warning("Вы не можете вернуть очки за [O.name].")) return - to_chat(user, span_notice("On second thought, maybe summoning a demon is a bad idea. You refund your points.")) + to_chat(user, span_notice("Если подумать, возможно, вызов демона - плохая идея. Вы возвращаете свои очки.")) uses += demon_entry.cost demon_entry.times-- qdel(O) @@ -178,7 +178,7 @@ return var/mob/living/carbon/human/wizard = usr if(!istype(wizard)) - to_chat(wizard, span_warning("The book doesn't seem to listen to lower life forms.")) + to_chat(wizard, span_warning("Книга, похоже, не слушает низшие формы жизни.")) return FALSE // Actions that are always available @@ -202,7 +202,7 @@ return TRUE if(uses < initial(uses)) - to_chat(wizard, span_warning("You need to have all your spell points to do this!")) + to_chat(wizard, span_warning("Для этого вам нужны все очки заклинаний!")) return FALSE // Actions that are only available if you have full spell points @@ -298,7 +298,7 @@ /// Purchases a semi-random wizard loadout for [wizard] /// If passed a number [bonus_to_give], the wizard is given additional uses on their spellbook, used in randomization. /obj/item/spellbook/proc/semirandomize(mob/living/carbon/human/wizard, bonus_to_give = 0) - var/list/needed_cats = list("Offensive", "Mobility") + var/list/needed_cats = list("Наступление", "Мобильность") var/list/shuffled_entries = shuffle(entries) for(var/i in 1 to 2) for(var/datum/spellbook_entry/entry as anything in shuffled_entries) diff --git a/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm b/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm index a2f25863a4baf..341128579d73c 100644 --- a/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm +++ b/code/modules/antagonists/wizard/grand_ritual/grand_ritual.dm @@ -22,8 +22,8 @@ */ /datum/action/cooldown/grand_ritual name = "Grand Ritual" - desc = "Provides direction to a nexus of power, then draws a rune in that location for completing the Grand Ritual. \ - The ritual process will take longer each time it is completed." + desc = "Дает направление к месту скопления силы, а затем рисует руну в этом месте для завершения Великого ритуала. \ + С каждым разом процесс ритуала будет занимать все больше времени." check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED | AB_CHECK_HANDS_BLOCKED background_icon_state = "bg_spell" button_icon = 'icons/mob/actions/actions_cult.dmi' @@ -90,7 +90,7 @@ if(!isturf(owner.loc)) if (feedback) - owner.balloon_alert(owner, "can't reach the floor!") + owner.balloon_alert(owner, "не достает до пола!") return FALSE return TRUE @@ -132,28 +132,28 @@ target_area = pick(possible_areas) if (validate_area()) // Well this is risky but probably not every area on the station is going to get deleted, right? - to_chat(owner, span_alert("The next nexus of power lies within [initial(target_area.name)]")) + to_chat(owner, span_alert("Следующий узел силы находится в [initial(target_area.name)]")) /// Checks if you're actually able to draw a rune here /datum/action/cooldown/grand_ritual/proc/start_drawing_rune() var/atom/existing_rune = rune?.resolve() if (existing_rune) - owner.balloon_alert(owner, "rune already exists!") + owner.balloon_alert(owner, "руна уже существует!") return var/turf/target_turf = get_turf(owner) for (var/turf/nearby_turf as anything in RANGE_TURFS(1, target_turf)) if (!is_type_in_typecache(nearby_turf, blacklisted_rune_turfs)) continue - owner.balloon_alert(owner, "invalid floor!") + owner.balloon_alert(owner, "неверное покрытие!") return if (locate(/obj/effect/grand_rune) in range(3, target_turf)) - owner.balloon_alert(owner, "rune too close!") + owner.balloon_alert(owner, "руна слишком близко!") return if (drawing_rune) - owner.balloon_alert(owner, "already drawing!") + owner.balloon_alert(owner, "уже рисуем!") return INVOKE_ASYNC(src, PROC_REF(draw_rune), target_turf) @@ -162,13 +162,13 @@ /datum/action/cooldown/grand_ritual/proc/draw_rune(turf/target_turf) drawing_rune = TRUE var/next_rune_typepath = get_appropriate_rune_typepath() - target_turf.balloon_alert(owner, "conjuring rune...") + target_turf.balloon_alert(owner, "вызываем руну...") var/draw_effect_typepath = /obj/effect/temp_visual/wizard_rune/drawing if(next_rune_typepath == /obj/effect/grand_rune/finale/cheesy) draw_effect_typepath = /obj/effect/temp_visual/wizard_rune/drawing/cheese var/obj/effect/temp_visual/wizard_rune/drawing/draw_effect = new draw_effect_typepath(target_turf) if(!do_after(owner, 4 SECONDS, target_turf)) - target_turf.balloon_alert(owner, "interrupted!") + target_turf.balloon_alert(owner, "прервано!") drawing_rune = FALSE qdel(draw_effect) var/fail_effect_typepath = /obj/effect/temp_visual/wizard_rune/failed @@ -193,7 +193,7 @@ if (evaporated_obstacles) playsound(target_turf, 'sound/magic/blind.ogg', 100, TRUE) - target_turf.balloon_alert(owner, "rune created") + target_turf.balloon_alert(owner, "руна создана") var/obj/effect/grand_rune/new_rune = new next_rune_typepath(target_turf, times_completed) if(istype(new_rune, /obj/effect/grand_rune/finale)) drew_finale = TRUE @@ -220,24 +220,24 @@ if(total_cheese_sacrificed >= CHEESE_SACRIFICE_GOAL) if(!total_cheese_goal_met) total_cheese_goal_met = TRUE - to_chat(owner, span_revenbignotice("YES! CHEESE! CHEESE FOR EVERYONE! SUCH A GRAND FEAST! YOU SHALL HAVE YOUR PRIZE, MY CHAMPION!!")) + to_chat(owner, span_revenbignotice("ДА! СЫР! СЫР ДЛЯ ВСЕХ! ТАКОЙ ГРАНДИОЗНЫЙ ПРАЗДНИК! ТЫ ПОЛУЧИШЬ СВОЙ ПРИЗ, МОЙ ЧЕМПИОН!!")) else - to_chat(owner, span_revennotice("You hear maddening laughter as you are hit with an overwhelming odor of fine cheddar...")) + to_chat(owner, span_revennotice("Вы слышите безумный смех, когда на вас обрушивается непреодолимый запах прекрасного чеддера...")) else if (total_cheese_sacrificed) - to_chat(owner, span_revendanger("You please me, mortal. Do continue to send cheese, my feast still needs [CHEESE_SACRIFICE_GOAL - total_cheese_sacrificed] more to be magnificent...")) + to_chat(owner, span_revendanger("Ты радуешь меня, смертный. Продолжай присылать сыр, мой пир все еще нуждается в еще [CHEESE_SACRIFICE_GOAL - total_cheese_sacrificed], чтобы быть великолепным...")) rune = null times_completed++ set_new_area() switch (times_completed) if (GRAND_RITUAL_RUNES_WARNING_POTENCY) - to_chat(owner, span_warning("Your collected power is growing, \ - but further rituals will alert your enemies to your position.")) + to_chat(owner, span_warning("Ваша собранная сила растет, \ + но дальнейшие ритуалы предупредят врагов о вашем положении.")) if (GRAND_RITUAL_IMMINENT_FINALE_POTENCY) - var/message = "You are overflowing with power! \ - Your next Grand Ritual will allow you to choose a powerful effect, and grant you victory." + var/message = "Вы переполнены силой! \ + Ваш следующий Великий ритуал позволит вам выбрать мощный эффект и подарит вам победу." if(total_cheese_sacrificed >= CHEESE_SACRIFICE_GOAL) - message = "You are overflowing with chaotic energies! \ - Your next Grand Ritual will conjure a powerful artefact for your use, and grant you victory." + message = "Вы переполнены хаотической энергией! \ + Ваш следующий Великий ритуал наколдует могущественный артефакт для вашего использования и подарит вам победу." to_chat(owner, span_warning(message)) if (GRAND_RITUAL_FINALE_COUNT) SEND_SIGNAL(src, COMSIG_GRAND_RITUAL_FINAL_COMPLETE) @@ -256,12 +256,12 @@ /datum/action/cooldown/grand_ritual/proc/get_pinpoint_text(area/area_turf, area/our_turf) var/area_z = area_turf?.z var/our_z = our_turf?.z - var/balloon_message = "something went wrong!" + var/balloon_message = "что-то пошло не так!" // Either us or the location is somewhere it shouldn't be if (!our_z || !area_z) // "Hell if I know" - balloon_message = "on another plane!" + balloon_message = "другое место!" // It's not on the same z-level as us else if (our_z != area_z) // It's on the station @@ -269,25 +269,25 @@ // We're on a multi-z station if (is_station_level(our_z)) if (our_z > area_z) - balloon_message = "below you!" + balloon_message = "под вами!" else - balloon_message = "above you!" + balloon_message = "над вами!" // We're off station, it's not else - balloon_message = "on station!" + balloon_message = "на станции!" // It's on the same z-level as us! else var/dist = get_dist(our_turf, area_turf) var/dir = get_dir(our_turf, area_turf) switch(dist) if (0 to 15) - balloon_message = "very near, [dir2text(dir)]!" + balloon_message = "очень близко, [dir2text(dir)]!" if (16 to 31) - balloon_message = "near, [dir2text(dir)]!" + balloon_message = "рядом, [dir2text(dir)]!" if (32 to 127) - balloon_message = "far, [dir2text(dir)]!" + balloon_message = "далеко, [dir2text(dir)]!" else - balloon_message = "very far!" + balloon_message = "очень далеко!" return balloon_message diff --git a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm index 2b1ccd8a2b2c5..628f16fd45836 100644 --- a/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm +++ b/code/modules/antagonists/wizard/grand_ritual/grand_rune.dm @@ -12,7 +12,7 @@ */ /obj/effect/grand_rune name = "grand rune" - desc = "A flowing circle of shapes and runes is etched into the floor, the lines twist and move before your eyes." + desc = "Плавный круг из фигур и рун выгравирован на полу, линии извиваются и движутся на ваших глазах." icon = 'icons/effects/96x96.dmi' icon_state = "wizard_rune" pixel_x = -33 @@ -41,30 +41,30 @@ /// Things you might yell when invoking a rune var/static/list/possible_magic_words = list( list("*scream", "*scream", "*scream"), - list("Abra...", "Cadabra...", "Alakazam!"), - list("Azarath!", "Metrion!", "Zinthos!!"), - list("Bibbity!", "Bobbity!", "Boo!"), - list("Bish", "Bash", "Bosh!"), - list("Eenie... ", "Meenie... ", "Minie'Mo!!"), - list("Esaelp!", "Ouy Knaht!", "Em Esucxe!!"), - list("Fus", "Roh", "Dah!!"), + list("Абра...", "Кадабра...", "Алаказам!"), + list("Азарат!", "Метрион!", "Зинтрос!!"), + list("Бибити!", "Бобити!", "Буу!"), + list("Биш", "Баш", "Бош!"), + list("Эни... ", "Мени... ", "Миниму!!"), + list("Эсальп!", "Оу Натх!", "Ем Есукзме!!"), + list("Фус", "Ро", "Да!!"), list("git checkout origin master", "git reset --hard HEAD~2", "git push origin master --force!!"), - list("Hocus Pocus!", "Flim Flam!", "Wabbajack!"), - list("I wish I may...", "I wish I might...", "Have this wish I wish tonight!"), - list("Klaatu!", "Barada!", "Nikto!!"), - list("Let expanse contract!", "Let eon become instant!", "Throw wide the gates!!"), - list("Levios!", "Graviole!", "Explomb!!"), - list("Micrato", "Raepij", "Sathonich!"), - list("Noctu!", "Orfei!", "Aude! Fraetor!"), - list("Quas!", "Wex!", "Exort!"), - list("Sim!", "Sala!", "Bim!"), - list("Seven shadows cast, seven fates foretold!", "Let their words echo in your empty soul!", "Ruination is come!!"), - list("Swiftcast! Hastega! Abjurer's Ward II! Extend IV! Tenser's Advanced Enhancement! Protection from Good! Enhance Effect III! Arcane Re...", - "...inforcement IV! Turn Vermin X! Protection from Evil II! Mage's Shield! Venerious's Mediocre Enhancement II! Expand Power! Banish Hu...", - "...nger II! Protection from Neutral! Surecastaga! Refresh! Refresh II! Sharpcast X! Aetherial Manipulation! Ley Line Absorption! Invoke Grand Ritual!!"), - list("Ten!", "Chi!", "Jin!"), - list("Ultimate School of Magic!", "Ultimate Ritual!", "Macrocosm!!"), - list("Y-abbaa", "Dab'Bah", "Doom!!"), + list("Фокус Покус!", "Флим Флам!", "Вабаджак!"), + list("Я желаю...", "Я бы хотел...", "Желание, которое я загадаю сегодня вечером!"), + list("Клату!", "Барада!", "Никто!!"), + list("Пусть расширяются просторы!", "Пусть эон станет мгновением!", "Распахните ворота настежь!!"), + list("Левиос!", "Гравиоле!", "Експломб!!"), + list("Микрато", "Рапиж", "Сактонишь!"), + list("Нокту!", "Орфей!", "Ауде! Фраетор!"), + list("Квуас!", "Векс!", "Ексорт!"), + list("Сим!", "Сала!", "Бим!"), + list("Семь теней отброшены, семь судеб предсказаны!", "Пусть их слова отзвучат в вашей пустой душе.!", "Разрушение наступило!!"), + list("Свифткаст! Хастега! Ограждающее поле 2! Продление 4! Продвинутое усиление Тенсера! Защита от добра! Усиление эффекта 3! Аркановое ус...", + "...иление 4! Превращение паразитов 10! Защита от зла 2! Щит мага! Посредственное усиление Венериуса 2! Расширить силу! Изгнать го...", + "...лод 2! Защита от нейтралов! Сурекастага! Обновление! Обновление 2! Шарпкаст 10! Эфирная манипуляция! Поглощение Лей-линии! Вызвать Великий Ритуал!!"), + list("Тен!", "Чи!", "Джи!"), + list("Высшая школа магии!", "Ультимативный ритуал!", "Макрокосмос!!"), + list("Яабa", "Да Ба", "Дуум!!"), ) /// Prepare magic words and hide from silicons @@ -92,11 +92,11 @@ /obj/effect/grand_rune/examine(mob/user) . = ..() if (times_invoked >= GRAND_RUNE_INVOKES_TO_COMPLETE) - . += span_notice("Its power seems to have been expended.") + . += span_notice("Её сила, похоже, была исчерпана.") return if(!IS_WIZARD(user)) return - . += span_notice("Invoke this rune [GRAND_RUNE_INVOKES_TO_COMPLETE - times_invoked] more times to complete the ritual.") + . += span_notice("Задействуйте эту руну еще [GRAND_RUNE_INVOKES_TO_COMPLETE - times_invoked] раз, чтобы завершить ритуал.") /obj/effect/grand_rune/can_interact(mob/living/user) . = ..() @@ -119,11 +119,11 @@ /obj/effect/grand_rune/proc/invoke_rune(mob/living/user) is_in_use = TRUE add_channel_effect(user) - user.balloon_alert(user, "invoking rune...") + user.balloon_alert(user, "призываем руну...") if(!do_after(user, invoke_time, src)) remove_channel_effect(user) - user.balloon_alert(user, "interrupted!") + user.balloon_alert(user, "прервано!") is_in_use = FALSE return @@ -147,7 +147,7 @@ haunt_color = spell_colour, \ haunt_duration = 10 SECONDS, \ aggro_radius = 0, \ - spawn_message = span_revenwarning("[sacrifice] begins to float and twirl into the air as it becomes enveloped in otherworldy energies..."), \ + spawn_message = span_revenwarning("[sacrifice] начинает парить и кружиться в воздухе, окутываясь потусторонними энергиями..."), \ ) addtimer(CALLBACK(sacrifice, TYPE_PROC_REF(/obj/item/food/cheese/wheel, consume_cheese)), 10 SECONDS) cheese_sacrificed += length(cheese_to_haunt) @@ -209,12 +209,12 @@ possible_events += possible_event if (!length(possible_events)) - visible_message(span_notice("[src] makes a sad whizzing noise.")) + visible_message(span_notice("Печальный свистящий звук издается из [src.name].")) return var/datum/round_event_control/final_event = pick (possible_events) final_event.run_event(event_cause = "a Grand Ritual Rune") - to_chat(user, span_notice("Your released magic afflicts the crew: [final_event.name]!")) + to_chat(user, span_notice("Ваша выпущенная магия поражает экипаж: [final_event.name]!")) /// Applies some local side effects to the area /obj/effect/grand_rune/proc/trigger_side_effects(mob/living/user) @@ -293,11 +293,11 @@ var/announce = null switch (dire_warnings_given) if (0) - announce = "Large anomalous energy spike detected in: [created_area.name]." + announce = "Обнаружен большой аномальный всплеск энергии в: [created_area.name]." if (1) - announce = "Automatic causality stabilisation failed, recommend urgent intervention in: [created_area.name]." + announce = "Автоматическая стабилизация казусов не удалась, рекомендуем срочное вмешательство в: [created_area.name]." if (2) - announce = "Imminent local reality failure in: [created_area.name]. All crew please prepare to evacuate." + announce = "Неминуемый провал локальной реальности в: [created_area.name]. Всем членам экипажа приготовиться к эвакуации." if (announce) priority_announce(announce, "ВНИМАНИЕ: Обнаружена аномалия") dire_warnings_given++ @@ -309,7 +309,7 @@ return var/round_time_passed = world.time - SSticker.round_start_time if (chosen_effect && finale_effect.minimum_time >= round_time_passed) - to_chat(user, span_warning("The chosen grand finale will only be available in [DisplayTimeText(finale_effect.minimum_time - round_time_passed)]!")) + to_chat(user, span_warning("Выбранный гранд-финал будет доступен только в [DisplayTimeText(finale_effect.minimum_time - round_time_passed)]!")) return return ..() @@ -331,8 +331,8 @@ var/datum/radial_menu_choice/choice_none = new() choice_none.name = PICK_NOTHING choice_none.image = image(icon = 'icons/mob/actions/actions_cult.dmi', icon_state = "draw") - choice_none.info = "The ultimate use of your gathered power! They will never expect you to continue to do \ - exactly the same kind of thing you've been doing this whole time!" + choice_none.info = "Высшее применение собранной вами силы! Они никогда не будут ожидать, что вы будете продолжать \ + делать то же самое, что делали все это время!" options += list("[choice_none.name]" = choice_none) var/pick = show_radial_menu(user, user, options, require_near = TRUE, tooltips = TRUE) @@ -367,9 +367,9 @@ */ /obj/effect/grand_rune/finale/cheesy name = "especially grand rune" - desc = "A ritual circle of maddening shapes and outlines, its mere presence an insult to reason." + desc = "Ритуальный круг безумных форм и очертаний, само присутствие которого оскорбляет разум." icon_state = "wizard_rune_cheese" - magic_words = list("Greetings! Salutations!", "Welcome! Now go away.", "Leave. Run. Or die.") + magic_words = list("Здравствуйте! Приветствую!", " Добро пожаловать! А теперь уходи.", "Уходи. Беги. Или умри.") remains_typepath = /obj/effect/decal/cleanable/grand_remains/cheese /obj/effect/grand_rune/finale/cheesy/Initialize(mapload, potency) @@ -384,7 +384,7 @@ */ /obj/effect/decal/cleanable/grand_remains name = "circle of ash" - desc = "Looks like someone's been drawing weird shapes with ash on the ground." + desc = "Похоже, кто-то рисовал пеплом на земле странные фигуры." icon = 'icons/effects/96x96.dmi' icon_state = "wizard_rune_burned" pixel_x = -28 @@ -397,7 +397,7 @@ /obj/effect/decal/cleanable/grand_remains/cheese name = "cheese soot marks" - desc = "The bizarre shapes on the ground turn out to be a cheese crust burned to black tar." + desc = "Причудливые фигуры на земле оказываются сырной коркой, сгоревшей до черной смолы." icon_state = "wizard_rune_cheese_burned" #undef PICK_NOTHING diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index e6da5195b0254..733bfff4cc1d6 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -2,18 +2,18 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) /datum/antagonist/wizard - name = "\improper Space Wizard" - roundend_category = "wizards/witches" + name = "\proper Космический Волшебник" + roundend_category = "Волшебниками/Ведьмами" antagpanel_category = ANTAG_GROUP_WIZARDS job_rank = ROLE_WIZARD antag_hud_name = "wizard" antag_moodlet = /datum/mood_event/focused hijack_speed = 0.5 ui_name = "AntagInfoWizard" - suicide_cry = "FOR THE FEDERATION!!" + suicide_cry = "ЗА ФЕДЕРАЦИЮ!!" preview_outfit = /datum/outfit/wizard can_assign_self_objectives = TRUE - default_custom_objective = "Demonstrate your incredible and destructive magical powers." + default_custom_objective = "Продемонстрируйте свои невероятные и разрушительные магические способности." hardcore_random_bonus = TRUE var/give_objectives = TRUE var/strip = TRUE //strip before equipping @@ -27,7 +27,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) var/datum/action/cooldown/grand_ritual/ritual /datum/antagonist/wizard_minion - name = "Wizard Minion" + name = "Помощник волшебника" antagpanel_category = ANTAG_GROUP_WIZARDS antag_hud_name = "apprentice" show_in_roundend = FALSE @@ -65,8 +65,8 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) return var/datum/objective/custom/custom_objective = new() custom_objective.owner = owner - custom_objective.name = "Serve [wiz_team.master_wizard?.owner]" - custom_objective.explanation_text = "Serve [wiz_team.master_wizard?.owner]" + custom_objective.name = "Служи [wiz_team.master_wizard?.owner]" + custom_objective.explanation_text = "Служи [wiz_team.master_wizard?.owner]" objectives += custom_objective /datum/antagonist/wizard_minion/get_team() @@ -102,12 +102,12 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) return wiz_team /datum/team/wizard - name = "\improper Wizard team" + name = "\proper Команда Волшебников" var/datum/antagonist/wizard/master_wizard /datum/antagonist/wizard/proc/create_wiz_team() wiz_team = new(owner) - wiz_team.name = "[owner.current.real_name] team" + wiz_team.name = "Команда [owner.current.real_name]" wiz_team.master_wizard = src /// Initialises the grand ritual action for this mob @@ -123,7 +123,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) return if(!GLOB.wizardstart.len) SSjob.SendToLateJoin(owner.current) - to_chat(owner, "HOT INSERTION, GO GO GO") + to_chat(owner, "ПРЯМО СЕЙЧАС, ПОШЕЛ ПОШЕЛ ПОШЕЛ") owner.current.forceMove(pick(GLOB.wizardstart)) /datum/antagonist/wizard/proc/create_objectives() @@ -216,7 +216,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) var/wizard_name_second = pick(GLOB.wizard_second) var/randomname = "[wizard_name_first] [wizard_name_second]" var/mob/living/wiz_mob = owner.current - var/newname = sanitize_name(reject_bad_text(tgui_input_text(wiz_mob, "You are the [name]. Would you like to change your name to something else?", "Name change", randomname, MAX_NAME_LEN))) + var/newname = sanitize_name(reject_bad_text(tgui_input_text(wiz_mob, "Вы - [name]. Вы хотите изменить свое имя на другое?", "Смена имени", randomname, MAX_NAME_LEN))) if (!newname) newname = randomname @@ -241,7 +241,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) SIGNAL_HANDLER var/datum/objective/custom/successful_ritual = new() successful_ritual.owner = owner - successful_ritual.explanation_text = "Complete the Grand Ritual at least seven times." + successful_ritual.explanation_text = "Завершите Великий ритуал не менее семи раз." successful_ritual.completed = TRUE objectives = list(successful_ritual) UnregisterSignal(ritual, COMSIG_GRAND_RITUAL_FINAL_COMPLETE) @@ -254,7 +254,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) owner.current.forceMove(pick(GLOB.wizardstart)) /datum/antagonist/wizard/apprentice - name = "Wizard Apprentice" + name = "Ученик мага" antag_hud_name = "apprentice" can_assign_self_objectives = FALSE move_to_lair = FALSE @@ -264,7 +264,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) wiz_age = APPRENTICE_AGE_MIN /datum/antagonist/wizard/apprentice/greet() - to_chat(owner, "You are [master.current.real_name]'s apprentice! You are bound by magic contract to follow [master.p_their()] orders and help [master.p_them()] in accomplishing [master.p_their()] goals.") + to_chat(owner, "Вы ученик [master.current.real_name]! Вы связаны магическим контрактом, чтобы следовать приказам и помогать в выполнении целей своего учителя.") owner.announce_objectives() /datum/antagonist/wizard/apprentice/assign_ritual() @@ -284,18 +284,18 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) /datum/action/cooldown/spell/aoe/magic_missile, /datum/action/cooldown/spell/pointed/projectile/fireball, ) - to_chat(owner, span_bold("Your service has not gone unrewarded, however. \ - Studying under [master.current.real_name], you have learned powerful, \ - destructive spells. You are able to cast magic missile and fireball.")) + to_chat(owner, span_bold("Однако ваша служба не прошла даром. \ + Учась у [master.current.real_name], вы выучили мощные, \ + разрушительные заклинания. Вы можете использовать заклинания «Magic Missile» и «Fireball».")) if(APPRENTICE_BLUESPACE) spells_to_grant = list( /datum/action/cooldown/spell/teleport/area_teleport/wizard, /datum/action/cooldown/spell/jaunt/ethereal_jaunt, ) - to_chat(owner, span_bold("Your service has not gone unrewarded, however. \ - Studying under [master.current.real_name], you have learned reality-bending \ - mobility spells. You are able to cast teleport and ethereal jaunt.")) + to_chat(owner, span_bold("Однако ваша служба не прошла даром. \ + Учась у [master.current.real_name], вы изучили заклинания перемещения, \ + изменяющие реальность. Вы можете использовать заклинания «Teleport» и «Ethereal Jaunt».")) if(APPRENTICE_HEALING) spells_to_grant = list( @@ -305,17 +305,17 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) items_to_grant = list( /obj/item/gun/magic/staff/healing, ) - to_chat(owner, span_bold("Your service has not gone unrewarded, however. \ - Studying under [master.current.real_name], you have learned life-saving \ - survival spells. You are able to cast charge and forcewall, and have a staff of healing.")) + to_chat(owner, span_bold("Однако ваша служба не прошла даром. \ + Учась у [master.current.real_name], вы изучили жизненно-спасительные \ + заклинания выживания. Вы можете использовать заклинания «Charge» и «Forcewall», а также владеете посохом исцеления.")) if(APPRENTICE_ROBELESS) spells_to_grant = list( /datum/action/cooldown/spell/aoe/knock, /datum/action/cooldown/spell/pointed/mind_transfer, ) - to_chat(owner, span_bold("Your service has not gone unrewarded, however. \ - Studying under [master.current.real_name], you have learned stealthy, \ - robeless spells. You are able to cast knock and mindswap.")) + to_chat(owner, span_bold("Однако ваша служба не прошла даром. \ + Учась у [master.current.real_name], Вы выучили скрытные заклинания, \ + не нуждающиеся в магических одеяниях. Вы можете использовать заклинания «Knock» и «Mindswap».")) for(var/spell_type in spells_to_grant) var/datum/action/cooldown/spell/new_spell = new spell_type(owner) @@ -329,19 +329,19 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) var/datum/objective/protect/new_objective = new /datum/objective/protect new_objective.owner = owner new_objective.target = master - new_objective.explanation_text = "Protect [master.current.real_name], the wizard." + new_objective.explanation_text = "Защищайте волшебника - [master.current.real_name]." objectives += new_objective //Random event wizard /datum/antagonist/wizard/apprentice/imposter - name = "Wizard Imposter" + name = "Волшебник-самозванец" show_in_antagpanel = FALSE allow_rename = FALSE move_to_lair = FALSE /datum/antagonist/wizard/apprentice/imposter/greet() . = ..() - to_chat(owner, "Trick and confuse the crew to misdirect malice from your handsome original!") + to_chat(owner, "Обманите и запутайте экипаж, чтобы отвести злобу от вашего прекрасного оригинала!") owner.announce_objectives() /datum/antagonist/wizard/apprentice/imposter/equip_wizard() @@ -371,7 +371,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) blink.Grant(H) /datum/antagonist/wizard/academy - name = "Academy Teacher" + name = "Учитель академии" show_in_antagpanel = FALSE outfit_type = /datum/outfit/wizard/academy move_to_lair = FALSE @@ -397,7 +397,7 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) exiled.implant(living_current) /datum/antagonist/wizard/academy/create_objectives() - var/datum/objective/new_objective = new("Protect Wizard Academy from the intruders") + var/datum/objective/new_objective = new("Защитите Академию волшебников от незваных гостей") new_objective.owner = owner objectives += new_objective @@ -407,20 +407,20 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) parts += printplayer(owner) if (ritual) - parts += "
Grand Rituals completed: [ritual.times_completed]
" + parts += "
Завершенно Великих ритуалов: [ritual.times_completed]
" var/count = 1 var/wizardwin = TRUE for(var/datum/objective/objective in objectives) if(!objective.check_completion()) wizardwin = FALSE - parts += "Objective #[count]: [objective.explanation_text] [objective.get_roundend_success_suffix()]" + parts += "Задача #[count]: [objective.explanation_text] [objective.get_roundend_success_suffix()]" count++ if(wizardwin) - parts += span_greentext("The wizard was successful!") + parts += span_greentext("Волшебник был успешен!") else - parts += span_redtext("The wizard has failed!") + parts += span_redtext("Волшебник провалился!") var/list/purchases = list() for(var/list/log as anything in GLOB.wizard_spellbook_purchases_by_key[owner.key]) @@ -430,10 +430,10 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) purchases += "[amount > 1 ? "[amount]x ":""][initial(bought.name)]" if(length(purchases)) - parts += span_bold("[owner.name] used the following spells:") + parts += span_bold("[owner.name] использовал следующие заклинания:") parts += purchases.Join(", ") else - parts += span_bold("[owner.name] didn't buy any spells!") + parts += span_bold("[owner.name] не покупал никаких заклинаний!") return parts.Join("
") @@ -441,10 +441,10 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key) /datum/team/wizard/roundend_report() var/list/parts = list() - parts += "Wizards/witches of [master_wizard.owner.name] team were:" + parts += "Волшебниками/ведьмами из команды [master_wizard.owner.name] были:" parts += master_wizard.roundend_report() parts += " " - parts += "[master_wizard.owner.name] apprentices and minions were:" + parts += "[master_wizard.owner.name] - учениками и помощниками были:" parts += printplayerlist(members - master_wizard.owner) return "
[parts.Join("
")]
" diff --git a/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx b/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx index a2b4136f81d10..79223e933194b 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoWizard.tsx @@ -65,12 +65,12 @@ export const AntagInfoWizard = (props) => {
- You are the Space Wizard! + Вы - Космический Волшебник! {
-
+
- You have a spellbook which is bound to you. You can use it to - choose a magical arsenal. + У вас есть книга заклинаний, привязанная к вам. Вы можете + использовать её, чтобы выбрать ваш магический арсенал.
- The deadly page has the offensive spells, to destroy your - enemies. + На странице смертоносности содержатся наступающие + заклинания, чтобы уничтожить ваших врагов.
- The defensive page has defensive spells, to keep yourself - alive. Remember, you may be powerful, but you are still only - human. + На странице защиты содержатся защитные заклинания, чтобы + сохранить себя живым. Помните, что вы можете быть + могущественным, но вы все еще просто человек.
- The transport page has mobility spells, very important - aspect of staying alive and getting things done. + На странице передвижения содержатся заклинания мобильности, + очень важный аспект выживания и выполнения поставленных + задач.
- The summoning page has summoning and other helpful spells - for not fighting alone. Careful, not every summon is on your - side. + На странице призывания содержатся заклинания призыва и + другие полезные заклинания для того, чтобы не сражаться в + одиночку. Осторожно, не все призванные вами находятся на + вашей стороне.
- The rituals page has powerful global effects, that will pit - the station against itself. Do mind that these are either - expensive, or just for panache. + На странице ритуалов есть мощные глобальные эффекты, которые + поставят станцию против самой себя. Имейте в виду, что они + либо дорогие, или просто для пафоса.
- (If you are unsure what to get or are new to the Federation, - go to the "Wizard Approved Loadouts" section. There - you will find some kits that work fairly well for new - wizards.) + (Если вы не знаете, что взять, или являетесь новичком в + Федерации, перейдите в секцию "Наборы снаряжения, + одобренные волшебниками". Там вы найдете несколько + наборов, которые хорошо подходят для новых волшебников.)
-
+
- Teleport scroll: 4 uses to - teleport wherever you want. You will not be able to come back - to the den, so be sure you have everything ready before - departing. + Свиток телепортации: 4 + использования для телепортации, куда вы захотите. Вы не + сможете вернуться в логово, поэтому убедитесь, что у вас все + готово, перед отправкой.
- Wizard robes: Used to cast most - spells. Your spellbook will let you know which spells cannot - be cast without a garb. + Мантии волшебника: Используется + для произношения большинства заклинаний. В вашей книге + заклинаний вы узнаете, какие заклинания нельзя использовать + без вашего одеяния.
- Remember: Do not forget to prepare your spells. + Помните: Не забудьте подготовить свои заклинания.
@@ -164,14 +167,14 @@ const RitualPrintout = (props: { ritual: GrandRitual }) => { } return ( - Alternately, complete the{' '} - Grand Ritual - by invoking a ritual circle at several nexuses of power. + Кроме того, выполните{' '} + Великий ритуал + - вызывая ритуальный круг в нескольких центрах силы.
- You must complete the ritual - {ritual.remaining} more times. + Вы должны завершить ритуал еще + {ritual.remaining} раз.
- Your next ritual location is the + Следующее место проведения ритуала - {ritual.next_area}.
); diff --git a/tgui/packages/tgui/interfaces/ApprenticeContract.tsx b/tgui/packages/tgui/interfaces/ApprenticeContract.tsx index 2dbd4dbacb03f..56423566c0cf9 100644 --- a/tgui/packages/tgui/interfaces/ApprenticeContract.tsx +++ b/tgui/packages/tgui/interfaces/ApprenticeContract.tsx @@ -12,51 +12,52 @@ export const ApprenticeContract = (props) => {
- If you cannot reach any of your apprentices today, you can feed - the contract back into your spellbook to refund it. + Если вы не можете связаться с кем-то из своих учеников сегодня, вы + можете сунуть контракт обратно в книгу заклинаний, чтобы + возместить его стоимость.
@@ -93,7 +94,7 @@ const ApprenticeSelection = (props) => { }) } > - Select + Выбрать
diff --git a/tgui/packages/tgui/interfaces/Spellbook.tsx b/tgui/packages/tgui/interfaces/Spellbook.tsx index 174da5e8bfcb3..e1246874a716b 100644 --- a/tgui/packages/tgui/interfaces/Spellbook.tsx +++ b/tgui/packages/tgui/interfaces/Spellbook.tsx @@ -18,11 +18,11 @@ import { import { Window } from '../layouts'; enum SpellCategory { - Offensive = 'Offensive', - Defensive = 'Defensive', - Mobility = 'Mobility', - Assistance = 'Assistance', - Rituals = 'Rituals', + Offensive = 'Наступление', + Defensive = 'Защита', + Mobility = 'Мобильность', + Assistance = 'Поддержка', + Rituals = 'Ритуалы', } type byondRef = string; @@ -68,69 +68,69 @@ type TabType = { const TAB2NAME: TabType[] = [ { - title: 'Enscribed Name', + title: 'Вписанное имя', blurb: - "This book answers only to its owner, and of course, must have one. The permanence of the pact between a spellbook and its owner ensures such a powerful artifact cannot fall into enemy hands, or be used in ways that break the Federation's rules such as bartering spells.", + 'Эта книга подчиняется только своему владельцу и, конечно, обязана иметь его. Постоянство договора между книгой заклинаний и ее владельцем гарантирует, что такой могущественный артефакт не может попасть в руки врага или быть использован в нарушение правил Федерации, например, для обмена заклинаний.', component: () => , }, { - title: 'Table of Contents', + title: 'Содержание', component: () => , }, { - title: 'Offensive', - blurb: 'Spells and items geared towards debilitating and destroying.', + title: 'Наступление', + blurb: 'Заклинания и предметы, направленные на ослабление и разрушение.', scrollable: true, }, { - title: 'Defensive', + title: 'Защита', blurb: - "Spells and items geared towards improving your survivability or reducing foes' ability to attack.", + 'Заклинания и предметы, направленные на повышение вашей живучести или снижение способности противников к атаке.', scrollable: true, }, { - title: 'Mobility', + title: 'Мобильность', blurb: - 'Spells and items geared towards improving your ability to move. It is a good idea to take at least one.', + 'Заклинания и предметы, направленные на улучшение способности к передвижению. Хорошо бы взять хотя бы одно.', scrollable: true, }, { - title: 'Assistance', + title: 'Поддержка', blurb: - 'Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilities.', + 'Заклинания и предметы, направленные на привлечение внешних сил для помощи вам или улучшение других предметов и способностей.', scrollable: true, }, { - title: 'Challenges', + title: 'Испытания', blurb: - 'The Wizard Federation is looking for shows of power. Arming the station against you will increase the danger, but will grant you more charges for your spellbook.', + 'Федерация волшебников ищет демонстрации силы. Вооружая станцию против вас, вы увеличиваете опасность, но получаете больше зарядов для книги заклинаний.', locked: true, scrollable: true, }, { - title: 'Rituals', + title: 'Ритуалы', blurb: - 'These powerful spells change the very fabric of reality. Not always in your favour.', + 'Эти мощные заклинания изменяют саму ткань реальности. Не всегда в вашу пользу.', scrollable: true, }, { - title: 'Loadouts', + title: 'Наборы', blurb: - 'The Wizard Federation accepts that sometimes, choosing is hard. You can choose from some approved wizard loadouts here.', + 'Федерация волшебников признает, что иногда выбор бывает нелегким. Здесь вы можете выбрать один из одобренных вариантов снаряжения волшебника.', component: () => , }, { - title: 'Randomize', + title: 'Случайный выбор', blurb: - "If you didn't like the loadouts offered, you can embrace chaos. Not recommended for newer wizards.", + 'Если вам не понравились предложенные варианты снаряжения, вы можете принять хаос. Не рекомендуется для начинающих волшебников.', component: () => , }, ]; enum Buywords { - Learn = 'Learn', - Summon = 'Summon', - Cast = 'Cast', + Learn = 'Выучить', + Summon = 'Призвать', + Cast = 'Провести', } const BUYWORD2ICON = { @@ -170,28 +170,28 @@ const TableOfContents = (props) => { fluid icon="pen" disabled - content="Name Enscription" + content="Именная пропись" />