Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

qol: Lavaland loot translation #6160

Closed
wants to merge 17 commits into from
Closed
152 changes: 116 additions & 36 deletions code/modules/mining/lavaland/loot/tendril_loot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,15 @@
//Internal
/obj/item/storage/backpack/shared
name = "paradox bag"
desc = "Somehow, it's in two places at once."
desc = "Каким-то образом существует сразу в двух местах одновременно."
ru_names = list(
NOMINATIVE = "парадоксальная сумка",
GENITIVE = "парадоксальной сумки",
Explosi00N marked this conversation as resolved.
Show resolved Hide resolved
DATIVE = "парадоксальной сумке",
ACCUSATIVE = "парадоксальную сумку",
INSTRUMENTAL = "парадоксальной сумкой",
PREPOSITIONAL = "парадоксальной сумке"
)
max_combined_w_class = 60
max_w_class = WEIGHT_CLASS_NORMAL
cant_hold = list(/obj/item/storage/backpack/shared)
Expand All @@ -13,15 +21,23 @@
// basically we cannot put one bag in the storage if another one is already there
if(istype(I) && I.bag && I.bag == src && I.twin_storage && I.twin_storage.loc == src)
if(!stop_messages)
to_chat(usr, span_warning("Yo dawg, and how are you going to do it?"))
to_chat(usr, span_warning("И как ты собираешься это сделать?"))
return FALSE
return ..()


//External
/obj/item/shared_storage
name = "paradox bag"
desc = "Somehow, it's in two places at once."
desc = "Каким-то образом существует сразу в двух местах одновременно."
ru_names = list(
NOMINATIVE = "парадоксальная сумка",
GENITIVE = "парадоксальной сумки",
DATIVE = "парадоксальной сумке",
ACCUSATIVE = "парадоксальную сумку",
INSTRUMENTAL = "парадоксальной сумкой",
PREPOSITIONAL = "парадоксальной сумке"
)
icon = 'icons/obj/storage.dmi'
icon_state = "cultpack"
slot_flags = ITEM_SLOT_BACK
Expand Down Expand Up @@ -111,19 +127,27 @@

/obj/item/book_of_babel
name = "Book of Babel"
desc = "An ancient tome written in countless tongues."
desc = "Древний фолиант, написанный на бесчисленном количестве языков."
ru_names = list(
NOMINATIVE = "книга вавилона",
GENITIVE = "книги вавилона",
DATIVE = "книге вавилона",
ACCUSATIVE = "книгу вавилона",
INSTRUMENTAL = "книгой вавилона",
PREPOSITIONAL = "книге вавилона"
)
icon = 'icons/obj/library.dmi'
icon_state = "book1"
w_class = 2


/obj/item/book_of_babel/attack_self(mob/living/carbon/user)
if(HAS_TRAIT(user, TRAIT_NO_BABEL))
user.visible_message(span_notice("[user] suddenly stops, releasing [src]."))
to_chat(user, span_warning("You don't know what a book is or what to do with it."))
user.visible_message(span_notice("[user] внезапно останавлива[pluralize_ru(user, "ет", "ют")]ся, осознавая [src]."))
to_chat(user, span_warning("Вы не знаете ни что такое книга, ни что с ней делать."))
return

to_chat(user, "You flip through the pages of the book, quickly and conveniently learning every language in existence. Somewhat less conveniently, the aging book crumbles to dust in the process. Whoops.")
to_chat(user, "Вы пролистываете страницы книги, необъяснимо быстро изучая все известные языки вселенной. В процессе, к сожалению, древний фолиант медленно распадается в прах. Упс.")
user.grant_all_babel_languages()
new /obj/effect/decal/cleanable/ash(get_turf(user))
user.temporarily_remove_item_from_inventory(src)
Expand All @@ -138,7 +162,15 @@

/obj/item/reagent_containers/glass/bottle/potion/flight
name = "strange elixir"
desc = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'."
desc = "Мистический флакон с почти что святой аурой исходящей от него. Надпись на нем гласит: 'эуфц'хъъ тъи'рв лвх йв'атв'."
ru_names = list(
NOMINATIVE = "странный эликсир",
GENITIVE = "странного эликсира",
DATIVE = "странному эликсиру",
ACCUSATIVE = "странный эликсир",
INSTRUMENTAL = "странным эликсиром",
PREPOSITIONAL = "странном эликсире"
)
list_reagents = list("flightpotion" = 5)

