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

Добавляет сакуру, декаль листы на земле, тайлы травы с листьями и анимацию листопада #964

Closed
wants to merge 6 commits into from
4 changes: 4 additions & 0 deletions modular_ss220/flora/_flora.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/datum/modpack/flora
RuslanM marked this conversation as resolved.
Show resolved Hide resolved
name = "Модуль под новые растения"
desc = "Содержит в себе класс растений и эффектов"
author = "The-main-answer-42"
8 changes: 8 additions & 0 deletions modular_ss220/flora/_flora.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include "_flora.dm"

// Tress
#include "code/trees.dm"

// Effects
#include "code/effects/blossom.dm"
#include "code/effects/sakura_leaves.dm"
34 changes: 34 additions & 0 deletions modular_ss220/flora/code/effects/blossom.dm
Original file line number Diff line number Diff line change
@@ -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
RuslanM marked this conversation as resolved.
Show resolved Hide resolved
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
27 changes: 27 additions & 0 deletions modular_ss220/flora/code/effects/sakura_leaves.dm
Original file line number Diff line number Diff line change
@@ -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("<span class='notice'>[user] is clearing leaves from the ground [src]...</span>", "<span class='notice'>You begin clearing leaves from the ground [src]...</span>", "<span class='warning'>You hear a sound of leaves rustling.</span>")
playsound(src, /obj/item/shovel.usesound, 50, 1)

Check failure on line 21 in modular_ss220/flora/code/effects/sakura_leaves.dm

View workflow job for this annotation

GitHub Actions / Run Linters

failed to resolve path /obj/item/shovel.usesound
if(!do_after(user, 50 * I.toolspeed, target = src))
return
user.visible_message("<span class='notice'>[user] clears leaves from the ground [src]!</span>", "<span class='notice'>You clear from the ground [src]!</span>")
qdel(src)
else
return ..()
20 changes: 20 additions & 0 deletions modular_ss220/flora/code/trees.dm
Original file line number Diff line number Diff line change
@@ -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 */


Binary file added modular_ss220/flora/icons/sakura.dmi
Binary file not shown.
15 changes: 15 additions & 0 deletions modular_ss220/maps220/code/floors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Binary file added modular_ss220/maps220/icons/grass_sakura.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions modular_ss220/modular_ss220.dme
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Loading