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="Именная пропись"
/>