diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 77991e1006..dd7b81c2a7 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -71,6 +71,7 @@ verbs |= /mob/living/proc/usehardsuit verbs |= /mob/living/simple_mob/protean_blob/proc/nano_partswap verbs |= /mob/living/simple_mob/protean_blob/proc/nano_regenerate + verbs |= /mob/living/simple_mob/protean_blob/proc/nano_metalnom verbs |= /mob/living/simple_mob/protean_blob/proc/nano_blobform verbs |= /mob/living/simple_mob/protean_blob/proc/nano_rig_transform verbs |= /mob/living/simple_mob/protean_blob/proc/appearance_switch @@ -104,6 +105,13 @@ set hidden = 1 humanform.nano_blobform() +/mob/living/simple_mob/protean_blob/proc/nano_metalnom() + set name = "Ref - Store Metals" + set desc = "If you're holding a stack of material, you can consume some and store it for later." + set category = "Abilities" + set hidden = 1 + humanform.nano_metalnom() + /mob/living/simple_mob/protean_blob/proc/nano_rig_transform() set name = "Modify Form - Hardsuit" set desc = "Allows a protean to retract its mass into its hardsuit module at will." @@ -285,7 +293,7 @@ datum/riding/simple_mob/protean_blob/handle_vehicle_layer() else return ..() -/mob/living/simple_mob/protean_blob/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!") +/mob/living/simple_mob/protean_blob/death(gibbed, deathmessage = "Coalesces inwards, retreating into their core componants") if(humanform) humanform.death(gibbed, deathmessage) else diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm index 0794b5ade6..cb681ecc24 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_powers.dm @@ -203,15 +203,19 @@ set category = "Abilities" set hidden = 1 + var/mob/living/caller = src + if(temporary_form) + caller = temporary_form + var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory() //Missing the organ that does this if(!istype(refactory)) - to_chat(src,"You don't have a working refactory module!") + to_chat(caller,"You don't have a working refactory module!") return - var/held = get_active_hand() + var/held = caller.get_active_hand() if(!istype(held,/obj/item/stack/material)) - to_chat(src,"You aren't holding a stack of materials in your active hand...!") + to_chat(caller,"You aren't holding a stack of materials in your active hand...!") return var/obj/item/stack/material/matstack = held @@ -220,23 +224,23 @@ for(var/material in PROTEAN_EDIBLE_MATERIALS) if(material == substance) allowed = 1 if(!allowed) - to_chat(src,"You can't process [substance]!") - return //Only a few things matter, the rest are best not cluttering the lists. + to_chat(caller,"You can't process [substance]!") + return - var/howmuch = input(src,"How much do you want to store? (0-[matstack.get_amount()])","Select amount") as null|num - if(!howmuch || matstack != get_active_hand() || howmuch > matstack.get_amount()) + var/howmuch = input(caller,"How much do you want to store? (0-[matstack.get_amount()])","Select amount") as null|num + if(!howmuch || matstack != caller.get_active_hand() || howmuch > matstack.get_amount()) return //Quietly fail var/actually_added = refactory.add_stored_material(substance,howmuch*matstack.perunit) matstack.use(CEILING((actually_added/matstack.perunit), 1)) if(actually_added && actually_added < howmuch) - to_chat(src,"Your refactory module is now full, so only [actually_added] units were stored.") - visible_message("[src] nibbles some of the [substance] right off the stack!") + to_chat(caller,"Your refactory module is now full, so only [actually_added] units were stored.") + visible_message("[caller] nibbles some of the [substance] right off the stack!") else if(actually_added) - to_chat(src,"You store [actually_added] units of [substance].") - visible_message("[src] devours some of the [substance] right off the stack!") + to_chat(caller,"You store [actually_added] units of [substance].") + visible_message("[caller] devours some of the [substance] right off the stack!") else - to_chat(src,"You're completely capped out on [substance]!") + to_chat(caller,"You're completely capped out on [substance]!") //// // Blob Form @@ -375,25 +379,37 @@ target = S.OurRig.wearer if(target) target.drop_from_inventory(S.OurRig) + to_chat(caller, "You detach from your host.") else - to_chat(caller, "You aren't being worn, dummy.") + to_chat(caller, "You aren't being worn, dummy.") return var/obj/held_item = caller.get_active_hand() if(istype(held_item,/obj/item/weapon/grab)) var/obj/item/weapon/grab/G = held_item - if(istype(G.affecting, target)) + if(istype(G.affecting, /mob/living/carbon/human)) + target = G.affecting + if(istype(target.species, /datum/species/protean)) + to_chat(caller, "You can't latch onto a fellow Protean!") if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) - if(do_after(caller, 30, target)) + caller.visible_message("[caller] is attempting to latch onto [target]!", "You attempt to latch onto [target]!") + if(do_after(caller, 50, target)) if(G.loc == caller && G.state >= GRAB_AGGRESSIVE) + target.drop_from_inventory(target.back) caller.visible_message("[caller] latched onto [target]!", "You latch yourself onto [target]!") target.Weaken(3) nano_rig_transform() - target.drop_from_inventory(back) + spawn(2) //Have to give time for the above proc to resolve + S.OurRig.forceMove(target) target.equip_to_slot_if_possible(S.OurRig, slot_back) + S.OurRig.Moved() + spawn(1) //Same here :( + S.OurRig.wearer = target + else + to_chat(caller, "You need a more aggressive grab to do this!") else - to_chat(caller, "You can only latch onto humanoid mobs!") + to_chat(caller, "You can only latch onto humanoid mobs!") else - to_chat(caller, "You need to be grabbing a humanoid mob aggressively to latch onto them.") + to_chat(caller, "You need to be grabbing a humanoid mob aggressively to latch onto them.") /// /// /// A helper to reuse /mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R)