From 37a201d7455e9a42070e84397eabb41466bbadde Mon Sep 17 00:00:00 2001 From: dj-34 Date: Tue, 11 Jun 2024 19:52:38 +0500 Subject: [PATCH] Add: Sakura tree (#1294) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Что этот PR делает Добавлена Сакура, она умеет цвести, и у неё есть собственные тайлы земли ## Почему это хорошо для игры Баунти ## Изображения изменений ![image](https://github.com/ss220club/Paradise-SS220/assets/20109643/0bc91831-922a-4adb-8725-89fbd6cae2a8) И видео https://cdn.discordapp.com/attachments/1198154076739862588/1248276075088187423/Desktop_2024.06.06_-_19.00.30.01.mp4?ex=66631330&is=6661c1b0&hm=c1f0cb46da971ef3f9a49c2d034c3e3863e8ff6d61fb1136cbed2af3b5a16bb6& ## Тестирование Проверял в игре ## Changelog :cl: add: Добавлена Сакура, она умеет цвести, и у неё есть собственные тайлы земли /:cl: --- modular_ss220/objects/_objects.dme | 3 + modular_ss220/objects/code/flora/sakura.dm | 213 ++++++++++++++++++ modular_ss220/objects/icons/flora/sakura.dmi | Bin 0 -> 24247 bytes .../objects/icons/flora/sakura_grass.dmi | Bin 0 -> 6429 bytes 4 files changed, 216 insertions(+) create mode 100644 modular_ss220/objects/code/flora/sakura.dm create mode 100644 modular_ss220/objects/icons/flora/sakura.dmi create mode 100644 modular_ss220/objects/icons/flora/sakura_grass.dmi diff --git a/modular_ss220/objects/_objects.dme b/modular_ss220/objects/_objects.dme index 5c86b6bf29ec..8dd5e8f6fab4 100644 --- a/modular_ss220/objects/_objects.dme +++ b/modular_ss220/objects/_objects.dme @@ -1,5 +1,8 @@ #include "_objects.dm" +// Flora +#include "code/flora/sakura.dm" + // ID Skins #include "code/id_skins/_id_skins_base.dm" #include "code/id_skins/id_skins.dm" diff --git a/modular_ss220/objects/code/flora/sakura.dm b/modular_ss220/objects/code/flora/sakura.dm new file mode 100644 index 000000000000..62a6599523ed --- /dev/null +++ b/modular_ss220/objects/code/flora/sakura.dm @@ -0,0 +1,213 @@ +/// Time before blossom starts +#define BLOSSOM_START_TIME (30 MINUTES) +/// Time before blossom ends +#define BLOSSOM_END_TIME (10 MINUTES) +/// Time before blossom leaves a pile +#define LEAVES_PILE_SPAWN_TIME (2 MINUTES) +/// Time before blossom transforms grass tile to Sakura's grass +#define TRANSFORM_TURF_TIME (10 MINUTES) + +/* Sakura Tree */ +/obj/structure/flora/tree/sakura + name = "Sakura" + desc = "It's a cherry blossom. Beautiful!" + icon = 'modular_ss220/objects/icons/flora/sakura.dmi' + icon_state = "cherry_blossom" + pixel_y = 10 + var/obj/effect/blossom/blossom_effect + var/timer_handle_start + var/timer_handle_end + +/obj/structure/flora/tree/sakura/Initialize(mapload) + . = ..() + RegisterSignal(SSticker, COMSIG_TICKER_ROUND_STARTING, PROC_REF(on_round_start)) + +/obj/structure/flora/tree/sakura/New() + . = ..() + if(SSticker.IsRoundInProgress()) + initiate_blossom_cycle() + +/obj/structure/flora/tree/sakura/Destroy() + if(timer_handle_start && timer_handle_end) + deltimer(timer_handle_start) + deltimer(timer_handle_end) + if(blossom_effect) + QDEL_NULL(blossom_effect) + timer_handle_start = null + timer_handle_end = null + return ..() + +/obj/structure/flora/tree/sakura/proc/on_round_start() + initiate_blossom_cycle() + SIGNAL_HANDLER + UnregisterSignal(src, COMSIG_TICKER_ROUND_STARTING) + return + +/// Initiates the blooming cycle, in which the countdown begins +/obj/structure/flora/tree/sakura/proc/initiate_blossom_cycle() + // Start the bloom cycle 30 minutes after the start of the round or creating new tree + timer_handle_start = addtimer(CALLBACK(src, PROC_REF(start_blossom)), BLOSSOM_START_TIME, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE) + +/// Starts blooming itself as part of the cycle +/obj/structure/flora/tree/sakura/proc/start_blossom() + var/turf/T = get_turf(src) + if(!blossom_effect) + // Spawns blossom effect + blossom_effect = new(T) + blossom_effect.parent_tree = src + // Start the timer to remove the blossom effect after 10 minutes + timer_handle_end = addtimer(CALLBACK(src, PROC_REF(end_blossom)), BLOSSOM_END_TIME, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE) + +/// Ends blooming, starts timer for a new one +/obj/structure/flora/tree/sakura/proc/end_blossom() + if(blossom_effect) + // Deletes blossom effect + QDEL_NULL(blossom_effect) + // Restart cycle + initiate_blossom_cycle() + +/* Effects */ +/obj/effect/blossom + name = "blossom" + desc = "It's sakura fubuki." + icon = 'modular_ss220/objects/icons/flora/sakura.dmi' + icon_state = "blossom_less" + layer = 12 + pixel_x = -16 + pixel_y = 10 + var/obj/structure/flora/tree/sakura/parent_tree + +/obj/effect/blossom/Initialize(mapload) + . = ..() + // Start the timer to spawn a pile of Sakura leaves after 2 minutes + addtimer(CALLBACK(src, PROC_REF(make_sakura_leaves)), LEAVES_PILE_SPAWN_TIME, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE) + +/obj/effect/blossom/New(turf, obj/structure/flora/tree/sakura/Sakura) + ..() + if(Sakura && istype(Sakura)) + parent_tree = Sakura + +/obj/effect/blossom/Destroy() + if(isnull(parent_tree)) + qdel(src) + return ..() + +/// Spawns pile of sakura leaves under sakura tree +/obj/effect/blossom/proc/make_sakura_leaves() + var/turf/T = get_turf(src) + if(locate(/obj/effect/decal/sakura_leaves, T)) + return + if(istype(T, /turf/simulated/floor/grass/sakura)) + return + if(!parent_tree) + return + new /obj/effect/decal/sakura_leaves(T, src) + // Start the timer to replace grass tile with sakura's one after 10 minutes + addtimer(CALLBACK(src, PROC_REF(transform_turf)), TRANSFORM_TURF_TIME, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_STOPPABLE) + +/// Transforms grass tile to sakura grass under blossom effect +/obj/effect/blossom/proc/transform_turf() + var/turf/T = get_turf(src) + if(istype(T, /turf/simulated/floor/grass/sakura)) + return + if(!istype(T, /turf/simulated/floor/grass)) + return + T.ChangeTurf(/turf/simulated/floor/grass/sakura) + // Deletes pile of Sakura leaves + for(var/obj/effect/decal/sakura_leaves/D in T) + qdel(D) + +/// Sakura Leaves +/obj/effect/decal/sakura_leaves + name = "pile of sakura leaves" + desc = "It's fallen sakura leaves." + icon = 'modular_ss220/objects/icons/flora/sakura.dmi' + icon_state = "leaves" + pixel_y = 5 + max_integrity = 50 + resistance_flags = FLAMMABLE + layer = 11 + plane = -1 + no_scoop = TRUE + no_clear = TRUE + // Is leaves on fire? + var/on_fire = FALSE + +/obj/effect/decal/sakura_leaves/New() + . = ..() + update_icon_state() + +/obj/effect/decal/sakura_leaves/examine(mob/user) + . = ..() + if(on_fire) + . += span_danger("[src] is on fire!") + +/obj/effect/decal/sakura_leaves/update_icon_state() + . = ..() + var/turf/T = get_turf(src) + for(var/obj/structure/flora/tree/sakura/sakura in T) + if(sakura.icon_state == "cherry_blossom") + pixel_x = -2 + dir = WEST + if(sakura.icon_state == "cherry_blossom2") + pixel_x = 5 + dir = EAST + if(sakura.icon_state == "cherry_blossom3") + pixel_x = -7 + +/obj/effect/decal/sakura_leaves/attackby(obj/item/I, mob/user) + if(I.get_heat() && !on_fire) + visible_message(span_danger("[src] bursts into flames!")) + fire_act() + if(istype(I, /obj/item/cultivator)) + var/obj/item/cultivator/C = I + user.visible_message( + span_notice("[user] is clearing [src] from the ground..."), + span_notice("You begin clearing [src] from the ground..."), + span_warning("You hear a sound of leaves rustling.")) + playsound(loc, 'sound/effects/shovel_dig.ogg', 50, 1) + if(!do_after(user, 50 * C.toolspeed, target = src)) + return + user.visible_message( + span_notice("[user] clears [src] from the ground!"), + span_notice("You clear [src] from the ground!")) + qdel(src) + else + return ..() + +// This is fake fire actually +/obj/effect/decal/sakura_leaves/fire_act() + if(resistance_flags & FLAMMABLE) + on_fire = TRUE + add_overlay(custom_fire_overlay ? custom_fire_overlay : GLOB.fire_overlay) + addtimer(CALLBACK(src, PROC_REF(delete_decal)), 5 SECONDS) + +/obj/effect/decal/sakura_leaves/proc/delete_decal() + cut_overlays() + qdel(src) + +/* Sakura Floor */ +/// Sakura grass +/turf/simulated/floor/grass/sakura + name = "sakura grass" + icon = 'modular_ss220/objects/icons/flora/sakura_grass.dmi' + icon_state = "grass" + base_icon_state = "grass" + 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/grass/sakura/update_icon_state() + . = ..() + if(broken || burnt) + icon_state = "damaged" + +#undef BLOSSOM_START_TIME +#undef BLOSSOM_END_TIME +#undef LEAVES_PILE_SPAWN_TIME +#undef TRANSFORM_TURF_TIME diff --git a/modular_ss220/objects/icons/flora/sakura.dmi b/modular_ss220/objects/icons/flora/sakura.dmi new file mode 100644 index 0000000000000000000000000000000000000000..838137105a73343a7409aea4c9cafa019c7b9c57 GIT binary patch literal 24247 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/objects/icons/flora/sakura_grass.dmi b/modular_ss220/objects/icons/flora/sakura_grass.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7fd3130684edd74e6d41b6ae8d2d407e9b40dd90 GIT binary patch literal 6429 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 literal 0 HcmV?d00001