From eb28d04f08a172c3bf671747072e1120b8e43d21 Mon Sep 17 00:00:00 2001 From: Jacquerel Date: Thu, 12 Oct 2023 00:00:22 +0100 Subject: [PATCH] Watcher Nest Lavaland Ruin (#78790) ## About The Pull Request Adds a small new lavaland ruin, the Watchers' Grave. ![image](https://github.com/tgstation/tgstation/assets/7483112/9c3fa6f0-3e7d-4540-8646-5229eb11445b) ![image](https://github.com/tgstation/tgstation/assets/7483112/93bc14f0-9a0c-40d3-bd30-cc79a0d85752) You will need to figure out yourself how to find a way through the walls surrounding it (it's not very hard). This is mostly just atmospheric but also serves as a delivery vehicle for a unique item; an orphaned Watcher egg. (That's kind of it in terms of loot, unless you count a handful of lavaland mob corpses and mushrooms). You can either eat this (it's an egg), throw it at someone to spawn an angry watcher, or keep hold of it for a while and see what happens.
![dreamseeker_cMNnZXjfgL](https://github.com/tgstation/tgstation/assets/7483112/841db8fc-19ac-431f-aa66-c9ec5fbedbc3) That's right it's your very own baby watcher. It orbits your head and shoots at lavaland creatures for unimpressive damage. It won't ever intentionally shoot a player but they might walk in front of it, as it doesn't hurt very much they will probably forgive you. If you die it will continue circling your corpse to guard it against predation.
In creating this ruin I also added a new component called "corpse description". It provides some extra examine text to a corpse which is removed permanently if the mob is revived. There's a field you can varedit on corpse spawners (or make a subtype) which will automatically apply it to spawned corpses. You can use it for environmental storytelling. Or admins can use it to make fun of how you died. Also I fixed basic mobs runtiming when examined by ghosts. ## Why It's Good For The Game More variety in map generation. It's cute. Adds a tool that mappers might like. ## Changelog :cl: add: Adds a new lavaland ruin where you can find a unique egg. /:cl: --- .../lavaland_surface_watcher_grave.dmm | 345 ++++++++++++++++++ .../components/temporary_description.dm | 44 +++ code/datums/ruins/lavaland.dm | 8 + code/game/objects/items/food/_food.dm | 2 +- code/game/objects/items/food/egg.dm | 32 +- code/game/objects/items/food/packaged.dm | 3 + code/game/objects/items/food/soup.dm | 3 + code/game/turfs/closed/indestructible.dm | 3 + .../lavalandruin_code/elephantgraveyard.dm | 6 + .../ruins/lavalandruin_code/watcher_grave.dm | 263 +++++++++++++ code/modules/mob/living/basic/basic.dm | 2 +- .../mob_spawn/corpses/nonhuman_corpses.dm | 7 + code/modules/mob_spawn/mob_spawn.dm | 7 + code/modules/projectiles/projectile.dm | 7 +- config/lavaruinblacklist.txt | 1 + .../mob/simple/lavaland/lavaland_monsters.dmi | Bin 134470 -> 134887 bytes .../lavaland/lavaland_monsters_wide.dmi | Bin 28439 -> 29199 bytes icons/obj/food/egg.dmi | Bin 9450 -> 9709 bytes tgstation.dme | 2 + 19 files changed, 717 insertions(+), 18 deletions(-) create mode 100644 _maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm create mode 100644 code/datums/components/temporary_description.dm create mode 100644 code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm new file mode 100644 index 00000000000..99af5bdced4 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm @@ -0,0 +1,345 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors) +"b" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/item/food/egg/watcher, +/turf/open/misc/asteroid/basalt/wasteland/basin, +/area/lavaland/surface/outdoors) +"c" = ( +/obj/structure/flora/ash/tall_shroom, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"f" = ( +/obj/structure/stone_tile/cracked{ + pixel_x = 16 + }, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"g" = ( +/obj/structure/stone_tile/block/cracked, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"h" = ( +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"i" = ( +/obj/structure/stone_tile/cracked{ + pixel_y = -16 + }, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"j" = ( +/obj/effect/mapping_helpers/bombable_wall, +/turf/closed/indestructible/riveted/boss/wasteland, +/area/lavaland/surface/outdoors) +"l" = ( +/turf/closed/mineral/gibtonite/volcanic, +/area/lavaland/surface/outdoors) +"m" = ( +/turf/open/chasm/lavaland, +/area/lavaland/surface/outdoors) +"o" = ( +/obj/effect/mob_spawn/corpse/goliath/pierced, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"q" = ( +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"r" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"t" = ( +/obj/structure/stone_tile/cracked{ + pixel_x = 16 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"u" = ( +/obj/structure/flora/ash/stem_shroom, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"v" = ( +/obj/effect/mob_spawn/corpse/watcher/crushed, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"y" = ( +/obj/structure/stone_tile/block/cracked{ + pixel_y = -16 + }, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"A" = ( +/obj/structure/flora/rock/style_random, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"B" = ( +/obj/structure/stone_tile/slab, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"C" = ( +/obj/structure/flora/ash/cacti, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"D" = ( +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/stone_tile/center/cracked, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"E" = ( +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"I" = ( +/turf/template_noop, +/area/template_noop) +"J" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"M" = ( +/obj/structure/flora/ash/fireblossom, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"R" = ( +/turf/closed/indestructible/riveted/boss/wasteland, +/area/lavaland/surface/outdoors) +"U" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/effect/mob_spawn/corpse/watcher/goliath_chewed, +/turf/open/misc/asteroid/basalt/wasteland, +/area/lavaland/surface/outdoors) +"W" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +I +I +I +I +I +I +I +I +I +I +I +I +I +"} +(2,1,1) = {" +I +I +I +I +a +I +W +W +M +I +I +I +I +"} +(3,1,1) = {" +I +I +I +l +a +a +a +t +a +a +I +I +I +"} +(4,1,1) = {" +I +I +a +a +R +R +R +j +R +a +a +I +I +"} +(5,1,1) = {" +I +a +a +R +R +u +R +q +R +m +a +I +I +"} +(6,1,1) = {" +I +a +a +R +A +f +q +f +m +m +m +I +I +"} +(7,1,1) = {" +I +I +a +R +D +U +h +q +C +m +m +m +I +"} +(8,1,1) = {" +I +l +a +R +y +b +g +B +q +q +m +m +I +"} +(9,1,1) = {" +I +a +a +R +c +i +o +r +q +R +a +a +I +"} +(10,1,1) = {" +I +I +a +R +R +A +u +h +c +R +a +l +I +"} +(11,1,1) = {" +I +I +a +a +R +R +R +q +R +R +a +I +I +"} +(12,1,1) = {" +I +I +I +a +a +a +R +j +R +a +a +I +I +"} +(13,1,1) = {" +I +I +I +I +I +W +M +J +E +W +I +I +I +"} +(14,1,1) = {" +I +I +I +I +I +I +t +v +W +I +I +I +I +"} +(15,1,1) = {" +I +I +I +I +I +I +I +W +W +I +I +I +I +"} diff --git a/code/datums/components/temporary_description.dm b/code/datums/components/temporary_description.dm new file mode 100644 index 00000000000..1ff5e6dccdb --- /dev/null +++ b/code/datums/components/temporary_description.dm @@ -0,0 +1,44 @@ +/** + * Adds examine text to something which is removed when receiving specified signals, by default the revive signal. + * The default settings are set up to be applied to a corpse to add some kind of immersive storytelling text which goes away upon revival. + */ +/datum/component/temporary_description + /// What do we display on examine? + var/description_text = "" + /// What do we display if examined by a clown? Usually only applied if this is put on a corpse, but go nuts. + var/naive_description = "" + /// When are we removed? + var/list/removal_signals + +/datum/component/temporary_description/Initialize( + description_text = "There's something unusual about them.", + naive_description = "", + list/removal_signals = list(COMSIG_LIVING_REVIVE), +) + . = ..() + if (!isatom(parent)) + return COMPONENT_INCOMPATIBLE + if (!description_text) + stack_trace("[type] applied to [parent] with empty description, which is pointless.") + src.description_text = description_text + src.naive_description = naive_description + if (length(removal_signals)) + src.removal_signals = removal_signals + +/datum/component/temporary_description/RegisterWithParent() + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined)) + RegisterSignals(parent, removal_signals, PROC_REF(remove_component)) + +/datum/component/temporary_description/UnregisterFromParent() + UnregisterSignal(parent, removal_signals + COMSIG_ATOM_EXAMINE) + +/datum/component/temporary_description/proc/on_examined(atom/corpse, mob/thing_inspector, list/examine_list) + SIGNAL_HANDLER + if (naive_description && HAS_MIND_TRAIT(thing_inspector, TRAIT_NAIVE)) + examine_list += span_notice(naive_description) + return + examine_list += span_notice(description_text) + +/datum/component/temporary_description/proc/remove_component() + SIGNAL_HANDLER + qdel(src) // It wouldn't be immersive if the circumstances of my grisly death remained after I was revived diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 7d9af70fb57..1dcf535c329 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -284,6 +284,14 @@ allow_duplicates = TRUE cost = 3 +/datum/map_template/ruin/lavaland/watcher_grave + name = "Watchers' Grave" + id = "watcher-grave" + description = "A lonely cave where an orphaned child awaits a new parent." + suffix = "lavaland_surface_watcher_grave.dmm" + cost = 5 + allow_duplicates = FALSE + /datum/map_template/ruin/lavaland/mook_village name = "Mook Village" id = "mook_village" diff --git a/code/game/objects/items/food/_food.dm b/code/game/objects/items/food/_food.dm index 69cfdde4668..0fb85e67589 100644 --- a/code/game/objects/items/food/_food.dm +++ b/code/game/objects/items/food/_food.dm @@ -115,7 +115,7 @@ ///Set decomp_req_handle to TRUE to only make it decompose when someone picks it up. ///Requires /datum/component/germ_sensitive to detect exposure /obj/item/food/proc/make_germ_sensitive(mapload) - if(istype(src, /obj/item/food/bowled) || istype(src, /obj/item/food/canned) || !isnull(trash_type)) + if(!isnull(trash_type)) return // You don't eat the package and it protects from decomposing AddComponent(/datum/component/germ_sensitive, mapload) if(!preserved_food) diff --git a/code/game/objects/items/food/egg.dm b/code/game/objects/items/food/egg.dm index 555b16e24b6..60bbb58e3ac 100644 --- a/code/game/objects/items/food/egg.dm +++ b/code/game/objects/items/food/egg.dm @@ -28,6 +28,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0) ant_attracting = FALSE decomp_type = /obj/item/food/egg/rotten decomp_req_handle = TRUE //so laid eggs can actually become chickens + /// How likely is it that a chicken will come out of here if we throw it? var/chick_throw_prob = 13 /obj/item/food/egg/make_bakeable() @@ -68,24 +69,25 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0) var/turf/hit_turf = get_turf(hit_atom) new /obj/effect/decal/cleanable/food/egg_smudge(hit_turf) - //Chicken code uses this MAX_CHICKENS variable, so I figured that I'd use it again here. Even this check and the check in chicken code both use the MAX_CHICKENS variable, they use independent counter variables and thus are independent of each other. - if(GLOB.chicks_from_eggs < MAX_CHICKENS) //Roughly a 1/8 (12.5%) chance to make a chick, as in Minecraft, with a 1/256 (~0.39%) chance to make four chicks instead. - var/chance = rand(0, 255) - switch(chance) - if(0 to 30) - new /mob/living/basic/chick(hit_turf) - GLOB.chicks_from_eggs++ - visible_message(span_notice("A chick comes out of the cracked egg!")) - if(31) - var/spawned_chickens = min(4, MAX_CHICKENS - GLOB.chicks_from_eggs) // We don't want to go over the limit - visible_message(span_notice("[spawned_chickens] chicks come out of the egg! Jackpot!")) - for(var/i in 1 to spawned_chickens) - new /mob/living/basic/chick(hit_turf) - GLOB.chicks_from_eggs++ - + if (prob(chick_throw_prob)) + spawn_impact_chick(hit_turf) reagents.expose(hit_atom, TOUCH) qdel(src) +/// Spawn a baby chicken from throwing an egg +/obj/item/food/egg/proc/spawn_impact_chick(turf/spawn_turf) + var/chickens_remaining = MAX_CHICKENS - GLOB.chicks_from_eggs + if (chickens_remaining < 1) + return + var/spawned_chickens = prob(97) ? 1 : min(4, chickens_remaining) // We don't want to go over the limit + if (spawned_chickens > 1) // Chicken jackpot! + visible_message(span_notice("[spawned_chickens] chicks come out of the egg! Jackpot!")) + else + visible_message(span_notice("A chick comes out of the cracked egg!")) + for(var/i in 1 to spawned_chickens) + new /mob/living/basic/chick(spawn_turf) + GLOB.chicks_from_eggs++ + /obj/item/food/egg/attackby(obj/item/item, mob/user, params) if(istype(item, /obj/item/toy/crayon)) var/obj/item/toy/crayon/crayon = item diff --git a/code/game/objects/items/food/packaged.dm b/code/game/objects/items/food/packaged.dm index 9c23ac3f307..1dabec57cdd 100644 --- a/code/game/objects/items/food/packaged.dm +++ b/code/game/objects/items/food/packaged.dm @@ -16,6 +16,9 @@ w_class = WEIGHT_CLASS_SMALL preserved_food = TRUE +/obj/item/food/canned/make_germ_sensitive(mapload) + return // It's in a can + /obj/item/food/canned/proc/open_can(mob/user) to_chat(user, span_notice("You pull back the tab of \the [src].")) playsound(user.loc, 'sound/items/foodcanopen.ogg', 50) diff --git a/code/game/objects/items/food/soup.dm b/code/game/objects/items/food/soup.dm index 08eb86ebaa0..e1482b17a81 100644 --- a/code/game/objects/items/food/soup.dm +++ b/code/game/objects/items/food/soup.dm @@ -7,6 +7,9 @@ eatverbs = list("slurp", "sip", "inhale", "drink") venue_value = FOOD_PRICE_CHEAP +/obj/item/food/bowled/make_germ_sensitive(mapload) + return // It's in a bowl + /obj/item/food/bowled/wish name = "wish soup" desc = "I wish this was soup." diff --git a/code/game/turfs/closed/indestructible.dm b/code/game/turfs/closed/indestructible.dm index 44717faaf69..a1320946a45 100644 --- a/code/game/turfs/closed/indestructible.dm +++ b/code/game/turfs/closed/indestructible.dm @@ -308,6 +308,9 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) explosive_resistance = 50 baseturfs = /turf/closed/indestructible/riveted/boss +/turf/closed/indestructible/riveted/boss/wasteland + baseturfs = /turf/open/misc/asteroid/basalt/wasteland + /turf/closed/indestructible/riveted/boss/see_through opacity = FALSE diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm index 5e459758ee4..aa201292f72 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm @@ -60,6 +60,12 @@ if(prob(floor_variance)) icon_state = "[base_icon_state][rand(0,6)]" +/turf/open/misc/asteroid/basalt/wasteland/basin + icon_state = "wasteland_dug" + base_icon_state = "wasteland_dug" + floor_variance = 0 + dug = TRUE + /turf/closed/mineral/strong/wasteland name = "ancient dry rock" color = "#B5651D" diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm new file mode 100644 index 00000000000..75ac48c2467 --- /dev/null +++ b/code/modules/mapfluff/ruins/lavalandruin_code/watcher_grave.dm @@ -0,0 +1,263 @@ +/obj/effect/mob_spawn/corpse/goliath/pierced + corpse_description = "Seems to have been pierced through the heart by a Watcher spike." + naive_corpse_description = "It's got a pretty big boo-boo, might need one of the large plasters." + +/obj/effect/mob_spawn/corpse/watcher/goliath_chewed + corpse_description = "Prior to its death, it was badly mangled by the jaws of a Goliath." + naive_corpse_description = "It's all tuckered out after playing rough with a Goliath." + +/obj/effect/mob_spawn/corpse/watcher/crushed + corpse_description = "Crushed by a rockslide, it seemed to have been scraping frantically at the rocks even as it perished." + naive_corpse_description = "All of those rocks probably don't make a comfortable blanket." + + +#define WATCHER_EGG_LIVELY_MOD 0.75 +#define WATCHER_EGG_ACTIVE_MOD 0.5 + +/// Egg which hatches into a helpful pet. Or you can eat it if you want. +/obj/item/food/egg/watcher + name = "watcher egg" + desc = "A lonely egg still pulsing with life, somehow untouched by the corruption of the Necropolis." + icon_state = "egg_watcher" + chick_throw_prob = 100 + tastes = list("ocular fluid" = 6, "loneliness" = 1) + preserved_food = TRUE + /// How far have we moved? + var/steps_travelled = 0 + /// How far should we travel to hatch? + var/steps_to_hatch = 600 + /// Datum used to measure our steps + var/datum/movement_detector/pedometer + +/obj/item/food/egg/watcher/Initialize(mapload) + . = ..() + pedometer = new(src, CALLBACK(src, PROC_REF(on_stepped))) + +/obj/item/food/egg/watcher/Destroy(force) + . = ..() + QDEL_NULL(pedometer) + +/obj/item/food/egg/watcher/spawn_impact_chick(turf/spawn_turf) + new /obj/effect/spawner/random/lavaland_mob/watcher(spawn_turf) + +/obj/item/food/egg/watcher/examine(mob/user) + return ..() + span_notice("Watch it more closely to see how it is doing...") + +/obj/item/food/egg/watcher/examine_more(mob/user) + . = ..() + if (steps_travelled < (steps_to_hatch * WATCHER_EGG_ACTIVE_MOD)) + return . + span_notice("Something stirs listlessly inside.") + if (steps_travelled < steps_to_hatch * WATCHER_EGG_LIVELY_MOD) + return . + span_notice("Something is moving actively inside.") + return . + span_boldnotice("It's jiggling wildly, it's about to hatch!") + +/// Called when we are moved, whether inside an inventory or by ourself somehow +/obj/item/food/egg/watcher/proc/on_stepped(atom/movable/egg, atom/mover, atom/old_loc, direction) + var/new_loc = get_turf(egg) + if (isnull(new_loc) || new_loc == get_turf(old_loc)) + return // Didn't actually go anywhere + steps_travelled++ + if (steps_travelled == steps_to_hatch * WATCHER_EGG_ACTIVE_MOD) + jiggle() + return + if (steps_travelled < steps_to_hatch) + return + visible_message(span_boldnotice("[src] splits and unfurls into a baby Watcher!")) + playsound(new_loc, 'sound/effects/splat.ogg', 50, TRUE) + new /obj/effect/decal/cleanable/greenglow(new_loc) + new /obj/item/watcher_hatchling(new_loc) + qdel(src) + +/// Animate the egg +/obj/item/food/egg/watcher/proc/jiggle() + var/animation = isturf(loc) ? rand(1, 3) : 1 // Pixel_x/y animations don't work in an inventory + switch(animation) + if (1) + animate(src, transform = transform.Scale(1.3), time = 1 SECONDS, easing = BOUNCE_EASING) + animate(transform = matrix(), time = 0.5 SECONDS, easing = SINE_EASING | EASE_IN) + if (2) + animate(src, pixel_y = 8, time = 0.5 SECONDS, easing = SINE_EASING | EASE_OUT) + animate(pixel_y = 0, time = 0.5 SECONDS, easing = SINE_EASING | EASE_IN) + animate(pixel_y = 4, time = 0.5 SECONDS, easing = SINE_EASING | EASE_OUT) + animate(pixel_y = 0, time = 0.5 SECONDS, easing = BOUNCE_EASING | EASE_IN) + if (3) + Shake(pixelshiftx = 2, pixelshifty = 0, shake_interval = 0.3 SECONDS) + var/next_jiggle = rand(5 SECONDS, 10 SECONDS) / (steps_travelled >= steps_to_hatch * WATCHER_EGG_LIVELY_MOD ? 2 : 1) + addtimer(CALLBACK(src, PROC_REF(jiggle)), next_jiggle, TIMER_DELETE_ME) + +#undef WATCHER_EGG_LIVELY_MOD +#undef WATCHER_EGG_ACTIVE_MOD + + +/// A cute pet who will occasionally attack lavaland mobs for you +/obj/item/watcher_hatchling + name = "watcher hatchling" + desc = "A newly born watcher, apparently free of the Necropolis' corruption. Perhaps one of the last." + icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' + icon_state = "watcher_baby" + w_class = WEIGHT_CLASS_SMALL + /// The effect we create when out and about + var/obj/effect/watcher_orbiter/orbiter + /// Who are we orbiting? + var/mob/living/owner + +/obj/item/watcher_hatchling/attack_self(mob/user, modifiers) + . = ..() + if (!isnull(orbiter)) + watcher_return() + return + orbiter = new (get_turf(src)) + orbiter.follow(user) + owner = user + RegisterSignal(owner, COMSIG_QDELETING, PROC_REF(remove_owner)) + RegisterSignal(orbiter, COMSIG_QDELETING, PROC_REF(remove_orbiter)) + +/obj/item/watcher_hatchling/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) + . = ..() + if (isnull(orbiter)) + return + var/mob/holder = recursive_loc_check(src, /mob) + if (holder != owner) + watcher_return() + +/// If the guy we are orbiting is deleted but somehow we aren't +/obj/item/watcher_hatchling/proc/remove_owner() + SIGNAL_HANDLER + UnregisterSignal(owner, COMSIG_QDELETING) + owner = null + +/// In the more likely event that our orbiter is deleted, stop holding a reference to it +/obj/item/watcher_hatchling/proc/remove_orbiter() + SIGNAL_HANDLER + orbiter = null // No need to unregister signal because we only call this when it deletes + +/// Get back in your ball pikachu +/obj/item/watcher_hatchling/proc/watcher_return() + qdel(orbiter) + remove_owner() + + +/// Orbiting visual which shoots at mining mobs +/obj/effect/watcher_orbiter + name = "watcher hatchling" + icon = 'icons/mob/simple/lavaland/lavaland_monsters.dmi' + icon_state = "watcher_baby" + layer = EDGED_TURF_LAYER // Don't render under lightbulbs + plane = GAME_PLANE_UPPER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + pixel_y = 22 + alpha = 0 + /// Who are we following? + var/atom/parent + /// Datum which keeps us hanging out with our parent + var/datum/movement_detector/tracker + /// Type of projectile we fire + var/projectile_type = /obj/projectile/baby_watcher_blast + /// Sound to make when we shoot + var/projectile_sound = 'sound/weapons/pierce.ogg' + /// Time between taking potshots at goliaths + var/fire_delay = 5 SECONDS + /// How much faster do we shoot when avenging our parent? + var/on_death_multiplier = 5 + /// Time taken between shots + COOLDOWN_DECLARE(shot_cooldown) + /// Types of mobs to attack + var/list/target_faction = list(FACTION_MINING) + +/obj/effect/watcher_orbiter/Initialize(mapload) + . = ..() + START_PROCESSING(SSobj, src) + +// Shuttle rotation fucks with our position, we just want to stick with our guy +/obj/effect/watcher_orbiter/shuttleRotate(rotation, params) + return + +/obj/effect/watcher_orbiter/Destroy(force) + STOP_PROCESSING(SSobj, src) + QDEL_NULL(tracker) + return ..() + +/obj/effect/watcher_orbiter/process(seconds_per_tick) + if (!COOLDOWN_FINISHED(src, shot_cooldown)) + return + for (var/mob/living/potential_target in oview(5, src)) + if (!ismining(potential_target) || potential_target.stat == DEAD) + continue + if (!faction_check(target_faction, potential_target.faction)) + continue + shoot_at(potential_target) + return + +/// Take a shot +/obj/effect/watcher_orbiter/proc/shoot_at(atom/target) + COOLDOWN_START(src, shot_cooldown, fire_delay) + fire_projectile(projectile_type, target, projectile_sound, ignore_targets = list(parent)) + +/// Set ourselves up to track and orbit around a guy +/obj/effect/watcher_orbiter/proc/follow(atom/movable/target) + parent = target + glide_size = target.glide_size + animate(src, pixel_y = 26, alpha = 255, time = 0.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(orbit_animation)), 0.5 SECONDS, TIMER_DELETE_ME) + tracker = new(target, CALLBACK(src, PROC_REF(on_parent_moved))) + RegisterSignal(target, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(on_glide_size_changed)) + RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_parent_deleted)) + RegisterSignal(target, COMSIG_LIVING_DEATH, PROC_REF(on_parent_died)) + RegisterSignal(target, COMSIG_LIVING_REVIVE, PROC_REF(on_parent_revived)) + +/// Do our orbiting animation +/obj/effect/watcher_orbiter/proc/orbit_animation() + animate(src, pixel_y = 26, time = 1 SECONDS, loop = -1, easing = SINE_EASING, flags = ANIMATION_PARALLEL) + animate(pixel_y = 18, time = 1 SECONDS, easing = SINE_EASING) + animate(src, pixel_x = 20, time = 0.5 SECONDS, loop = -1, easing = SINE_EASING | EASE_OUT, flags = ANIMATION_PARALLEL) + animate(pixel_x = 0, time = 0.5 SECONDS, easing = SINE_EASING | EASE_IN) + animate(pixel_x = -20, time = 0.5 SECONDS, easing = SINE_EASING | EASE_OUT) + animate(pixel_x = 0, time = 0.5 SECONDS, easing = SINE_EASING | EASE_IN) + +/// Follow our parent +/obj/effect/watcher_orbiter/proc/on_parent_moved(atom/movable/parent, atom/mover, atom/old_loc, direction) + if(parent.loc == old_loc) + return + var/turf/new_turf = get_turf(parent) + if(isnull(new_turf)) + qdel(src) + return + if (loc != new_turf) + abstract_move(new_turf) + +/// Make sure we glide at the same speed as our parent +/obj/effect/watcher_orbiter/proc/on_glide_size_changed(atom/source, new_glide_size) + SIGNAL_HANDLER + glide_size = new_glide_size + +/// Called if the guy we're tracking is deleted somehow +/obj/effect/watcher_orbiter/proc/on_parent_deleted() + SIGNAL_HANDLER + parent = null + qdel(src) + +/// We must guard this corpse +/obj/effect/watcher_orbiter/proc/on_parent_died(mob/living/parent) + SIGNAL_HANDLER + visible_message(span_notice("[src] emits a piteous keening in mourning of [parent]!")) + fire_delay /= on_death_multiplier + +/// Exit hyperactive mode +/obj/effect/watcher_orbiter/proc/on_parent_revived(mob/living/parent) + SIGNAL_HANDLER + visible_message(span_notice("[src] chirps happily as [parent] suddenly gasps for breath!")) + fire_delay *= on_death_multiplier + + +/// Beam fired by a baby watcher, doesn't actually do less damage than its parent +/obj/projectile/baby_watcher_blast + name = "hatchling beam" + icon_state = "ice_2" + damage = 10 + damage_type = BRUTE // Mining mobs don't take a lot of burn damage so we'll pretend + speed = 1 + pixel_speed_multiplier = 0.5 + +/obj/projectile/baby_watcher_blast/Initialize(mapload) + . = ..() + transform = transform.Scale(0.5) diff --git a/code/modules/mob/living/basic/basic.dm b/code/modules/mob/living/basic/basic.dm index 473a87fef5b..4802ef347a0 100644 --- a/code/modules/mob/living/basic/basic.dm +++ b/code/modules/mob/living/basic/basic.dm @@ -201,7 +201,7 @@ . = ..() if(stat != DEAD) return - . += span_deadsay("Upon closer examination, [p_they()] appear[p_s()] to be [HAS_TRAIT(user.mind, TRAIT_NAIVE) ? "asleep" : "dead"].") + . += span_deadsay("Upon closer examination, [p_they()] appear[p_s()] to be [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "asleep" : "dead"].") /mob/living/basic/proc/melee_attack(atom/target, list/modifiers, ignore_cooldown = FALSE) face_atom(target) diff --git a/code/modules/mob_spawn/corpses/nonhuman_corpses.dm b/code/modules/mob_spawn/corpses/nonhuman_corpses.dm index 060f7e178be..ce02c6894ae 100644 --- a/code/modules/mob_spawn/corpses/nonhuman_corpses.dm +++ b/code/modules/mob_spawn/corpses/nonhuman_corpses.dm @@ -46,6 +46,13 @@ pixel_x = -12 base_pixel_x = -12 +/obj/effect/mob_spawn/corpse/watcher + mob_type = /mob/living/basic/mining/watcher + icon = 'icons/mob/simple/lavaland/lavaland_monsters_wide.dmi' + icon_state = "watcher_dead_helper" + pixel_x = -12 + base_pixel_x = -12 + /// Dead headcrab for changeling-themed ruins /obj/effect/mob_spawn/corpse/headcrab mob_type = /mob/living/basic/headslug/beakless diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm index b282ea7d8b2..3bfff7855f0 100644 --- a/code/modules/mob_spawn/mob_spawn.dm +++ b/code/modules/mob_spawn/mob_spawn.dm @@ -281,6 +281,11 @@ ///burn damage this corpse will spawn with var/burn_damage = 0 + ///what environmental storytelling script should this corpse have + var/corpse_description = "" + ///optionally different text to display if the target is a clown + var/naive_corpse_description = "" + /obj/effect/mob_spawn/corpse/Initialize(mapload, no_spawn) . = ..() if(no_spawn) @@ -298,6 +303,8 @@ spawned_mob.adjustOxyLoss(oxy_damage) spawned_mob.adjustBruteLoss(brute_damage) spawned_mob.adjustFireLoss(burn_damage) + if (corpse_description) + spawned_mob.AddComponent(/datum/component/temporary_description, corpse_description, naive_corpse_description) /obj/effect/mob_spawn/corpse/create(mob/mob_possessor, newname) . = ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 6bce420a02b..37d36b13f6e 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -1143,13 +1143,17 @@ #undef MUZZLE_EFFECT_PIXEL_INCREMENT /// Fire a projectile from this atom at another atom -/atom/proc/fire_projectile(projectile_type, atom/target, sound, firer) +/atom/proc/fire_projectile(projectile_type, atom/target, sound, firer, list/ignore_targets = list()) if (!isnull(sound)) playsound(src, sound, vol = 100, vary = TRUE) var/turf/startloc = get_turf(src) var/obj/projectile/bullet = new projectile_type(startloc) bullet.starting = startloc + var/list/ignore = list() + for (var/atom/thing as anything in ignore_targets) + ignore[thing] = TRUE + bullet.impacted += ignore bullet.firer = firer || src bullet.fired_from = src bullet.yo = target.y - startloc.y @@ -1157,3 +1161,4 @@ bullet.original = target bullet.preparePixelProjectile(target, src) bullet.fire() + return bullet diff --git a/config/lavaruinblacklist.txt b/config/lavaruinblacklist.txt index e6279517dbf..d40c4386d31 100644 --- a/config/lavaruinblacklist.txt +++ b/config/lavaruinblacklist.txt @@ -37,6 +37,7 @@ #_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_tomb.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm +#_maps/RandomRuins/LavaRuins/lavaland_surface_watcher_grave.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_ww_vault.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_wwiioutpost.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm diff --git a/icons/mob/simple/lavaland/lavaland_monsters.dmi b/icons/mob/simple/lavaland/lavaland_monsters.dmi index 38b78cf468f1f135abe20bd2d2dabbfd2502dc2c..f68e3db4a6cb9174ecbc66b2fdbff9d1aca1a9f7 100644 GIT binary patch delta 17480 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 delta 17072 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%0Akf?Eb`j-9Er9{+CmPc#(_S>87*5^FM<%|JJ?= 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 diff --git a/icons/obj/food/egg.dmi b/icons/obj/food/egg.dmi index c7661fca918f0cbd09e6dc016c3108d92f929754..58908d8247913de5018f8ef901668e0e978c9684 100644 GIT binary patch literal 9709 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 O0ZQ`fay4%)BmXa7#fzW- literal 9450 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 E2XY`gO#lD@ diff --git a/tgstation.dme b/tgstation.dme index 24074b77eb8..eddfafa0683 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1115,6 +1115,7 @@ #include "code\datums\components\technoshy.dm" #include "code\datums\components\telegraph_ability.dm" #include "code\datums\components\temporary_body.dm" +#include "code\datums\components\temporary_description.dm" #include "code\datums\components\tether.dm" #include "code\datums\components\thermite.dm" #include "code\datums\components\tippable.dm" @@ -4208,6 +4209,7 @@ #include "code\modules\mapfluff\ruins\lavalandruin_code\sloth.dm" #include "code\modules\mapfluff\ruins\lavalandruin_code\surface.dm" #include "code\modules\mapfluff\ruins\lavalandruin_code\syndicate_base.dm" +#include "code\modules\mapfluff\ruins\lavalandruin_code\watcher_grave.dm" #include "code\modules\mapfluff\ruins\objects_and_mobs\ash_walker_den.dm" #include "code\modules\mapfluff\ruins\objects_and_mobs\cursed_slot_machine.dm" #include "code\modules\mapfluff\ruins\objects_and_mobs\necropolis_gate.dm"