diff --git a/modular_ss220/loadout/code/donor.dm b/modular_ss220/loadout/code/donor.dm
index 951fec14fa2c..3d9e83440a82 100644
--- a/modular_ss220/loadout/code/donor.dm
+++ b/modular_ss220/loadout/code/donor.dm
@@ -111,7 +111,7 @@
/datum/gear/donor/id_decal_silver_colored
display_name = "Серебрянная наклейка на карту (Голографическая)"
- path = /obj/item/id_skin/silver/colored
+ path = /obj/item/id_skin/colored/silver
donator_tier = 3
cost = 2
@@ -159,7 +159,7 @@
/datum/gear/donor/id_decal_neon_colored
display_name = "Неоновая наклейка на карту (Голографическая)"
- path = /obj/item/id_skin/neon/colored
+ path = /obj/item/id_skin/colored/neon
donator_tier = 3
cost = 2
@@ -183,12 +183,12 @@
/datum/gear/donor/id_decal_kitty_colored
display_name = "Кото-клейка на карту (Голографическая)"
- path = /obj/item/id_skin/kitty/colored
+ path = /obj/item/id_skin/colored/kitty
donator_tier = 4
cost = 3
/datum/gear/donor/id_decal_snake
display_name = "Бегущая наклейка на карту"
- path = /obj/item/id_skin/snake
+ path = /obj/item/id_skin/colored/snake
donator_tier = 4
cost = 3
diff --git a/modular_ss220/objects/code/card_skins.dm b/modular_ss220/objects/code/card_skins.dm
index df4bcde9aec9..ca527103c6bb 100644
--- a/modular_ss220/objects/code/card_skins.dm
+++ b/modular_ss220/objects/code/card_skins.dm
@@ -16,59 +16,68 @@
/obj/item/card/id/attackby(obj/item/item, mob/user, params)
. = ..()
- if(istype(item, /obj/item/id_skin))
- if(skin_applied)
- to_chat(usr, span_warning("На карте уже есть наклейка, сначала соскребите её!"))
- return FALSE
-
- if(!skinable)
- to_chat(usr, span_warning("Наклейка не подходит для [src]!"))
- return FALSE
-
- to_chat(user, span_notice("Вы начинаете наносить наклейку на карту."))
- if(!do_after(usr, 2 SECONDS, target = src, progress = TRUE, allow_moving = TRUE))
- return FALSE
-
- var/obj/item/id_skin/skin = item
- var/mutable_appearance/card_skin = mutable_appearance(skin.icon, skin.icon_state)
- card_skin.color = skin.color
- to_chat(user, span_notice("Вы наклеили [skin.pronoun_name] на [src]."))
- desc += "
[skin.info]"
- skin_applied = item
- user.drop_item()
- item.forceMove(src)
- skin_applied = item
- add_overlay(card_skin)
- return TRUE
+ if(!istype(item, /obj/item/id_skin))
+ return .
+
+ if(skin_applied)
+ to_chat(usr, span_warning("На карте уже есть наклейка, сначала соскребите её!"))
+ return FALSE
+
+ if(!skinable)
+ to_chat(usr, span_warning("Наклейка не подходит для [src]!"))
+ return FALSE
+
+ to_chat(user, span_notice("Вы начинаете наносить наклейку на карту."))
+ if(!do_after(usr, 2 SECONDS, target = src, progress = TRUE, allow_moving = TRUE))
+ return FALSE
+
+ var/obj/item/id_skin/skin = item
+ var/mutable_appearance/card_skin = mutable_appearance(skin.icon, skin.icon_state)
+ card_skin.color = skin.color
+ to_chat(user, span_notice("Вы наклеили [skin.pronoun_name] на [src]."))
+ desc += "
[skin.info]"
+ user.drop_item()
+ item.forceMove(src)
+ skin_applied = item
+ add_overlay(card_skin)
+ return TRUE
+
+/obj/item/card/id/examine(mob/user)
+ . = ..()
+ if(skin_applied)
+ . += "Нажмите Alt-Click на карту, чтобы снять наклейку."
/obj/item/card/id/AltClick(mob/user)
if(user.stat || user.restrained())
to_chat(user, span_warning("У вас нет возможности снять наклейку!"))
return
- if(skin_applied != null)
- if(user.a_intent == INTENT_HARM)
- to_chat(user, span_warning("Вы срываете наклейку с карты!"))
- playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
- remove_skin()
- else
- to_chat(user, span_notice("Вы начинаете аккуратно снимать наклейку с карты."))
- if(!do_after(user, 5 SECONDS, target = src, progress = TRUE))
- return FALSE
-
- to_chat(user, span_notice("Вы сняли наклейку с карты."))
- if(!user.get_active_hand() && Adjacent(user))
- user.put_in_hands(skin_applied)
- else
- skin_applied.forceMove(get_turf(user))
- remove_skin()
- else
+ if(!skin_applied)
to_chat(user, span_warning("На карте нет наклейки!"))
+ return
+
+ if(user.a_intent == INTENT_HARM)
+ to_chat(user, span_warning("Вы срываете наклейку с карты!"))
+ playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
+ remove_skin()
+ else
+ to_chat(user, span_notice("Вы начинаете аккуратно снимать наклейку с карты."))
+ if(!do_after(user, 5 SECONDS, target = src, progress = TRUE))
+ return FALSE
+
+ to_chat(user, span_notice("Вы сняли наклейку с карты."))
+
+ if(!user.get_active_hand() && Adjacent(user))
+ user.put_in_hands(skin_applied)
+ else
+ skin_applied.forceMove(get_turf(user))
+ remove_skin()
/obj/item/card/id/proc/remove_skin()
skin_applied = null
desc = initial(desc)
- src.overlays.Cut()
+ overlays.Cut()
+ qdel(skin_applied)
/obj/item/id_skin
name = "\improper наклейка на карту"
@@ -77,60 +86,23 @@
icon_state = ""
var/pronoun_name = "наклейку"
var/info = "На ней наклейка."
- var/list/color_list = list("Красный", "Зелёный", "Синий", "Жёлтый", "Оранжевый", "Фиолетовый", "Голубой", "Циановый", "Аквамариновый", "Розовый")
+ var/static/list/color_list = list(
+ "Красный" = LIGHT_COLOR_RED,
+ "Зелёный" = LIGHT_COLOR_GREEN,
+ "Синий" = LIGHT_COLOR_LIGHTBLUE,
+ "Жёлтый" = LIGHT_COLOR_HOLY_MAGIC,
+ "Оранжевый" = LIGHT_COLOR_ORANGE,
+ "Фиолетовый" = LIGHT_COLOR_LAVENDER,
+ "Голубой" = LIGHT_COLOR_LIGHT_CYAN,
+ "Циановый" = LIGHT_COLOR_CYAN,
+ "Аквамариновый" = LIGHT_COLOR_BLUEGREEN,
+ "Розовый" = LIGHT_COLOR_PINK)
/obj/item/id_skin/Initialize(mapload)
. = ..()
pixel_y = rand(-5, 5)
pixel_x = rand(-5, 5)
-/obj/item/id_skin/update_icon_state()
- if(!color)
- color = pick(
- LIGHT_COLOR_RED,
- LIGHT_COLOR_GREEN,
- LIGHT_COLOR_LIGHTBLUE,
- LIGHT_COLOR_HOLY_MAGIC,
- LIGHT_COLOR_ORANGE,
- LIGHT_COLOR_LAVENDER,
- LIGHT_COLOR_LIGHT_CYAN,
- LIGHT_COLOR_CYAN,
- LIGHT_COLOR_BLUEGREEN,
- LIGHT_COLOR_PINK)
-
-/obj/item/id_skin/proc/change_color()
- var/choice = input(usr, "Какой цвет предпочитаете?", "Выбор цвета") as null|anything in list("Выбрать предустановленный", "Выбрать вручную")
- if(!choice)
- return
- switch(choice)
- if("Выбрать предустановленный")
- choice = input(usr, "Выберите цвет", "Выбор цвета") as null|anything in color_list
- if(!choice)
- return
- switch(choice)
- if("Красный")
- color = LIGHT_COLOR_RED
- if("Зелёный")
- color = LIGHT_COLOR_GREEN
- if("Синий")
- color = LIGHT_COLOR_LIGHTBLUE
- if("Жёлтый")
- color = LIGHT_COLOR_HOLY_MAGIC
- if("Оранжевый")
- color = LIGHT_COLOR_ORANGE
- if("Фиолетовый")
- color = LIGHT_COLOR_LAVENDER
- if("Голубой")
- color = LIGHT_COLOR_LIGHT_CYAN
- if("Циановый")
- color = LIGHT_COLOR_CYAN
- if("Аквамариновый")
- color = LIGHT_COLOR_BLUEGREEN
- if("Розовый")
- color = LIGHT_COLOR_PINK
- if("Выбрать вручную")
- color = input(usr,"Выберите цвет") as color
-
/obj/item/id_skin/colored
name = "\improper голо-наклейка на карту"
desc = "Голографическая наклейка на карту. Вы можете выбрать цвет который она примет."
@@ -140,10 +112,24 @@
/obj/item/id_skin/colored/Initialize(mapload)
. = ..()
- update_icon_state()
+ if(color)
+ return .
+
+ color = color_list[pick(color_list)]
+
+/obj/item/id_skin/colored/attack_self(mob/living)
+ var/choice = input(usr, "Какой цвет предпочитаете?", "Выбор цвета") as null|anything in list("Выбрать предустановленный", "Выбрать вручную")
+ if(!choice)
+ return
+ switch(choice)
+ if("Выбрать предустановленный")
+ choice = input(usr, "Выберите цвет", "Выбор цвета") as null|anything in color_list
+ if(!color_list[choice])
+ return
+ color = color_list[choice]
-/obj/item/id_skin/colored/attack_self(mob/living as mob)
- change_color()
+ if("Выбрать вручную")
+ color = input(usr,"Выберите цвет") as color
/obj/item/id_skin/silver
name = "\improper серебрянная наклейка на карту"
@@ -151,20 +137,13 @@
pronoun_name = "серебрянную наклейку"
info = "На ней серебрянная наклейка."
-/obj/item/id_skin/silver/colored
+/obj/item/id_skin/colored/silver
name = "\improper серебрянная голо-наклейка"
desc = "Голографическая наклейка на карту, изготовленная из специального материала, похожего на серебро. Вы можете выбрать цвет который она примет."
pronoun_name = "серебрянную голо-наклейку"
icon_state = "colored_shiny"
info = "На ней металлическая голо-наклейка."
-/obj/item/id_skin/silver/colored/Initialize(mapload)
- . = ..()
- update_icon_state()
-
-/obj/item/id_skin/silver/colored/attack_self(mob/living as mob)
- change_color()
-
/obj/item/id_skin/gold
name = "\improper золотая наклейка на карту"
desc = "Можно продать какому-то дураку за баснословные деньги. Ой..."
@@ -207,20 +186,13 @@
pronoun_name = "неоновую наклейку"
info = "Кажется будто она светится."
-/obj/item/id_skin/neon/colored
+/obj/item/id_skin/colored/neon
name = "\improper неоновая голо-наклейка на карту"
desc = "Какая же она яркая... Ещё и цвета меняет!"
icon_state = "colored_neon"
pronoun_name = "неоновую наклейку"
info = "Кажется будто она светится."
-/obj/item/id_skin/neon/colored/Initialize(mapload)
- . = ..()
- update_icon_state()
-
-/obj/item/id_skin/neon/colored/attack_self(mob/living as mob)
- change_color()
-
/obj/item/id_skin/rainbow
name = "\improper радужная наклейка на карту"
desc = "Переливается всеми цветами радуги!"
@@ -242,32 +214,18 @@
pronoun_name = "кото-клейку"
info = "Так и хочется погладить, жаль это всего-лишь наклейка..."
-/obj/item/id_skin/kitty/colored
+/obj/item/id_skin/colored/kitty
name = "\improper голо-кото-клейка на карту"
desc = "Прекрасная наклейка, которая делает вашу карту похожей на котика. Эта может менять цвет."
icon_state = "colored_kitty"
-/obj/item/id_skin/kitty/colored/Initialize(mapload)
- . = ..()
- update_icon_state()
-
-/obj/item/id_skin/kitty/colored/attack_self(mob/living as mob)
- change_color()
-
-/obj/item/id_skin/snake
+/obj/item/id_skin/colored/snake
name = "\improper бегущая наклейка на карту"
desc = "Она что-то загружает?"
icon_state = "snake"
pronoun_name = "бегущую наклейку"
info = "Бегает и бегает..."
-/obj/item/id_skin/snake/Initialize(mapload)
- . = ..()
- update_icon_state()
-
-/obj/item/id_skin/snake/attack_self(mob/living as mob)
- change_color()
-
// Supply Crate
/datum/supply_packs/misc/randomised/id_skins
name = "Наклейки на карточку"
@@ -279,9 +237,9 @@
/obj/item/id_skin/colored,
/obj/item/id_skin/colored,
/obj/item/id_skin/colored,
- /obj/item/id_skin/silver/colored,
- /obj/item/id_skin/silver/colored,
- /obj/item/id_skin/silver/colored,
+ /obj/item/id_skin/colored/silver,
+ /obj/item/id_skin/colored/silver,
+ /obj/item/id_skin/colored/silver,
/obj/item/id_skin/silver,
/obj/item/id_skin/gold,
/obj/item/id_skin/business,
@@ -289,12 +247,12 @@
/obj/item/id_skin/ussp,
/obj/item/id_skin/clown,
/obj/item/id_skin/neon,
- /obj/item/id_skin/neon/colored,
+ /obj/item/id_skin/colored/neon,
/obj/item/id_skin/rainbow,
/obj/item/id_skin/space,
/obj/item/id_skin/kitty,
- /obj/item/id_skin/kitty/colored,
- /obj/item/id_skin/snake)
+ /obj/item/id_skin/colored/kitty,
+ /obj/item/id_skin/colored/snake)
cost = 2000
containername = "ящик с наклейками"
@@ -305,7 +263,7 @@
icon_state = "ID_Random"
result = list(
/obj/item/id_skin/colored = 10,
- /obj/item/id_skin/silver/colored = 1,
+ /obj/item/id_skin/colored/silver = 1,
/obj/item/id_skin/silver = 1,
/obj/item/id_skin/gold = 1,
/obj/item/id_skin/business = 1,
@@ -313,18 +271,18 @@
/obj/item/id_skin/ussp = 1,
/obj/item/id_skin/clown = 1,
/obj/item/id_skin/neon = 1,
- /obj/item/id_skin/neon/colored = 1,
+ /obj/item/id_skin/colored/neon = 1,
/obj/item/id_skin/rainbow = 1,
/obj/item/id_skin/space = 1,
/obj/item/id_skin/kitty = 1,
- /obj/item/id_skin/kitty/colored = 1,
- /obj/item/id_skin/snake = 1)
+ /obj/item/id_skin/colored/kitty = 1,
+ /obj/item/id_skin/colored/snake = 1)
/obj/effect/spawner/random_spawners/id_skins/no_chance
result = list(
/datum/nothing = 80,
/obj/item/id_skin/colored = 10,
- /obj/item/id_skin/silver/colored = 1,
+ /obj/item/id_skin/colored/silver = 1,
/obj/item/id_skin/silver = 1,
/obj/item/id_skin/gold = 1,
/obj/item/id_skin/business = 1,
@@ -332,9 +290,9 @@
/obj/item/id_skin/ussp = 1,
/obj/item/id_skin/clown = 1,
/obj/item/id_skin/neon = 1,
- /obj/item/id_skin/neon/colored = 1,
+ /obj/item/id_skin/colored/neon = 1,
/obj/item/id_skin/rainbow = 1,
/obj/item/id_skin/space = 1,
/obj/item/id_skin/kitty = 1,
- /obj/item/id_skin/kitty/colored = 1,
- /obj/item/id_skin/snake = 1)
+ /obj/item/id_skin/colored/kitty = 1,
+ /obj/item/id_skin/colored/snake = 1)