From 10b38fa323a7a5f9fa8dc7a8ddf982900c115bb4 Mon Sep 17 00:00:00 2001
From: chomasuke <85545019+chomasuke@users.noreply.github.com>
Date: Mon, 9 Feb 2026 22:53:52 +0300
Subject: [PATCH 1/9] =?UTF-8?q?del:=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD?=
=?UTF-8?q?=D0=B8=D0=B5=20=D0=9C=D0=AD=D0=9A=D0=BE=D0=B2=20=D0=B8=20=D0=98?=
=?UTF-8?q?=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D0=BB=D0=BE=D0=BA=20=D0=B8?=
=?UTF-8?q?=D0=B7=20=D0=B1=D0=B8=D0=BB=D0=B4=D0=B0=20(#8512)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
zalupa
экшены оболочки для мода
оболочка для мода перенесена в мехфаб
маркер. удаление устаревшего переопределённого прока get_equipped_items,
замена передаваемых аргументов на битфлаги, где этого ещё не было.
компоненту лазера добавлен кд на использование 1 секунда
---
code/__DEFINES/cooldowns.dm | 1 +
code/datums/rituals.dm | 2 +-
.../special_shadowling_abilities.dm | 4 +-
code/game/machinery/recycler.dm | 29 ++++----
code/game/objects/items.dm | 4 +-
.../objects/items/devices/traitordevices.dm | 2 +-
code/modules/admin/verbs/debug.dm | 2 +-
.../contractor/drifting_contractor.dm | 2 +-
.../syndicate/nuclear/nuclear_operative.dm | 2 +-
code/modules/clothing/head/misc_special.dm | 2 +-
code/modules/mob/inventory.dm | 2 +-
.../mob/living/carbon/human/inventory.dm | 31 ---------
code/modules/mob/living/carbon/inventory.dm | 32 +--------
code/modules/mob/living/living.dm | 2 +-
.../mob/living/silicon/robot/inventory.dm | 2 +-
.../research/designs/wiremod_designs.dm | 6 +-
.../components/action/equpiment_action.dm | 3 +-
.../wiremod/components/action/laserpointer.dm | 9 ++-
.../wiremod/shell/brain_computer_interface.dm | 9 ++-
code/modules/wiremod/shell/module.dm | 69 ++++++++++++-------
20 files changed, 91 insertions(+), 124 deletions(-)
diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm
index 0b4bff9ff950..2c4ae0527b94 100644
--- a/code/__DEFINES/cooldowns.dm
+++ b/code/__DEFINES/cooldowns.dm
@@ -53,6 +53,7 @@
#define COOLDOWN_CIRCUIT_PATHFIND_DIF "circuit_pathfind_different"
#define COOLDOWN_CIRCUIT_TARGET_INTERCEPT "circuit_target_intercept"
#define COOLDOWN_CIRCUIT_VIEW_SENSOR "circuit_view_sensor"
+#define COOLDOWN_CIRCUIT_LASER "circuit_laser"
// mob cooldowns
#define COOLDOWN_YAWN_PROPAGATION "yawn_propagation_cooldown"
diff --git a/code/datums/rituals.dm b/code/datums/rituals.dm
index 74d12e4752bc..68de490f930d 100644
--- a/code/datums/rituals.dm
+++ b/code/datums/rituals.dm
@@ -707,7 +707,7 @@
smoke.set_up(amount = 5, location = get_turf(human.loc))
smoke.start()
- for(var/obj/item/obj as anything in human.get_equipped_items(TRUE, TRUE))
+ for(var/obj/item/obj as anything in human.get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
human.drop_item_ground(obj)
return
diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
index 5b3c6602dfae..25b2e697103f 100644
--- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
@@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(possibleShadowlingNames, list("U'ruan", "Y`shej", "Nex", "Hel-u
user.visible_message(span_warning("Вещи [user] неожиданно начали сползать. С них стекает обильное количество фиолетовой жижи, которая формируется вокруг них."), \
span_shadowling("Вы сбрасываете одежду, которая может помешать вашему вылуплению и начинаете выделять смолу, которая защитит вас."))
user.Stun(35 SECONDS, TRUE)
- for(var/obj/item/item as anything in user.get_equipped_items(TRUE, TRUE))
+ for(var/obj/item/item as anything in user.get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
user.drop_item_ground(item, force = TRUE)
sleep(5 SECONDS)
@@ -242,7 +242,7 @@ GLOBAL_LIST_INIT(possibleShadowlingNames, list("U'ruan", "Y`shej", "Nex", "Hel-u
* Testing purpose.
*/
/mob/living/carbon/human/proc/make_unhatched_shadowling()
- for(var/obj/item/item as anything in get_equipped_items(TRUE, TRUE))
+ for(var/obj/item/item as anything in get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
drop_item_ground(item, force = TRUE)
var/newNameId = pick(GLOB.possibleShadowlingNames)
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 09cd495e9ba2..d717138307f7 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -146,41 +146,40 @@
emergency_mode = FALSE
update_icon(UPDATE_ICON_STATE)
-/obj/machinery/recycler/proc/crush_living(mob/living/L)
+/obj/machinery/recycler/proc/crush_living(mob/living/target)
+ target.forceMove(loc)
- L.forceMove(loc)
-
- if(issilicon(L))
+ if(issilicon(target))
playsound(loc, 'sound/items/welder.ogg', 50, TRUE)
else
playsound(loc, 'sound/effects/splat.ogg', 50, TRUE)
var/gib = 1
// By default, the emagged recycler will gib all non-carbons. (human simple animal mobs don't count)
- if(iscarbon(L))
+ if(iscarbon(target))
gib = 0
- if(L.stat == CONSCIOUS)
- L.say("ARRRRRRRRRRRGH!!!")
- add_mob_blood(L)
+ if(target.stat == CONSCIOUS)
+ target.say("ARRRRRRRRRRRGH!!!")
+ add_mob_blood(target)
- if(!blood && !issilicon(L))
+ if(!blood && !issilicon(target))
blood = 1
update_icon(UPDATE_ICON_STATE)
// Remove and recycle the equipped items
if(eat_victim_items)
- for(var/obj/item/I in L.get_equipped_items(TRUE, TRUE))
- if(L.drop_item_ground(I))
- eat(I, sound = 0)
+ for(var/obj/item/item in target.get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
+ if(target.drop_item_ground(item))
+ eat(item, sound = 0)
// Instantly lie down, also go unconscious from the pain, before you die.
- L.Paralyse(10 SECONDS)
+ target.Paralyse(10 SECONDS)
// For admin fun, var edit emagged to 2.
if(gib || emagged == 2)
- L.gib()
+ target.gib()
else if(emagged == 1)
- L.adjustBruteLoss(crush_damage)
+ target.adjustBruteLoss(crush_damage)
/obj/machinery/recycler/verb/rotate()
set name = "Повернуть по часовой"
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 2497e8a3a37e..265b4c2944b7 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -816,12 +816,12 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/g
* Returns `TRUE` if the item is equipped by a mob, `FALSE` otherwise.
* This might need some error trapping, not sure if get_equipped_items() is safe for non-human mobs.
*/
-/obj/item/proc/is_equipped(include_pockets = FALSE, include_hands = FALSE)
+/obj/item/proc/is_equipped(include_flags = NONE)
if(!ismob(loc))
return FALSE
var/mob/M = loc
- if(src in M.get_equipped_items(include_pockets, include_hands))
+ if(src in M.get_equipped_items(include_flags))
return TRUE
else
return FALSE
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index ce4d2e35e26c..c31bcf4de258 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -384,7 +384,7 @@ effective or pretty fucking useless.
playsound(destination, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
playsound(destination, 'sound/magic/disintegrate.ogg', 50, TRUE)
destination.ex_act(rand(EXPLODE_DEVASTATE, EXPLODE_HEAVY))
- for(var/obj/item/thing as anything in user.get_equipped_items(TRUE, TRUE))
+ for(var/obj/item/thing as anything in user.get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
if(!user.drop_item_ground(thing))
qdel(thing)
to_chat(user, span_biggerdanger("You teleport into the wall, the teleporter tries to save you, but--"))
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 1bbbfe78d21d..f0c2982c26cd 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -574,7 +574,7 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(select_equipment, R_EVENT, "Select Equipment", mob/
if(tgui_alert(user, "Нужно ли выбрасывать вещи из карманов? Выбор \"Нет\" удалит их.", "Выбор экипировки существа", "Да", "Нет") == "Нет")
delete_pocket = TRUE
- for(var/obj/item/I in H.get_equipped_items(delete_pocket))
+ for(var/obj/item/I in H.get_equipped_items(delete_pocket ? INCLUDE_POCKETS : NONE))
qdel(I)
if(dresscode != "Naked")
H.equipOutfit(dresscode)
diff --git a/code/modules/antagonists/syndicate/contractor/drifting_contractor.dm b/code/modules/antagonists/syndicate/contractor/drifting_contractor.dm
index 7087a6bb54b9..8b0db9da2a46 100644
--- a/code/modules/antagonists/syndicate/contractor/drifting_contractor.dm
+++ b/code/modules/antagonists/syndicate/contractor/drifting_contractor.dm
@@ -26,7 +26,7 @@
if(!our_outfit)
return
- for(var/obj/item/item as anything in human.get_equipped_items(TRUE, TRUE))
+ for(var/obj/item/item as anything in human.get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
qdel(item)
human.equipOutfit(our_outfit)
diff --git a/code/modules/antagonists/syndicate/nuclear/nuclear_operative.dm b/code/modules/antagonists/syndicate/nuclear/nuclear_operative.dm
index b2882fb8138b..938eebc68955 100644
--- a/code/modules/antagonists/syndicate/nuclear/nuclear_operative.dm
+++ b/code/modules/antagonists/syndicate/nuclear/nuclear_operative.dm
@@ -80,7 +80,7 @@
if(!outfit)
return
- for(var/obj/item/item in human.get_equipped_items(TRUE, TRUE))
+ for(var/obj/item/item in human.get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
qdel(item)
human.equipOutfit(outfit)
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 6757c567e4b2..2c6b08704bb5 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -136,7 +136,7 @@
return PROCESS_KILL
var/turf/cake_turf = loc
- if(is_equipped(include_pockets = TRUE, include_hands = TRUE))
+ if(is_equipped(INCLUDE_POCKETS | INCLUDE_HELD))
cake_turf = loc.loc
if(isturf(cake_turf))
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index e96facd33d68..a651973f4ef3 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -629,7 +629,7 @@
//get_all_contents that is reasonable and not stupid
/mob/living/proc/get_all_gear(recursive = TRUE)
- var/list/processing_list = get_equipped_items(TRUE, TRUE)
+ var/list/processing_list = get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD)
list_clear_nulls(processing_list) // handles empty hands
var/i = 0
while(i < length(processing_list))
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index ec5869e11e1b..92fe8ef5e601 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -633,37 +633,6 @@
for(var/slot in get_all_slots())//order matters, dependant slots go first
qdel(slot)
-/mob/living/carbon/human/get_equipped_items(include_pockets = FALSE, include_hands = FALSE)
- var/list/items = ..()
- if(belt)
- items += belt
- if(l_ear)
- items += l_ear
- if(r_ear)
- items += r_ear
- if(glasses)
- items += glasses
- if(gloves)
- items += gloves
- if(neck)
- items += neck
- if(shoes)
- items += shoes
- if(wear_id)
- items += wear_id
- if(wear_pda)
- items += wear_pda
- if(w_uniform)
- items += w_uniform
- if(include_pockets)
- if(l_store)
- items += l_store
- if(r_store)
- items += r_store
- if(s_store)
- items += s_store
- return items
-
/**
* Used to return a list of equipped items on a human mob; does not by default include held items, see include_flags
*
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index fda15752f98b..36b7eb4eb77e 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -395,38 +395,12 @@
// Returns items which are currently visible on the mob
/mob/living/carbon/proc/get_visible_items()
- var/static/list/visible_slots = list(
- ITEM_SLOT_GLOVES,
- ITEM_SLOT_EYES,
- ITEM_SLOT_EARS,
- ITEM_SLOT_MASK,
- ITEM_SLOT_HEAD,
- ITEM_SLOT_FEET,
- ITEM_SLOT_ID,
- ITEM_SLOT_PDA,
- ITEM_SLOT_BELT,
- ITEM_SLOT_BACK,
- ITEM_SLOT_NECK,
- ITEM_SLOT_HANDS,
- ITEM_SLOT_BACKPACK,
- ITEM_SLOT_SUITSTORE,
- ITEM_SLOT_HANDCUFFED,
- ITEM_SLOT_LEGCUFFED,
- )
var/list/obscured = check_obscured_slots()
var/list/visible_items = list()
- for(var/slot in visible_slots)
- if(obscured & slot)
- continue
-
- var/obj/item/equipped = get_item_by_slot(slot)
-
- if(equipped)
- visible_items += equipped
-
- for(var/obj/item/held in get_equipped_items(INCLUDE_HELD))
- visible_items += held
+ for(var/obj/item/thing in get_equipped_items(INCLUDE_HELD))
+ if(!(get_slot_by_item(thing) & obscured))
+ visible_items += thing
return visible_items
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 218d33d7af41..300d9b028633 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1668,7 +1668,7 @@
return
/mob/living/extinguish_light(force = FALSE)
- for(var/obj/item/item as anything in get_equipped_items(TRUE, TRUE))
+ for(var/obj/item/item as anything in get_equipped_items(INCLUDE_POCKETS | INCLUDE_HELD))
item.extinguish_light(force)
/mob/living/vv_edit_var(var_name, var_value)
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 0f7a124a2f72..7dc671f04a32 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -11,7 +11,7 @@
/mob/living/silicon/robot/get_all_slots()
return list(module_state_1, module_state_2, module_state_3)
-/mob/living/silicon/robot/get_equipped_items(include_pockets = FALSE, include_hands = FALSE)
+/mob/living/silicon/robot/get_equipped_items(include_flags = NONE)
. = list()
if(module_state_1)
. += module_state_1
diff --git a/code/modules/research/designs/wiremod_designs.dm b/code/modules/research/designs/wiremod_designs.dm
index a420a39462c9..d10b0cee9a0d 100644
--- a/code/modules/research/designs/wiremod_designs.dm
+++ b/code/modules/research/designs/wiremod_designs.dm
@@ -592,15 +592,11 @@
PROTOLATHE_CATEGORY_CIRCUITRY,
)
-/datum/design/mod_module_shell
+/datum/design/module/mod_module_shell
id = "module_shell"
req_tech = list(RESEARCH_TREE_MATERIALS = 2, RESEARCH_TREE_PROGRAMMING = 2)
materials = list(MAT_GLASS = 1000)
build_path = /obj/item/mod/module/circuit
- build_type = PROTOLATHE
- category = list(
- PROTOLATHE_CATEGORY_CIRCUITRY,
- )
// /datum/design/undertile_shell
// id = "undertile_shell"
diff --git a/code/modules/wiremod/components/action/equpiment_action.dm b/code/modules/wiremod/components/action/equpiment_action.dm
index ee117057cc43..d08a4737ba4a 100644
--- a/code/modules/wiremod/components/action/equpiment_action.dm
+++ b/code/modules/wiremod/components/action/equpiment_action.dm
@@ -127,8 +127,9 @@
/obj/item/circuit_component/equipment_action/proc/update_actions()
for(var/uid in granted_to)
var/datum/action/granted_action = granted_to[uid]
- granted_action.name = button_name.value || "Дейстие"
+ granted_action.name = button_name.value || "Действие"
granted_action.button_icon_state = LAZYACCESS(options_map, icon_options.value)
+ granted_action.build_all_button_icons(ALL)
#undef HUD_BLANK
diff --git a/code/modules/wiremod/components/action/laserpointer.dm b/code/modules/wiremod/components/action/laserpointer.dm
index 5defa076187f..62f993be6336 100644
--- a/code/modules/wiremod/components/action/laserpointer.dm
+++ b/code/modules/wiremod/components/action/laserpointer.dm
@@ -18,10 +18,12 @@
var/datum/port/input/option/lasercolour_option
+ var/laser_cooldown = 1 SECONDS
/obj/item/circuit_component/laserpointer/get_ui_notices()
. = ..()
. += create_ui_notice("Максимальная дальность: [max_range] тайл[DECL_CREDIT(max_range)]", "orange", "info")
+ . += create_ui_notice("Перезарядка: [DisplayTimeText(laser_cooldown)]", "orange", "stopwatch")
/obj/item/circuit_component/laserpointer/populate_options()
var/static/component_options = list(
@@ -32,20 +34,19 @@
)
lasercolour_option = add_option_port("Цвет лазера", component_options)
-
/obj/item/circuit_component/laserpointer/populate_ports()
target_input = add_input_port("Цель", PORT_TYPE_ATOM)
image_pixel_x = add_input_port("X", PORT_TYPE_NUMBER)
image_pixel_y = add_input_port("Y", PORT_TYPE_NUMBER)
-
/obj/item/circuit_component/laserpointer/input_received(datum/port/input/port)
+ if(TIMER_COOLDOWN_RUNNING(parent.shell, COOLDOWN_CIRCUIT_LASER))
+ return
var/atom/target = target_input.value
var/atom/movable/shell = parent.shell
var/turf/target_location = get_turf(target)
-
var/pointer_icon_state = lasercolour_option.value
var/turf/current_turf = get_location()
@@ -65,3 +66,5 @@
laser_location.pixel_z = clamp(target.pixel_y + image_pixel_y.value, -15, 15)
target_location.flick_overlay_view(laser_location, 1 SECONDS)
+
+ TIMER_COOLDOWN_START(shell, COOLDOWN_CIRCUIT_LASER, laser_cooldown)
diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm
index 5cde757dd8b8..58fde6ad2d02 100644
--- a/code/modules/wiremod/shell/brain_computer_interface.dm
+++ b/code/modules/wiremod/shell/brain_computer_interface.dm
@@ -263,9 +263,12 @@
var/obj/item/stock_parts/cell/cell = circuit_component.parent.cell
if(isnull(cell))
- to_chat(owner, span_boldwarning("[circuit_component.parent.declent_ru(NOMINATIVE)] не име[PLUR_ET_UT(circuit_component.parent)] элемента питания."))
+ to_chat(owner, span_boldwarning("[circuit_component.parent.declent_ru(NOMINATIVE)] \
+ не име[PLUR_ET_UT(circuit_component.parent)] элемента питания."))
else
- to_chat(owner, span_notice("В [cell.declent_ru(PREPOSITIONAL)] [circuit_component.parent.declent_ru(GENITIVE)] осталось [cell.percent()]% заряда."))
+ to_chat(owner, span_notice("В [cell.declent_ru(PREPOSITIONAL)] \
+ [circuit_component.parent.declent_ru(GENITIVE)] \
+ осталось [round(cell.percent(), 1)]% заряда."))
/datum/action/innate/bci_charge_action/process(seconds_per_tick)
build_all_button_icons(UPDATE_BUTTON_STATUS)
@@ -273,7 +276,7 @@
/datum/action/innate/bci_charge_action/update_button_status(atom/movable/screen/movable/action_button/button, force = FALSE)
. = ..()
var/obj/item/stock_parts/cell/cell = circuit_component.parent.cell
- button.maptext = cell ? MAPTEXT("[cell.percent()]%") : ""
+ button.maptext = cell ? MAPTEXT("[round(cell.percent(), 1)]%") : ""
/obj/machinery/bci_implanter
name = "brain-computer interface manipulation chamber"
diff --git a/code/modules/wiremod/shell/module.dm b/code/modules/wiremod/shell/module.dm
index f1eac8ccab1a..3cbeaa34ce09 100644
--- a/code/modules/wiremod/shell/module.dm
+++ b/code/modules/wiremod/shell/module.dm
@@ -11,7 +11,7 @@
/// A reference to the shell component, used to access the shell and its attached circuit
var/datum/component/shell/shell
/// List of installed action components
- var/list/obj/item/circuit_component/equipment_action/action_comps = list()
+ var/list/obj/item/circuit_component/equipment_action/action_comps
/obj/item/mod/module/circuit/get_ru_names()
return list(
@@ -23,7 +23,6 @@
PREPOSITIONAL = "модуле интегральной схемы",
)
-
/obj/item/mod/module/circuit/Initialize(mapload)
. = ..()
@@ -42,49 +41,53 @@
/obj/item/mod/module/circuit/proc/action_comp_registered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
SIGNAL_HANDLER
- action_comps += action_comp
+ LAZYADD(action_comps, action_comp)
/obj/item/mod/module/circuit/proc/action_comp_unregistered(datum/source, obj/item/circuit_component/equipment_action/action_comp)
SIGNAL_HANDLER
- action_comps -= action_comp
- for(var/ref in action_comp.granted_to)
- unpin_action(action_comp, locateUID(ref))
+ LAZYREMOVE(action_comps, action_comp)
+ for(var/uid in action_comp.granted_to)
+ unpin_action(action_comp, locateUID(uid))
+
QDEL_LIST_ASSOC_VAL(action_comp.granted_to)
/obj/item/mod/module/circuit/on_install()
. = ..()
if(!shell?.attached_circuit)
return
+
RegisterSignal(shell?.attached_circuit, COMSIG_CIRCUIT_PRE_POWER_USAGE, PROC_REF(override_power_usage))
/obj/item/mod/module/circuit/on_uninstall(deleting = FALSE)
. = ..()
if(!shell?.attached_circuit)
return
+
for(var/obj/item/circuit_component/equipment_action/action_comp in action_comps)
- for(var/ref in action_comp.granted_to)
- unpin_action(action_comp, locateUID(ref))
+ for(var/uid in action_comp.granted_to)
+ unpin_action(action_comp, locateUID(uid))
+
UnregisterSignal(shell?.attached_circuit, COMSIG_CIRCUIT_PRE_POWER_USAGE)
/obj/item/mod/module/circuit/on_use()
. = ..()
- if(!.)
- return
if(!shell.attached_circuit)
return
- shell.attached_circuit?.interact(mod.wearer)
+
+ shell.attached_circuit?.ui_interact(mod.wearer)
/obj/item/mod/module/circuit/get_configuration(mob/user)
. = ..()
var/unnamed_action_index = 1
for(var/obj/item/circuit_component/equipment_action/action_comp in action_comps)
- .[action_comp.UID()] = add_ui_configuration(action_comp.button_name.value || "Unnamed Action [unnamed_action_index++]", "pin", !!action_comp.granted_to[user.UID()])
+ .[action_comp.UID()] = add_ui_configuration(action_comp.button_name.value || "Безымянное действие [unnamed_action_index++]", "pin", LAZYFIND(action_comp.granted_to, user.UID()))
/obj/item/mod/module/circuit/configure_edit(key, value)
. = ..()
var/obj/item/circuit_component/equipment_action/action_comp = locateUID(key)
if(!istype(action_comp))
return
+
if(text2num(value))
pin_action(action_comp, usr)
else
@@ -93,14 +96,17 @@
/obj/item/mod/module/circuit/proc/pin_action(obj/item/circuit_component/equipment_action/action_comp, mob/user)
if(!istype(user))
return
- if(action_comp.granted_to[user.UID()]) // Sanity check - don't pin an action for a mob that has already pinned it
+
+ if(LAZYFIND(action_comp.granted_to, user.UID()))
return
+
mod.add_item_action(new/datum/action/item_action/mod/pinnable/circuit(mod, user, src, action_comp))
/obj/item/mod/module/circuit/proc/unpin_action(obj/item/circuit_component/equipment_action/action_comp, mob/user)
- var/datum/action/item_action/mod/pinnable/circuit/action = action_comp.granted_to[user.UID()]
+ var/datum/action/item_action/mod/pinnable/circuit/action = LAZYACCESS(action_comp.granted_to, user.UID())
if(!istype(action))
return
+
qdel(action)
/datum/action/item_action/mod/pinnable/circuit
@@ -114,40 +120,45 @@
var/obj/item/circuit_component/equipment_action/circuit_component
/datum/action/item_action/mod/pinnable/circuit/New(Target, mob/user, obj/item/mod/module/circuit/linked_module, obj/item/circuit_component/equipment_action/action_comp)
- . = ..()
- module = linked_module
- action_comp.granted_to[user.UID()] = src
+ name = action_comp.button_name.value || "Действие"
+ button_icon_state = LAZYACCESS(action_comp.options_map, action_comp.icon_options.value) || button_icon_state
+
+ LAZYSET(action_comp.granted_to, user.UID(), src)
circuit_component = action_comp
- name = action_comp.button_name.value
- button_icon_state = "bci_[replacetextEx(LOWER_TEXT(action_comp.icon_options.value), " ", "_")]"
+ module = linked_module
+
+ . = ..()
/datum/action/item_action/mod/pinnable/circuit/Destroy()
- circuit_component.granted_to -= pinner.UID()
+ LAZYREMOVE(circuit_component.granted_to, pinner.UID())
circuit_component = null
return ..()
-/datum/action/item_action/mod/pinnable/circuit/do_effect(trigger_flags)
+/datum/action/item_action/mod/pinnable/circuit/Trigger(mob/clicker, trigger_flags)
. = ..()
if(!.)
return
+
var/obj/item/mod/control/mod = module.mod
if(!istype(mod))
return FALSE
+
if(!mod.active || mod.activating)
if(mod.wearer)
- module.balloon_alert(mod.wearer, "not active!")
+ module.balloon_alert(mod.wearer, "модуль неактивен!")
return FALSE
+
circuit_component.user.set_output(owner)
circuit_component.signal.set_output(COMPONENT_SIGNAL)
/// If the guy whose UI we are pinned to got deleted
/datum/action/item_action/mod/pinnable/circuit/pinner_deleted()
- module?.action_comps[circuit_component] -= pinner.UID()
+ LAZYREMOVEASSOC(module?.action_comps, circuit_component, pinner.UID())
. = ..()
/obj/item/circuit_component/mod_adapter_core
- display_name = "ядро адаптера схем для МЭК"
+ display_name = "Ядро адаптера схем для МЭК"
desc = "Позволяет считывать информацию о пользователе МЭКа и позволяет удаленно запускать и отключать МЭК."
/// The MODsuit module this circuit is associated with
@@ -227,10 +238,13 @@
for(var/obj/item/mod/module/potential_module as anything in attached_module.mod.modules)
if(potential_module.name == module_to_select.value)
module = potential_module
+
if(COMPONENT_TRIGGERED_BY(toggle_suit, port))
INVOKE_ASYNC(attached_module.mod, TYPE_PROC_REF(/obj/item/mod/control, toggle_activate), attached_module.mod.wearer)
+
if(COMPONENT_TRIGGERED_BY(toggle_deploy, port))
INVOKE_ASYNC(attached_module.mod, TYPE_PROC_REF(/obj/item/mod/control, quick_deploy), attached_module.mod.wearer)
+
if(attached_module.mod.active && module && COMPONENT_TRIGGERED_BY(select_module, port))
INVOKE_ASYNC(module, TYPE_PROC_REF(/obj/item/mod/module, on_select))
@@ -279,6 +293,7 @@
for(var/obj/item/mod/module/module in attached_module.mod.modules)
if(module.module_type != MODULE_PASSIVE)
modules_list += module.name
+
module_to_select.possible_options = modules_list
if(length(module_to_select.possible_options))
module_to_select.set_value(module_to_select.possible_options[1])
@@ -294,13 +309,18 @@
var/part_name = "Неизвестно"
if(ismodhelmet(part))
part_name = "Шлем"
+
if(ismodchestplate(part))
part_name = "Нагрудник"
+
if(ismodgloves(part))
part_name = "Перчатки"
+
if(ismodshoes(part))
part_name = "Ботинки"
+
string_list += part_name
+
deployed_parts.set_output(string_list)
deployed.set_output(is_deployed)
on_deploy.set_output(COMPONENT_SIGNAL)
@@ -314,4 +334,5 @@
SIGNAL_HANDLER
if(!attached_module.mod?.wearer)
return
+
wearer.set_output(attached_module.mod.wearer)
From 1d1c5d9efd276903b12352438328703f822d0927 Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Mon, 23 Feb 2026 00:16:59 +0800
Subject: [PATCH 2/9] =?UTF-8?q?=D0=91=D0=A1=20=D0=A1=D0=B5=D1=82=D1=87?=
=?UTF-8?q?=D0=B5=D0=BB=20=D0=9A=D0=9E=D1=80=D0=BE=D1=87=D0=B5=20=D1=85?=
=?UTF-8?q?=D0=B7=D1=83=D0=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
code/game/objects/items/weapons/storage/backpack.dm | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index 851307630662..cdb1e2348f55 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -64,6 +64,16 @@
cant_hold = list(/obj/item/storage/backpack/holding)
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 60, ACID = 50)
+ /obj/item/storage/backpack/holding/get_ru_names()
+ return list(
+ NOMINATIVE = "бс рюкзак",
+ GENITIVE = "бс рюкзака",
+ DATIVE = "бс рюкзаку",
+ ACCUSATIVE = "бс рюкзак",
+ INSTRUMENTAL = "бс рюкзаком",
+ PREPOSITIONAL = "бс рюкзаке",
+ )
+
/obj/item/storage/backpack/holding/attackby(obj/item/I, mob/user, params)
if(!istype(I, /obj/item/storage/backpack/holding))
return ..()
From cbf35b84b7e003f873fdada66a50995ecb99e3c6 Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Mon, 23 Feb 2026 02:01:07 +0800
Subject: [PATCH 3/9] =?UTF-8?q?90=D1=88=D1=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../objects/items/weapons/storage/backpack.dm | 40 ++++++++++++-------
1 file changed, 25 insertions(+), 15 deletions(-)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index cdb1e2348f55..cec1ad803095 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -64,15 +64,15 @@
cant_hold = list(/obj/item/storage/backpack/holding)
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 60, ACID = 50)
- /obj/item/storage/backpack/holding/get_ru_names()
+/obj/item/storage/backpack/holding/get_ru_names()
return list(
- NOMINATIVE = "бс рюкзак",
- GENITIVE = "бс рюкзака",
- DATIVE = "бс рюкзаку",
- ACCUSATIVE = "бс рюкзак",
- INSTRUMENTAL = "бс рюкзаком",
- PREPOSITIONAL = "бс рюкзаке",
- )
+ NOMINATIVE = "блюспейс рюкзак",
+ GENITIVE = "блюспейс рюкзака",
+ DATIVE = "блюспейс рюкзаку",
+ ACCUSATIVE = "блюспейс рюкзак",
+ INSTRUMENTAL = "блюспейс рюкзаком",
+ PREPOSITIONAL = "блюспейс рюкзаке",
+ )
/obj/item/storage/backpack/holding/attackby(obj/item/I, mob/user, params)
if(!istype(I, /obj/item/storage/backpack/holding))
@@ -125,6 +125,16 @@
icon_state = "holdingsat"
item_state = "holdingsat"
+/obj/item/storage/backpack/holding/satchel/get_ru_names()
+ return list(
+ NOMINATIVE = "блюспейс сумка",
+ GENITIVE = "блюспейс сумки",
+ DATIVE = "блюспейс сумке",
+ ACCUSATIVE = "блюспейс сумку",
+ INSTRUMENTAL = "блюспейс сумкой",
+ PREPOSITIONAL = "блюспейс сумке",
+ )
+
/obj/item/storage/backpack/holding/singularity_act(current_size)
var/dist = max((current_size - 2), 1)
explosion(loc, devastation_range = (dist), heavy_impact_range = (dist*2), light_impact_range = (dist*4), cause = "into singularity")
@@ -136,14 +146,14 @@
item_state = "holdingduffelba"
max_combined_w_class = 40
-/obj/item/storage/backpack/duffelbag/get_ru_names()
+/obj/item/storage/backpack/holding/satchel/duffelbag/get_ru_names()
return list(
- NOMINATIVE = "блюспейс сумка хранения",
- GENITIVE = "блюспейс сумки храненияя",
- DATIVE = "блюспейс сумке хранения",
- ACCUSATIVE = "блюспейс сумку хранения",
- INSTRUMENTAL = "блюспейс сумкой хранения",
- PREPOSITIONAL = "блюспейс сумке хранения"
+ NOMINATIVE = "блюспейс спорт-сумка ",
+ GENITIVE = "блюспейс спорт-сумки ",
+ DATIVE = "блюспейс спорт-сумке ",
+ ACCUSATIVE = "блюспейс спорт-сумку ",
+ INSTRUMENTAL = "блюспейс спорт-сумкой ",
+ PREPOSITIONAL = "блюспейс спорт-сумке "
)
/obj/item/storage/backpack/santabag
From fd7750b684d2b93d4c2dc758cf959dcd00313ff2 Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Mon, 23 Feb 2026 02:29:06 +0800
Subject: [PATCH 4/9] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?=
=?UTF-8?q?=D1=8F=20=D0=B8=20=D0=A2=D0=93=D0=A3=D0=98=20=D0=B0=D0=BB=D0=B5?=
=?UTF-8?q?=D1=80=D1=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
code/game/objects/items/weapons/storage/backpack.dm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index cec1ad803095..940c3f732727 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -53,7 +53,7 @@
/obj/item/storage/backpack/holding
name = "Bag of Holding"
- desc = "A backpack that opens into a localized pocket of Blue Space."
+ desc = "Очень большой и технологичный рюкзак, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Избегайте рекурсивного хранения\"."
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
icon_state = "holdingpack"
item_state = "holdingpack"
@@ -80,7 +80,7 @@
. = ATTACK_CHAIN_BLOCKED_ALL
add_fingerprint(user)
- var/response = tgui_alert(user, "This creates a singularity, destroying you and much of the station. Are you SURE?", "IMMINENT DEATH!", list("No", "Yes"))
+ var/response = tgui_alert(user, "Это создаст сингулярность, которая уничтожит вас и большую часть станции. Вы уверены?", "НЕИЗБЕЖНАЯ СМЕРТЬ!", list("Нет", "Да"))
if(response != "Yes")
return .
@@ -121,7 +121,7 @@
/obj/item/storage/backpack/holding/satchel
name = "Satchel of holding"
- desc = "A satchel that opens into a localized pocket of Blue Space."
+ desc = "Очень большая и технологичная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Избегайте рекурсивного хранения\"."
icon_state = "holdingsat"
item_state = "holdingsat"
From 3535ff9c9ed0af405dcdc4f8f7215a8324977656 Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Mon, 23 Feb 2026 02:31:00 +0800
Subject: [PATCH 5/9] =?UTF-8?q?if=20response=20!=3D=20=D0=94=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
code/game/objects/items/weapons/storage/backpack.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index 940c3f732727..b58376d1c1b7 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -81,7 +81,7 @@
. = ATTACK_CHAIN_BLOCKED_ALL
add_fingerprint(user)
var/response = tgui_alert(user, "Это создаст сингулярность, которая уничтожит вас и большую часть станции. Вы уверены?", "НЕИЗБЕЖНАЯ СМЕРТЬ!", list("Нет", "Да"))
- if(response != "Yes")
+ if(response != "Да")
return .
user.visible_message(
From 0b397aa0bbe98b9ac203a77fbe3c86ec275e0411 Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Mon, 23 Feb 2026 02:33:20 +0800
Subject: [PATCH 6/9] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D1=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
code/game/objects/items/weapons/storage/backpack.dm | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index b58376d1c1b7..f7db08d2dc37 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -148,12 +148,12 @@
/obj/item/storage/backpack/holding/satchel/duffelbag/get_ru_names()
return list(
- NOMINATIVE = "блюспейс спорт-сумка ",
- GENITIVE = "блюспейс спорт-сумки ",
- DATIVE = "блюспейс спорт-сумке ",
- ACCUSATIVE = "блюспейс спорт-сумку ",
- INSTRUMENTAL = "блюспейс спорт-сумкой ",
- PREPOSITIONAL = "блюспейс спорт-сумке "
+ NOMINATIVE = "блюспейс спорт-сумка",
+ GENITIVE = "блюспейс спорт-сумки",
+ DATIVE = "блюспейс спорт-сумке",
+ ACCUSATIVE = "блюспейс спорт-сумку",
+ INSTRUMENTAL = "блюспейс спорт-сумкой",
+ PREPOSITIONAL = "блюспейс спорт-сумке"
)
/obj/item/storage/backpack/santabag
From e862be8fcd7fa07d24838633022c1197851d956f Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Mon, 23 Feb 2026 14:56:09 +0800
Subject: [PATCH 7/9] =?UTF-8?q?=D0=BF=D0=BE=D0=BC=D0=B5=D0=BD=D1=8F=D0=BB?=
=?UTF-8?q?=20desc?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
code/game/objects/items/weapons/storage/backpack.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index f7db08d2dc37..ff6c11cfcdee 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -141,7 +141,7 @@
/obj/item/storage/backpack/holding/satchel/duffelbag
name = "Duffelbag of holding"
- desc = "Очень большая и технологичная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Избегайте рекурсивного хранения\"."
+ desc = "Очень большая и технологичная спортивная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Избегайте рекурсивного хранения\"."
icon_state = "holdingduffelba"
item_state = "holdingduffelba"
max_combined_w_class = 40
From effa19db946e66e0a7f10d7bdc3e852c6d5140bc Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Mon, 23 Feb 2026 20:34:09 +0800
Subject: [PATCH 8/9] =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?=
=?UTF-8?q?=D1=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
code/game/objects/items/weapons/storage/backpack.dm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index ff6c11cfcdee..9d8fbb4448ef 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -53,7 +53,7 @@
/obj/item/storage/backpack/holding
name = "Bag of Holding"
- desc = "Очень большой и технологичный рюкзак, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Избегайте рекурсивного хранения\"."
+ desc = "Технологичный рюкзак, в сравнении с обычными, вмещает чрезмерное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с другими блюспейс технологиями\"."
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
icon_state = "holdingpack"
item_state = "holdingpack"
@@ -121,7 +121,7 @@
/obj/item/storage/backpack/holding/satchel
name = "Satchel of holding"
- desc = "Очень большая и технологичная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Избегайте рекурсивного хранения\"."
+ desc = "Технологичная сумка, в сравнении с обычными, вмещает чрезмерное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с другими блюспейс технологиями\"."
icon_state = "holdingsat"
item_state = "holdingsat"
@@ -141,7 +141,7 @@
/obj/item/storage/backpack/holding/satchel/duffelbag
name = "Duffelbag of holding"
- desc = "Очень большая и технологичная спортивная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Избегайте рекурсивного хранения\"."
+ desc = "Очень большая и технологичная спортивная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с другими блюспейс технологиями\"."
icon_state = "holdingduffelba"
item_state = "holdingduffelba"
max_combined_w_class = 40
From a9be4be31ae99e2433ff23aeaea522096372fe27 Mon Sep 17 00:00:00 2001
From: Shark Github
Date: Tue, 24 Feb 2026 17:37:36 +0800
Subject: [PATCH 9/9] =?UTF-8?q?=D1=82=D1=8F=D0=B0=D0=BF=20=D0=BF=D1=8F?=
=?UTF-8?q?=D0=B0=D0=BB=D0=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../objects/items/weapons/storage/backpack.dm | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
index 9d8fbb4448ef..26c6f4758eae 100644
--- a/code/game/objects/items/weapons/storage/backpack.dm
+++ b/code/game/objects/items/weapons/storage/backpack.dm
@@ -53,7 +53,7 @@
/obj/item/storage/backpack/holding
name = "Bag of Holding"
- desc = "Технологичный рюкзак, в сравнении с обычными, вмещает чрезмерное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с другими блюспейс технологиями\"."
+ desc = "Технологичный рюкзак, в сравнении с обычными, вмещает чрезмерно большое количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с технологиями телепортации\"."
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
icon_state = "holdingpack"
item_state = "holdingpack"
@@ -121,7 +121,7 @@
/obj/item/storage/backpack/holding/satchel
name = "Satchel of holding"
- desc = "Технологичная сумка, в сравнении с обычными, вмещает чрезмерное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с другими блюспейс технологиями\"."
+ desc = "Технологичная сумка, в сравнении с обычными, вмещает чрезмерно большое количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с технологиями телепортации\"."
icon_state = "holdingsat"
item_state = "holdingsat"
@@ -141,19 +141,19 @@
/obj/item/storage/backpack/holding/satchel/duffelbag
name = "Duffelbag of holding"
- desc = "Очень большая и технологичная спортивная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с другими блюспейс технологиями\"."
+ desc = "Очень большая и технологичная спортивная сумка, вмещает невероятное количество предметов благодаря подпространственной компрессии. Этикетка предупреждает \"Не совмещать с технологиями телепортации\"."
icon_state = "holdingduffelba"
item_state = "holdingduffelba"
max_combined_w_class = 40
/obj/item/storage/backpack/holding/satchel/duffelbag/get_ru_names()
return list(
- NOMINATIVE = "блюспейс спорт-сумка",
- GENITIVE = "блюспейс спорт-сумки",
- DATIVE = "блюспейс спорт-сумке",
- ACCUSATIVE = "блюспейс спорт-сумку",
- INSTRUMENTAL = "блюспейс спорт-сумкой",
- PREPOSITIONAL = "блюспейс спорт-сумке"
+ NOMINATIVE = "блюспейс спортивная сумка",
+ GENITIVE = "блюспейс спортивная сумки",
+ DATIVE = "блюспейс спортивная сумке",
+ ACCUSATIVE = "блюспейс спортивная сумку",
+ INSTRUMENTAL = "блюспейс спортивная сумкой",
+ PREPOSITIONAL = "блюспейс спортивная сумке"
)
/obj/item/storage/backpack/santabag