mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-11 15:15:32 +01:00
protean host assimilation
This commit is contained in:
@@ -137,6 +137,12 @@
|
||||
set hidden = 1
|
||||
humanform.nano_latch()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/proc/nano_assimilate()
|
||||
set name = "Assimilate Host"
|
||||
set desc = "Allows a protean to assimilate a latched host, allowing them to devour them right away."
|
||||
set hidden = 1
|
||||
humanform.nano_assimilate()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/Login()
|
||||
..()
|
||||
plane_holder.set_vis(VIS_AUGMENTED, 1)
|
||||
|
||||
@@ -595,6 +595,32 @@
|
||||
else
|
||||
to_chat(protie, span_warning("You need to be grabbing a humanoid mob aggressively to latch onto them."))
|
||||
|
||||
/mob/living/carbon/human/proc/nano_assimilate()
|
||||
set name = "Assimilate Host"
|
||||
set desc = "Allows a protean to assimilate a latched host, allowing them to devour them right away."
|
||||
set hidden = 1
|
||||
|
||||
var/mob/living/protie = src
|
||||
var/mob/living/carbon/human/target
|
||||
var/datum/species/protean/S = src.species
|
||||
if(nano_dead_check(src))
|
||||
return
|
||||
if(temporary_form)
|
||||
protie = temporary_form
|
||||
if(protie.loc == S.OurRig)
|
||||
target = S.OurRig.wearer
|
||||
if(!target)
|
||||
to_chat(protie, span_vwarning("You need a host to assimilate."))
|
||||
return
|
||||
if(!protie.can_be_drop_pred || !target.can_be_drop_prey || !target.devourable)
|
||||
to_chat(protie, span_vwarning("You can't assimilate your current host."))
|
||||
return
|
||||
target.drop_from_inventory(S.OurRig)
|
||||
to_chat(protie, span_vnotice("You assimilate your host."))
|
||||
to_chat(target, span_vwarning("You feel yourself sink deeper into the suit!"))
|
||||
target.forceMove(protie.vore_selected)
|
||||
nano_blobform(TRUE)
|
||||
|
||||
/// /// /// A helper to reuse
|
||||
/mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R)
|
||||
if(istype(R))
|
||||
@@ -704,6 +730,12 @@
|
||||
icon_state = "latch"
|
||||
to_call = /mob/living/carbon/human/proc/nano_latch
|
||||
|
||||
/obj/effect/protean_ability/assimilate_host
|
||||
ability_name = "Assimilate Host"
|
||||
desc = "Allows a protean to assimilate a latched host, allowing them to devour them right away."
|
||||
icon_state = "assimilate"
|
||||
to_call = /mob/living/carbon/human/proc/nano_assimilate
|
||||
|
||||
/obj/effect/protean_ability/copy_form
|
||||
ability_name = "Copy Form"
|
||||
desc = "If you are aggressively grabbing someone, with their consent, you can turn into a copy of them. (Without their name)."
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
/mob/living/carbon/human/proc/nano_copy_body,
|
||||
/mob/living/carbon/human/proc/appearance_switch,
|
||||
/mob/living/carbon/human/proc/nano_latch,
|
||||
/mob/living/carbon/human/proc/nano_assimilate,
|
||||
/mob/living/proc/set_size,
|
||||
/mob/living/carbon/human/proc/nano_change_fitting, //These verbs are displayed normally,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_hair,
|
||||
@@ -239,20 +240,22 @@
|
||||
/datum/species/protean/handle_death(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return //No body?
|
||||
if(OurRig.dead)
|
||||
return
|
||||
OurRig.dead = 1
|
||||
if(OurRig)
|
||||
if(OurRig.dead)
|
||||
return
|
||||
OurRig.dead = 1
|
||||
var/mob/temp = H
|
||||
if(H.temporary_form)
|
||||
temp = H.temporary_form
|
||||
playsound(temp, 'sound/voice/borg_deathsound.ogg', 50, 1)
|
||||
temp.visible_message(span_bold("[temp.name]") + " shudders and retreats inwards, coalescing into a single core componant!")
|
||||
to_chat(temp, span_warning("You've died as a Protean! While dead, you will be locked to your core RIG control module until you can be repaired. Instructions to your revival can be found in the Examine tab when examining your module."))
|
||||
if(H.temporary_form)
|
||||
if(!istype(H.temporary_form.loc, /obj/item/rig/protean))
|
||||
if(OurRig)
|
||||
if(H.temporary_form)
|
||||
if(!istype(H.temporary_form.loc, /obj/item/rig/protean))
|
||||
H.nano_rig_transform(1)
|
||||
else
|
||||
H.nano_rig_transform(1)
|
||||
else
|
||||
H.nano_rig_transform(1)
|
||||
pseudodead = 1
|
||||
|
||||
/datum/species/protean/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
|
||||
Reference in New Issue
Block a user