/obj/item/reagent_containers/glass/bottle/potion/update_icon_state()
Expand All @@ -150,20 +182,20 @@
/datum/reagent/flightpotion
name = "Flight Potion"
id = "flightpotion"
description = "Strange mutagenic compound of unknown origins."
description = "Странный реагент неизвестного происхождения."
reagent_state = LIQUID
color = "#FFEBEB"

/datum/reagent/flightpotion/reaction_mob(mob/living/M, method = REAGENT_TOUCH, reac_volume, show_message = 1)
to_chat(M, "<span class='warning'>This item is currently non-functional.</span>")
to_chat(M, span_warning("Этот предмет на данный момент не функционален."))
/*if(ishuman(M) && M.stat != DEAD)
var/mob/living/carbon/human/H = M
if(!ishumanbasic(H) || reac_volume < 5) // implying xenohumans are holy
if(method == INGEST && show_message)
to_chat(H, "<span class='notice'><i>You feel nothing but a terrible aftertaste.</i></span>")
to_chat(H, span_notice(span_italics("Кроме отвратительного послевкусия у вас во рту, вы ничего не почувствовали.")))
return ..()

to_chat(H, "<span class='userdanger'>A terrible pain travels down your back as wings burst out!</span>")
to_chat(H, span_danger("Невыносимая боль проходит через вашу спину, как вдруг оттуда вырываются крылья!"))
H.set_species(/datum/species/angel)
playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1, -1)
H.adjustBruteLoss(20)
Expand All @@ -172,15 +204,23 @@

/obj/item/jacobs_ladder
name = "jacob's ladder"
desc = "A celestial ladder that violates the laws of physics."
desc = "Небесная лестница, нарушающая законы физики."
ru_names = list(
NOMINATIVE = "лестница иакова",
GENITIVE = "лестницы иакова",
DATIVE = "лестнице иакова",
ACCUSATIVE = "лестницу иакова",
INSTRUMENTAL = "лестницей иакова",
PREPOSITIONAL = "лестнице иакова
)
icon = 'icons/obj/structures.dmi'
icon_state = "ladder"

Check failure on line 217 in code/modules/mining/lavaland/loot/tendril_loot.dm

View workflow job for this annotation

GitHub Actions / Run Linters

got 'ladder', expected one of: operator, field access, ')', ','

/obj/item/jacobs_ladder/attack_self(mob/user)
var/turf/T = get_turf(src)
var/ladder_x = T.x
var/ladder_y = T.y
to_chat(user, "<span class='notice'>You unfold the ladder. It extends much farther than you were expecting.</span>")
to_chat(user, span_notice("Вы разворачиваете лестницу. Она уходит значительно дальше, чем вы ожидали."))
var/last_ladder = null
for(var/i in 1 to world.maxz)
if(is_admin_level(i) || is_away_level(i) || is_taipan(i))
Expand All @@ -195,12 +235,20 @@
// Inherit from unbreakable but don't set ID, to suppress the default Z linkage
/obj/structure/ladder/unbreakable/jacob
name = "jacob's ladder"
desc = "An indestructible celestial ladder that violates the laws of physics."
desc = "Нерушимая небесная лестница, нарушающая законы физики."

//Wisp Lantern
/obj/item/wisp_lantern
name = "spooky lantern"
desc = "This lantern gives off no light, but is home to a friendly wisp."
desc = "Эта лампа не источает света, но является убежищем для дружелюбного духа."
ru_names = list(
NOMINATIVE = "жуткая лампа",
GENITIVE = "жуткой лампы",
DATIVE = "жуткой лампе",
ACCUSATIVE = "жуткою лампу",
INSTRUMENTAL = "жуткой лампой",
PREPOSITIONAL = "жуткой лампе"
)
icon = 'icons/obj/lighting.dmi'
icon_state = "lantern-blue"
item_state = "lantern"
Expand All @@ -222,33 +270,33 @@

/obj/item/wisp_lantern/attack_self(mob/user)
if(!wisp)
to_chat(user, "<span class='warning'>The wisp has gone missing!</span>")
to_chat(user, span_warning("Дух пропадает."))
update_icon(UPDATE_ICON_STATE)
return

if(wisp.loc == src)
RegisterSignal(user, COMSIG_MOB_UPDATE_SIGHT, PROC_REF(update_user_sight))

to_chat(user, "<span class='notice'>You release the wisp. It begins to bob around your head.</span>")
to_chat(user, span_notice("Выпущенный дух кружится вокруг вашей головы."))
wisp.forceMove(user)
update_icon(UPDATE_ICON_STATE)
INVOKE_ASYNC(wisp, TYPE_PROC_REF(/atom/movable, orbit), user, 20)
set_light_on(FALSE)

user.update_sight()
to_chat(user, "<span class='notice'>The wisp enhances your vision.</span>")
to_chat(user, span_notice("Выпущенный дух улучшает ваше зрение"))

SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") // freed
else
UnregisterSignal(user, COMSIG_MOB_UPDATE_SIGHT)

to_chat(user, "<span class='notice'>You return the wisp to the lantern.</span>")
to_chat(user, span_notice("Вы помещаете духа обратно в лампу."))
wisp.stop_orbit()
wisp.forceMove(src)
set_light_on(TRUE)

user.update_sight()
to_chat(user, "<span class='notice'>Your vision returns to normal.</span>")
to_chat(user, span_notice("Ваше зрение возвращается в норму."))

update_icon(UPDATE_ICON_STATE)
SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") // returned
Expand All @@ -263,7 +311,7 @@
if(wisp.loc == src)
qdel(wisp)
else
wisp.visible_message("<span class='notice'>[wisp] has a sad feeling for a moment, then it passes.</span>")
wisp.visible_message(span_notice("[wisp] взгрустнул на момент, после чего исчез."))
return ..()

/obj/item/wisp_lantern/proc/update_user_sight(mob/user)
Expand All @@ -273,7 +321,7 @@

/obj/effect/wisp
name = "friendly wisp"
desc = "Happy to light your way."
desc = "Счастливо освещает ваш путь."
icon = 'icons/obj/lighting.dmi'
icon_state = "orb"
light_range = 7
Expand All @@ -282,7 +330,15 @@
//Red/Blue Cubes
/obj/item/warp_cube
name = "blue cube"
desc = "A mysterious blue cube."
desc = "Мистический синий куб."
ru_names = list(
NOMINATIVE = "синий куб",
GENITIVE = "синего куба",
DATIVE = "синему кубу",
ACCUSATIVE = "синий куб",
INSTRUMENTAL = "синим кубом",
PREPOSITIONAL = "синем кубе"
)
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "blue_cube"
var/obj/item/warp_cube/linked
Expand All @@ -295,11 +351,11 @@

/obj/item/warp_cube/attack_self(mob/user)
if(!linked)
to_chat(user, "[src] fizzles uselessly.")
balloon_alert(user, "куб искрится и шипит")
return

if(is_in_teleport_proof_area(user) || is_in_teleport_proof_area(linked))
to_chat(user, "<span class='warning'>[src] sparks and fizzles.</span>")
balloon_alert(user, "куб искрится и шипит")
return
if(do_after(user, 1.5 SECONDS, user))
var/datum/effect_system/smoke_spread/smoke = new
Expand All @@ -313,12 +369,20 @@
smoke2.set_up(1, 0, user.loc)
smoke2.start()
else
to_chat(user, "<span class='notice'>You need to hold still to use [src].</span>")
balloon_alert(user, "не двигайтесь")


/obj/item/warp_cube/red
name = "red cube"
desc = "A mysterious red cube."
desc = "Мистический красный куб."
ru_names = list(
NOMINATIVE = "красный куб",
GENITIVE = "красного куба",
DATIVE = "красному кубу",
ACCUSATIVE = "красный куб",
INSTRUMENTAL = "красным кубом",
PREPOSITIONAL = "красном кубе"
)
icon_state = "red_cube"

/obj/item/warp_cube/red/New()
Expand All @@ -332,7 +396,15 @@

/obj/item/gun/magic/hook
name = "meat hook"
desc = "Mid or feed."
desc = "Ты погляди, свежее мясо!"
ru_names = list(
NOMINATIVE = "мясной крюк",
GENITIVE = "мясного крюка",
DATIVE = "мясному крюку",
ACCUSATIVE = "мясной крюк",
INSTRUMENTAL = "мясным крюком",
PREPOSITIONAL = "мясном крюке"
)
ammo_type = /obj/item/ammo_casing/magic/hook
icon_state = "hook"
item_state = "chain"
Expand All @@ -343,7 +415,7 @@

/obj/item/ammo_casing/magic/hook
name = "hook"
desc = "a hook."
desc = "Крюк. Get over here!"
projectile_type = /obj/item/projectile/hook
caliber = "hook"
icon_state = "hook"
Expand Down Expand Up @@ -372,7 +444,7 @@
var/turf/firer_turf = get_turf(firer)
var/mob/living/L = target
if(!L.anchored && L.loc)
L.visible_message("<span class='danger'>[L] is snagged by [firer]'s hook!</span>")
L.visible_message(span_danger("[firer] утаскива[pluralize_ru(user.gender, "ет", "ют")] [L] своим крюком!"))
ADD_TRAIT(L, TRAIT_UNDENSE, UNIQUE_TRAIT_SOURCE(src)) // Ensures the hook does not hit the target multiple times
L.forceMove(firer_turf)
REMOVE_TRAIT(L, TRAIT_UNDENSE, UNIQUE_TRAIT_SOURCE(src))
Expand All @@ -385,7 +457,15 @@
//Immortality Talisman
/obj/item/immortality_talisman
name = "Immortality Talisman"
desc = "A dread talisman that can render you completely invulnerable."
desc = "Зловещий талисман, способный временно сделать вас неуязвимым."
ru_names = list(
NOMINATIVE = "талисман бессмертия",
GENITIVE = "талисмана бессмертия",
DATIVE = "талисману бессмертия",
ACCUSATIVE = "талисман бессмертия",
INSTRUMENTAL = "талисманом бессмертия",
PREPOSITIONAL = "талисмане бессмертия"
)
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "talisman"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
Expand All @@ -406,7 +486,7 @@

/obj/item/immortality_talisman/attack_self(mob/user)
if(!COOLDOWN_FINISHED(src, last_used_immortality_talisman))
to_chat(user, span_warning("[src] is still recharging."))
balloon_alert(user, "перезарядка")
return

var/turf/source_turf = get_turf(src)
Expand All @@ -415,11 +495,11 @@

COOLDOWN_START(src, last_used_immortality_talisman, 60 SECONDS)
SSblackbox.record_feedback("amount", "immortality_talisman_uses", 1)
user.visible_message(span_danger("[user] vanishes from reality, leaving a a hole in [user.p_their()] place!"))
user.visible_message(span_danger("[user] выпада[pluralize_ru(user.gender, "ет", "ют")] из реальности, оставляя после себя дыру в пространстве!"))

var/obj/effect/immortality_talisman/effect = new(source_turf)
effect.name = "hole in reality"
effect.desc = "It's shaped an awful lot like [user.name]."
effect.desc = "Подозрительно напоминает силуэт [user.name]."
effect.setDir(user.dir)
user.forceMove(effect)
user.add_traits(list(TRAIT_NO_TRANSFORM, TRAIT_GODMODE), UNIQUE_TRAIT_SOURCE(src))
Expand All @@ -438,7 +518,7 @@

user.remove_traits(list(TRAIT_NO_TRANSFORM, TRAIT_GODMODE), UNIQUE_TRAIT_SOURCE(src))
user.forceMove(effect_turf)
user.visible_message(span_danger("[user] pops back into reality!"))
user.visible_message(span_danger("[user] возвраща[pluralize_ru(user, "ет", "ют")]ся в нашу реальность!"))
effect.can_destroy = TRUE

if(length(effect.contents))
Expand Down
Loading