mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-24 09:14:17 +00:00
58 lines
2.4 KiB
Plaintext
58 lines
2.4 KiB
Plaintext
/obj/effect/proc_holder/changeling/swap_form
|
|
name = "Swap Forms"
|
|
desc = "We force ourselves into the body of another form, pushing their consciousness into the form we left behind."
|
|
helptext = "We will bring all our abilities with us, but we will lose our old form DNA in exchange for the new one. The process will seem suspicious to any observers."
|
|
chemical_cost = 40
|
|
dna_cost = 1
|
|
req_human = 1 //Monkeys can't grab
|
|
|
|
/obj/effect/proc_holder/changeling/swap_form/can_sting(var/mob/living/carbon/user)
|
|
if(!..())
|
|
return
|
|
var/obj/item/weapon/grab/G = user.get_active_hand()
|
|
if(!istype(G) || (G.state < GRAB_AGGRESSIVE))
|
|
to_chat(user, "<span class='warning'>We must have an aggressive grab on creature in our active hand to do this!</span>")
|
|
return
|
|
var/mob/living/carbon/human/target = G.affecting
|
|
if((NOCLONE || SKELETON || HUSK) in target.mutations)
|
|
to_chat(user, "<span class='warning'>DNA of [target] is ruined beyond usability!</span>")
|
|
return
|
|
if(!istype(target) || issmall(target) || target.species.flags & NO_DNA || target.species.flags & NO_SCAN || target.species.flags & NO_BLOOD)
|
|
to_chat(user, "<span class='warning'>[target] is not compatible with this ability.</span>")
|
|
return
|
|
return 1
|
|
|
|
|
|
/obj/effect/proc_holder/changeling/swap_form/sting_action(var/mob/living/carbon/user)
|
|
var/obj/item/weapon/grab/G = user.get_active_hand()
|
|
var/mob/living/carbon/human/target = G.affecting
|
|
var/datum/changeling/changeling = user.mind.changeling
|
|
|
|
to_chat(user, "<span class='notice'>We tighen our grip. We must hold still....</span>")
|
|
target.do_jitter_animation(500)
|
|
user.do_jitter_animation(500)
|
|
|
|
if(!do_mob(user,target,20))
|
|
to_chat(user, "<span class='warning'>The body swap has been interrupted!</span>")
|
|
return
|
|
|
|
to_chat(target, "<span class='userdanger'>[user] tightens their grip as a painful sensation invades your body.</span>")
|
|
|
|
if(!changeling.has_dna(target.dna))
|
|
changeling.absorb_dna(target, user)
|
|
changeling.protected_dna -= user.dna
|
|
changeling.absorbed_dna -= user.dna
|
|
|
|
var/mob/dead/observer/ghost = target.ghostize(0)
|
|
user.mind.transfer_to(target)
|
|
if(ghost && ghost.mind)
|
|
ghost.mind.transfer_to(user)
|
|
user.key = ghost.key
|
|
|
|
user.Paralyse(2)
|
|
target.add_language("Changeling")
|
|
user.remove_language("Changeling")
|
|
transfer_changeling_powers(user, target)
|
|
|
|
to_chat(target, "<span class='warning'>Our genes cry out as we swap our [user] form for [target].</span>")
|