From 9f6a9a4e6aa508e4530758bedc01f20d6e08bc02 Mon Sep 17 00:00:00 2001 From: Casey Date: Thu, 12 May 2022 15:21:13 -0400 Subject: [PATCH] Merge pull request #12897 from FartMaster69420/cocoon Cocoon Metamorphosis --- .../objects/items/weapons/storage/egg_vr.dm | 2 ++ .../station/station_special_abilities_vr.dm | 26 +++++++++++++++++++ .../species/station/traits_vr/positive.dm | 10 +++++++ .../tgui/modules/appearance_changer.dm | 9 ++++++- .../tgui/modules/appearance_changer_vr.dm | 12 +++++++++ 5 files changed, 58 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/egg_vr.dm b/code/game/objects/items/weapons/storage/egg_vr.dm index 0adb9533bf..97da55c4ff 100644 --- a/code/game/objects/items/weapons/storage/egg_vr.dm +++ b/code/game/objects/items/weapons/storage/egg_vr.dm @@ -35,6 +35,8 @@ animate_shake() drop_contents() icon = open_egg_icon + if(user.transforming) + user.transforming = FALSE /obj/item/weapon/storage/vore_egg/proc/animate_shake() var/init_px = pixel_x diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index c812f326c6..2c5bd8f186 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -1038,3 +1038,29 @@ species.has_glowing_eyes = !species.has_glowing_eyes update_eyes() to_chat(src, "Your eyes [species.has_glowing_eyes ? "are now" : "are no longer"] glowing.") + + + +/mob/living/carbon/human/proc/enter_cocoon() + set name = "Spin Cocoon" + set category = "Abilities" + if(!isturf(loc)) + to_chat(src, "You don't have enough space to spin a cocoon!") + return + + if(do_after(src, 25, exclusive = TASK_USER_EXCLUSIVE)) + var/obj/item/weapon/storage/vore_egg/bugcocoon/C = new(loc) + forceMove(C) + transforming = TRUE + var/datum/tgui_module/appearance_changer/cocoon/V = new(src, src) + V.tgui_interact(src) + + var/mob_holder_type = src.holder_type || /obj/item/weapon/holder + C.w_class = src.size_multiplier * 4 //Egg size and weight scaled to match occupant. + var/obj/item/weapon/holder/H = new mob_holder_type(C, src) + C.max_storage_space = H.w_class + C.icon_scale_x = 0.25 * C.w_class + C.icon_scale_y = 0.25 * C.w_class + C.update_transform() + //egg_contents -= src + C.contents -= src \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index f44fe4ce29..cc65469af9 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -177,3 +177,13 @@ desc = "You can breathe under water." cost = 1 var_changes = list("water_breather" = 1) + +/datum/trait/positive/cocoon_tf + name = "Cocoon Spinner" + desc = "Allows you to build a cocoon around yourself, using it to transform your body if you desire." + cost = 1 + //custom_only = FALSE + +/datum/trait/positive/cocoon_tf/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.verbs |= /mob/living/carbon/human/proc/enter_cocoon \ No newline at end of file diff --git a/code/modules/tgui/modules/appearance_changer.dm b/code/modules/tgui/modules/appearance_changer.dm index b125338b30..37a7231b97 100644 --- a/code/modules/tgui/modules/appearance_changer.dm +++ b/code/modules/tgui/modules/appearance_changer.dm @@ -38,6 +38,7 @@ map_name = "appearance_changer_[REF(src)]_map" // Initialize map objects cam_screen = new + cam_screen.name = "screen" cam_screen.assigned_map = map_name cam_screen.del_on_map_removal = FALSE @@ -407,6 +408,11 @@ return data /datum/tgui_module/appearance_changer/proc/update_active_camera_screen() + cam_screen.vis_contents = list(owner) // Copied from the vore version. + cam_background.icon_state = "clear" + cam_background.fill_rect(1, 1, 1, 1) + local_skybox.cut_overlays() + /* var/turf/newturf = get_turf(customize_usr ? tgui_host() : owner) if(newturf == last_camera_turf) return @@ -425,6 +431,7 @@ local_skybox.add_overlay(SSskybox.get_skybox(get_z(newturf))) local_skybox.scale_to_view(3) local_skybox.set_position("CENTER", "CENTER", (world.maxx>>1) - newturf.x, (world.maxy>>1) - newturf.y) + */ /datum/tgui_module/appearance_changer/proc/update_dna() var/mob/living/carbon/human/target = owner @@ -544,7 +551,7 @@ // VOREStation Add - Ears/Tails/Wings /datum/tgui_module/appearance_changer/proc/can_use_sprite(datum/sprite_accessory/X, mob/living/carbon/human/target, mob/user) - if(!isnull(X.species_allowed) && !(target.species.name in X.species_allowed)) + if(!isnull(X.species_allowed) && !(target.species.name in X.species_allowed) && (!istype(target.species, /datum/species/custom))) // Letting custom species access wings/ears/tails. return FALSE if(LAZYLEN(X.ckeys_allowed) && !(user?.ckey in X.ckeys_allowed) && !(target.ckey in X.ckeys_allowed)) diff --git a/code/modules/tgui/modules/appearance_changer_vr.dm b/code/modules/tgui/modules/appearance_changer_vr.dm index d5ace1b7e7..fc77d8663c 100644 --- a/code/modules/tgui/modules/appearance_changer_vr.dm +++ b/code/modules/tgui/modules/appearance_changer_vr.dm @@ -43,3 +43,15 @@ if(APPEARANCECHANGER_CHANGED_EYES) to_chat(M, "You feel lightheaded and drowsy...") to_chat(O, "You feel warm as you make subtle changes to your captive's body.") + +// Cocoon Stuff +/datum/tgui_module/appearance_changer/cocoon + name ="Appearance Editor (Cocoon)" + flags = APPEARANCE_ALL_HAIR + customize_usr = TRUE + +/datum/tgui_module/appearance_changer/cocoon/tgui_status(mob/user, datum/tgui_state/state) + //if(!istype(owner.loc, /obj/item/weapon/storage/vore_egg/bugcocoon)) + if(!owner.transforming) + return STATUS_CLOSE + return ..() \ No newline at end of file