From e4006793151825c379cd87a672196cad88cab4c3 Mon Sep 17 00:00:00 2001 From: The-main-answer-42 Date: Sun, 28 Jan 2024 19:37:04 +0500 Subject: [PATCH 1/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=20=D1=81=D0=B0=D0=BA=D1=83=D1=80=D1=83,=20=D0=B4?= =?UTF-8?q?=D0=B5=D0=BA=D0=B0=D0=BB=D1=8C=20=D0=BB=D0=B8=D1=81=D1=82=D1=8B?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=B7=D0=B5=D0=BC=D0=BB=D0=B5,=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D1=8B=20=D1=82=D1=80=D0=B0=D0=B2=D1=8B=20?= =?UTF-8?q?=D1=81=20=D0=BB=D0=B8=D1=81=D1=82=D1=8C=D1=8F=D0=BC=D0=B8=20?= =?UTF-8?q?=D0=B8=20=D0=B0=D0=BD=D0=B8=D0=BC=D0=B0=D1=86=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=81=D1=82=D0=BE=D0=BF=D0=B0=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/flora/_flora.dm | 4 +++ modular_ss220/flora/_flora.dme | 8 +++++ modular_ss220/flora/code/effects/blossom.dm | 34 ++++++++++++++++++ .../flora/code/effects/sakura_leaves.dm | 27 ++++++++++++++ modular_ss220/flora/code/trees.dm | 20 +++++++++++ modular_ss220/flora/icons/sakura.dmi | Bin 0 -> 23148 bytes modular_ss220/maps220/code/floors.dm | 15 ++++++++ modular_ss220/maps220/icons/grass_sakura.dmi | Bin 0 -> 16695 bytes modular_ss220/modular_ss220.dme | 1 + 9 files changed, 109 insertions(+) create mode 100644 modular_ss220/flora/_flora.dm create mode 100644 modular_ss220/flora/_flora.dme create mode 100644 modular_ss220/flora/code/effects/blossom.dm create mode 100644 modular_ss220/flora/code/effects/sakura_leaves.dm create mode 100644 modular_ss220/flora/code/trees.dm create mode 100644 modular_ss220/flora/icons/sakura.dmi create mode 100644 modular_ss220/maps220/icons/grass_sakura.dmi diff --git a/modular_ss220/flora/_flora.dm b/modular_ss220/flora/_flora.dm new file mode 100644 index 000000000000..185c1ee09382 --- /dev/null +++ b/modular_ss220/flora/_flora.dm @@ -0,0 +1,4 @@ +/datum/modpack/flora + name = "Модуль под новые растения" + desc = "Содержит в себе класс растений и эффектов" + author = "The-main-answer-42" diff --git a/modular_ss220/flora/_flora.dme b/modular_ss220/flora/_flora.dme new file mode 100644 index 000000000000..56d6fefdc566 --- /dev/null +++ b/modular_ss220/flora/_flora.dme @@ -0,0 +1,8 @@ +#include "_flora.dm" + +// Tress +#include "code/trees.dm" + +// Effects +#include "code/effects/blossom.dm" +#include "code/effects/sakura_leaves.dm" diff --git a/modular_ss220/flora/code/effects/blossom.dm b/modular_ss220/flora/code/effects/blossom.dm new file mode 100644 index 000000000000..e9ed8e645988 --- /dev/null +++ b/modular_ss220/flora/code/effects/blossom.dm @@ -0,0 +1,34 @@ +/obj/effect/blossom + name = "Цветение сакуры" + desc = "Метель из лепестков сакуры" + icon = 'modular_ss220/flora/icons/sakura.dmi' + icon_state = "blossom_less" + pixel_y = 10 + layer = 9.1 + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/obj/structure/flora/tree/sakura/parent_tree + +// Я не понимаю логику методов New и Destroy, т.к. они опираются на какие-то стандартные +// методы и переменные START/STOP_PROCESSING(SSobj, src) +// просто скопировал и изменил их из класса snowcloud +/obj/effect/blossom/New(turf, obj/structure/flora/tree/sakura/Sakura) + ..() + START_PROCESSING(SSobj, src) + //if(Sakura && istype(Sakura)) + //parent_tree = Sakura + +/obj/effect/blossom/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +// нужен метод, который удаляет анимацию, если родительское дерево было уничтожено + +// нужен метод, который спавнит в тайле дерева /obj/effect/decal/sakura_leaves, +// если анимация цветения была активной хотя бы 5 минут +// + в тайле ещё нет декали sakura_leaves +// + тайл на является /turf/simulated/floor/grass/sakura + +// нужен метод, который превращает тайл под анимацией в /turf/simulated/floor/grass/sakura, +// если а) анимация работала 15 минут, б) тайл под анимацией - это grass или jungle grass +// также этот метод должен одновременно убирать декаль sakura_leaves, но +// возможно это поведение лучше унести в класс sakura_leaves.dm diff --git a/modular_ss220/flora/code/effects/sakura_leaves.dm b/modular_ss220/flora/code/effects/sakura_leaves.dm new file mode 100644 index 000000000000..03ad85fd4db5 --- /dev/null +++ b/modular_ss220/flora/code/effects/sakura_leaves.dm @@ -0,0 +1,27 @@ +/obj/effect/decal/sakura_leaves + name = "Кучка листьев сакуры" + desc = "Опавшие листья сакуры" + density = FALSE + layer = TURF_DECAL_LAYER + icon = 'modular_ss220/flora/icons/sakura.dmi' + icon_state = "leaves_on_ground" + +// нужен метод, который позволяет поджечь листвую => декаль должен исчезнуть. Это он? +/obj/effect/decal/sakura_leaves/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) + ..() + qdel(src) + +// нужен метод, который позволяет удалить декаль, используя /obj/item/cultivator, +// не уверен, что всё верно написал, метод нуждается в проверке +// + не нашёл звука шелеста листьев, подставил звук копания земли +/obj/effect/decal/sakura_leaves/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/cultivator)) + var/obj/item/cultivator/C = I + user.visible_message("[user] is clearing leaves from the ground [src]...", "You begin clearing leaves from the ground [src]...", "You hear a sound of leaves rustling.") + playsound(src, /obj/item/shovel.usesound, 50, 1) + if(!do_after(user, 50 * I.toolspeed, target = src)) + return + user.visible_message("[user] clears leaves from the ground [src]!", "You clear from the ground [src]!") + qdel(src) + else + return ..() diff --git a/modular_ss220/flora/code/trees.dm b/modular_ss220/flora/code/trees.dm new file mode 100644 index 000000000000..541c051c392d --- /dev/null +++ b/modular_ss220/flora/code/trees.dm @@ -0,0 +1,20 @@ +/obj/structure/flora/tree/sakura + name = "Сакура" + desc = "Зимняя вишня в цвету. Красота!" + icon = 'modular_ss220/flora/icons/sakura.dmi' + icon_state = "cherry_blossom_1" + pixel_y = 10 + +// тут нужен метод, который будет спавнить анимацию цветения на тайле с деревом. +// минимально: раз в 30 минут метод либо создаёт анимацию цветения в тайле дерева +// либо убирает её, если она была создана ранее +// максимально (неравные отрезки): через 30 минут после начала раунда спавнит анимацию +// через 15 минут от начала анимации убирает её и снова запускает таймер 30 минут +/*/obj/structure/flora/tree/sakura/proc/start_blossom(turf/T) + var/is_blossom_exist = FALSE + if(!is_blossom_exist) + new /obj/effect/blossom(T, src) + is_blossom_exist = TRUE + else */ + + diff --git a/modular_ss220/flora/icons/sakura.dmi b/modular_ss220/flora/icons/sakura.dmi new file mode 100644 index 0000000000000000000000000000000000000000..da446b25268bfe3d5462a60467d1c94a298c11f0 GIT binary patch literal 23148 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/maps220/code/floors.dm b/modular_ss220/maps220/code/floors.dm index fba36491d72c..3c0c404efec2 100644 --- a/modular_ss220/maps220/code/floors.dm +++ b/modular_ss220/maps220/code/floors.dm @@ -112,6 +112,21 @@ layer = GRASS_UNDER_LAYER transform = null +/turf/simulated/floor/grass/sakura + name = "sakura grass" + icon = 'modular_ss220/maps220/icons/grass_sakura.dmi' + icon_state = "grass" + base_icon_state = "grass" + baseturf = /turf/simulated/floor/indestructible/grass/sakura + smoothing_groups = list(SMOOTH_GROUP_TURF, SMOOTH_GROUP_GRASS, SMOOTH_GROUP_JUNGLE_GRASS) + +/turf/simulated/floor/grass/sakura/no_creep + smoothing_flags = null + smoothing_groups = null + canSmoothWith = null + layer = GRASS_UNDER_LAYER + transform = null + /turf/simulated/floor/indestructible/grass/remove_plating(mob/user) return diff --git a/modular_ss220/maps220/icons/grass_sakura.dmi b/modular_ss220/maps220/icons/grass_sakura.dmi new file mode 100644 index 0000000000000000000000000000000000000000..211845b02d2f4e1a7f11ae992e4857b0c0dc0b29 GIT binary patch literal 16695 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/modular_ss220.dme b/modular_ss220/modular_ss220.dme index 53a170e02283..ed6d14d70b84 100644 --- a/modular_ss220/modular_ss220.dme +++ b/modular_ss220/modular_ss220.dme @@ -35,6 +35,7 @@ #include "silicon_hats/_silicon_hats.dme" #include "windows_airbag/_windows_airbag.dme" #include "clumsy_table/_clumsy_table.dme" +#include "flora/_flora.dme" // --- MISC --- // #include "administration/_administration.dme" From b7d6f5fc56cda7c1dba553e6fa2deabfd2d3c484 Mon Sep 17 00:00:00 2001 From: The-main-answer-42 Date: Mon, 29 Jan 2024 10:50:47 +0500 Subject: [PATCH 2/4] =?UTF-8?q?=D0=A1=D0=BB=D1=83=D1=87=D0=B0=D0=B9=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20stash,=20=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B5=20stage=20=D0=B2=20=D0=BF=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=BB=D0=BE=D0=BC=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/objects/_objects.dm | 2 +- modular_ss220/objects/_objects.dme | 7 +++++++ .../{flora => objects}/code/effects/blossom.dm | 2 +- .../code/effects/sakura_leaves.dm | 2 +- modular_ss220/{flora => objects}/code/trees.dm | 2 +- modular_ss220/{flora => objects}/icons/sakura.dmi | Bin 6 files changed, 11 insertions(+), 4 deletions(-) rename modular_ss220/{flora => objects}/code/effects/blossom.dm (97%) rename modular_ss220/{flora => objects}/code/effects/sakura_leaves.dm (96%) rename modular_ss220/{flora => objects}/code/trees.dm (95%) rename modular_ss220/{flora => objects}/icons/sakura.dmi (100%) diff --git a/modular_ss220/objects/_objects.dm b/modular_ss220/objects/_objects.dm index 104c1c1b19bd..c9ccc7591cb4 100644 --- a/modular_ss220/objects/_objects.dm +++ b/modular_ss220/objects/_objects.dm @@ -1,7 +1,7 @@ /datum/modpack/objects name = "Объекты" desc = "В основном включает в себя портированные объекты и всякие мелочи, которым не нужен отдельный модпак." - author = "dj-34" + author = "dj-34, The-main-answer-42" // Maybe it would be better, if i didn't make it modular, because i can't change order in the recipe list :catDespair: /datum/modpack/objects/initialize() diff --git a/modular_ss220/objects/_objects.dme b/modular_ss220/objects/_objects.dme index 56083ab10a68..26de50639fbc 100644 --- a/modular_ss220/objects/_objects.dme +++ b/modular_ss220/objects/_objects.dme @@ -24,3 +24,10 @@ #include "code/musician.dm" #include "code/flag.dm" #include "code/wallets.dm" + +// Tress +#include "code/trees.dm" + +// Effects +#include "code/effects/blossom.dm" +#include "code/effects/sakura_leaves.dm" diff --git a/modular_ss220/flora/code/effects/blossom.dm b/modular_ss220/objects/code/effects/blossom.dm similarity index 97% rename from modular_ss220/flora/code/effects/blossom.dm rename to modular_ss220/objects/code/effects/blossom.dm index e9ed8e645988..7dc77e59f408 100644 --- a/modular_ss220/flora/code/effects/blossom.dm +++ b/modular_ss220/objects/code/effects/blossom.dm @@ -1,7 +1,7 @@ /obj/effect/blossom name = "Цветение сакуры" desc = "Метель из лепестков сакуры" - icon = 'modular_ss220/flora/icons/sakura.dmi' + icon = 'modular_ss220/objects/icons/sakura.dmi' icon_state = "blossom_less" pixel_y = 10 layer = 9.1 diff --git a/modular_ss220/flora/code/effects/sakura_leaves.dm b/modular_ss220/objects/code/effects/sakura_leaves.dm similarity index 96% rename from modular_ss220/flora/code/effects/sakura_leaves.dm rename to modular_ss220/objects/code/effects/sakura_leaves.dm index 03ad85fd4db5..87e60e7f4674 100644 --- a/modular_ss220/flora/code/effects/sakura_leaves.dm +++ b/modular_ss220/objects/code/effects/sakura_leaves.dm @@ -3,7 +3,7 @@ desc = "Опавшие листья сакуры" density = FALSE layer = TURF_DECAL_LAYER - icon = 'modular_ss220/flora/icons/sakura.dmi' + icon = 'modular_ss220/objects/icons/sakura.dmi' icon_state = "leaves_on_ground" // нужен метод, который позволяет поджечь листвую => декаль должен исчезнуть. Это он? diff --git a/modular_ss220/flora/code/trees.dm b/modular_ss220/objects/code/trees.dm similarity index 95% rename from modular_ss220/flora/code/trees.dm rename to modular_ss220/objects/code/trees.dm index 541c051c392d..82293ad4389c 100644 --- a/modular_ss220/flora/code/trees.dm +++ b/modular_ss220/objects/code/trees.dm @@ -1,7 +1,7 @@ /obj/structure/flora/tree/sakura name = "Сакура" desc = "Зимняя вишня в цвету. Красота!" - icon = 'modular_ss220/flora/icons/sakura.dmi' + icon = 'modular_ss220/objects/icons/sakura.dmi' icon_state = "cherry_blossom_1" pixel_y = 10 diff --git a/modular_ss220/flora/icons/sakura.dmi b/modular_ss220/objects/icons/sakura.dmi similarity index 100% rename from modular_ss220/flora/icons/sakura.dmi rename to modular_ss220/objects/icons/sakura.dmi From 0021350437982df8bc6bbf98f468ae86ddb8bc3a Mon Sep 17 00:00:00 2001 From: The-main-answer-42 Date: Mon, 29 Jan 2024 10:54:34 +0500 Subject: [PATCH 3/4] =?UTF-8?q?=D0=95=D1=81=D1=82=D0=B5=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=BE,=20=D0=B7=D0=B0=D0=B1=D1=8B=D0=BB=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D1=82=D1=8C=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=80=D1=83=D1=8E=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D1=8E,=20=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D1=8B=20=D0=B1=D1=8B=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=83?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8(?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/flora/_flora.dm | 4 ---- modular_ss220/flora/_flora.dme | 8 -------- 2 files changed, 12 deletions(-) delete mode 100644 modular_ss220/flora/_flora.dm delete mode 100644 modular_ss220/flora/_flora.dme diff --git a/modular_ss220/flora/_flora.dm b/modular_ss220/flora/_flora.dm deleted file mode 100644 index 185c1ee09382..000000000000 --- a/modular_ss220/flora/_flora.dm +++ /dev/null @@ -1,4 +0,0 @@ -/datum/modpack/flora - name = "Модуль под новые растения" - desc = "Содержит в себе класс растений и эффектов" - author = "The-main-answer-42" diff --git a/modular_ss220/flora/_flora.dme b/modular_ss220/flora/_flora.dme deleted file mode 100644 index 56d6fefdc566..000000000000 --- a/modular_ss220/flora/_flora.dme +++ /dev/null @@ -1,8 +0,0 @@ -#include "_flora.dm" - -// Tress -#include "code/trees.dm" - -// Effects -#include "code/effects/blossom.dm" -#include "code/effects/sakura_leaves.dm" From 177fb8edc686041dcc25a12a1b456dc5dbfea954 Mon Sep 17 00:00:00 2001 From: The-main-answer-42 Date: Wed, 31 Jan 2024 14:20:39 +0500 Subject: [PATCH 4/4] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=80=D1=83=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=20=D1=81=20?= =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=D0=BC=D0=B8,=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=BE=D0=B1=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=81?= =?UTF-8?q?=D0=B2=D0=BE=D0=B5=D0=B9=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=81=D0=BF=D0=B0=D0=B2=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=81=D1=82=D0=B2=D1=8B=20(=D0=BF=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D0=BC=D1=83-=D1=82=D0=BE=20=D0=BD=D0=B5=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/maps220/code/floors.dm | 1 - modular_ss220/modular_ss220.dme | 1 - modular_ss220/objects/code/effects/blossom.dm | 6 ++++++ modular_ss220/objects/code/effects/sakura_leaves.dm | 5 +++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/modular_ss220/maps220/code/floors.dm b/modular_ss220/maps220/code/floors.dm index 3c0c404efec2..f22492184336 100644 --- a/modular_ss220/maps220/code/floors.dm +++ b/modular_ss220/maps220/code/floors.dm @@ -117,7 +117,6 @@ icon = 'modular_ss220/maps220/icons/grass_sakura.dmi' icon_state = "grass" base_icon_state = "grass" - baseturf = /turf/simulated/floor/indestructible/grass/sakura smoothing_groups = list(SMOOTH_GROUP_TURF, SMOOTH_GROUP_GRASS, SMOOTH_GROUP_JUNGLE_GRASS) /turf/simulated/floor/grass/sakura/no_creep diff --git a/modular_ss220/modular_ss220.dme b/modular_ss220/modular_ss220.dme index ed6d14d70b84..53a170e02283 100644 --- a/modular_ss220/modular_ss220.dme +++ b/modular_ss220/modular_ss220.dme @@ -35,7 +35,6 @@ #include "silicon_hats/_silicon_hats.dme" #include "windows_airbag/_windows_airbag.dme" #include "clumsy_table/_clumsy_table.dme" -#include "flora/_flora.dme" // --- MISC --- // #include "administration/_administration.dme" diff --git a/modular_ss220/objects/code/effects/blossom.dm b/modular_ss220/objects/code/effects/blossom.dm index 7dc77e59f408..7d7a62dc7d2b 100644 --- a/modular_ss220/objects/code/effects/blossom.dm +++ b/modular_ss220/objects/code/effects/blossom.dm @@ -22,11 +22,17 @@ return ..() // нужен метод, который удаляет анимацию, если родительское дерево было уничтожено +/obj/effect/blossom/proc/delete_blossom(turf/T) // нужен метод, который спавнит в тайле дерева /obj/effect/decal/sakura_leaves, // если анимация цветения была активной хотя бы 5 минут // + в тайле ещё нет декали sakura_leaves // + тайл на является /turf/simulated/floor/grass/sakura +/obj/effect/blossom/proc/make_sakura_leaves(turf/T) + if(!locate(/obj/effect/decal/sakura_leaves, T) && !locate(/turf/simulated/floor/grass/sakura, T)) + return + addtimer(CALLBACK(src, PROC_REF(delete_blossom)), 5 MINUTES) + new /obj/effect/decal/sakura_leaves(T, src) // нужен метод, который превращает тайл под анимацией в /turf/simulated/floor/grass/sakura, // если а) анимация работала 15 минут, б) тайл под анимацией - это grass или jungle grass diff --git a/modular_ss220/objects/code/effects/sakura_leaves.dm b/modular_ss220/objects/code/effects/sakura_leaves.dm index 87e60e7f4674..775084bdae2b 100644 --- a/modular_ss220/objects/code/effects/sakura_leaves.dm +++ b/modular_ss220/objects/code/effects/sakura_leaves.dm @@ -16,10 +16,11 @@ // + не нашёл звука шелеста листьев, подставил звук копания земли /obj/effect/decal/sakura_leaves/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/cultivator)) + var/obj/item/shovel/S // так нужно, чтобы обращаться к звуку лопаты ниже var/obj/item/cultivator/C = I user.visible_message("[user] is clearing leaves from the ground [src]...", "You begin clearing leaves from the ground [src]...", "You hear a sound of leaves rustling.") - playsound(src, /obj/item/shovel.usesound, 50, 1) - if(!do_after(user, 50 * I.toolspeed, target = src)) + playsound(src, S.usesound, 50, 1) + if(!do_after(user, 50 * C.toolspeed, target = src)) return user.visible_message("[user] clears leaves from the ground [src]!", "You clear from the ground [src]!") qdel(src)