mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
Fixes changeling monkey issues
Fixes taking DNA from monkeys, not being able to leave lesser form, and being able to use all stings in lesser form.
This commit is contained in:
@@ -288,7 +288,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/T = target
|
||||
if(!istype(T))
|
||||
if(!istype(T) || issmall(T))
|
||||
user << "<span class='warning'>[T] is not compatible with our biology.</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
/obj/effect/proc_holder/changeling/proc/can_sting(var/mob/user, var/mob/target)
|
||||
if(!ishuman(user)) //typecast everything from mob to carbon from this point onwards
|
||||
return 0
|
||||
if(req_human && !ishuman(user))
|
||||
if(req_human && (!ishuman(user) || issmall(user)))
|
||||
user << "<span class='warning'>We cannot do that in this form!</span>"
|
||||
return 0
|
||||
var/datum/changeling/c = user.mind.changeling
|
||||
|
||||
@@ -336,7 +336,7 @@ var/list/sting_paths
|
||||
|
||||
//Reselect powers
|
||||
/datum/changeling/proc/lingRespec(var/mob/user)
|
||||
if(!ishuman(user))
|
||||
if(!ishuman(user) || issmall(user))
|
||||
user << "<span class='danger'>We can't remove our evolutions in this form!</span>"
|
||||
return
|
||||
if(canrespec)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
//Transform into a human.
|
||||
/obj/effect/proc_holder/changeling/humanform/sting_action(var/mob/living/carbon/user)
|
||||
/obj/effect/proc_holder/changeling/humanform/sting_action(var/mob/living/carbon/human/user)
|
||||
var/datum/changeling/changeling = user.mind.changeling
|
||||
var/list/names = list()
|
||||
for(var/datum/dna/DNA in (changeling.absorbed_dna+changeling.protected_dna))
|
||||
@@ -24,51 +24,18 @@
|
||||
if(!user)
|
||||
return 0
|
||||
user << "<span class='notice'>We transform our appearance.</span>"
|
||||
user.dna.SetSEState(MONKEYBLOCK,0)
|
||||
domutcheck(user, null) // Do a pre-mutcheck to cleanly switch from monkey form.
|
||||
user.dna = chosen_dna
|
||||
user.real_name = chosen_dna.real_name
|
||||
user.flavor_text = ""
|
||||
if(ishuman(user))
|
||||
user.set_species()
|
||||
user.UpdateAppearance()
|
||||
domutcheck(user, null)
|
||||
|
||||
var/list/implants = list()
|
||||
for (var/obj/item/weapon/implant/I in user) //Still preserving implants
|
||||
implants += I
|
||||
|
||||
for(var/obj/item/W in src)
|
||||
user.unEquip(W)
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
if (W)
|
||||
W.loc = user.loc
|
||||
W.dropped(user)
|
||||
W.layer = initial(W.layer)
|
||||
|
||||
var/mob/living/carbon/human/O = new /mob/living/carbon/human( user, delay_ready_dna=1 )
|
||||
if (user.dna.GetUIState(DNA_UI_GENDER))
|
||||
O.gender = FEMALE
|
||||
else
|
||||
O.gender = MALE
|
||||
O.dna = user.dna.Clone()
|
||||
user.dna = null
|
||||
O.real_name = chosen_dna.real_name
|
||||
O.set_species()
|
||||
for(var/obj/T in user)
|
||||
del(T)
|
||||
|
||||
O.loc = user.loc
|
||||
|
||||
O.UpdateAppearance()
|
||||
domutcheck(O, null)
|
||||
O.setToxLoss(user.getToxLoss())
|
||||
O.adjustBruteLoss(user.getBruteLoss())
|
||||
O.setOxyLoss(user.getOxyLoss())
|
||||
O.adjustFireLoss(user.getFireLoss())
|
||||
O.stat = user.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
|
||||
user.mind.transfer_to(O)
|
||||
O.changeling_update_languages(changeling.absorbed_languages)
|
||||
O.mind.changeling.purchasedpowers -= src
|
||||
changeling.purchasedpowers -= src
|
||||
//O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/lesserform(null)
|
||||
feedback_add_details("changeling_powers","LFT")
|
||||
qdel(user)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
if(user.has_brain_worms())
|
||||
user << "<span class='warning'>We cannot perform this ability at the present time!</span>"
|
||||
return
|
||||
user << "<span class='warning'>Our genes cry out!</span>"
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -29,5 +28,6 @@
|
||||
for(var/obj/item/weapon/implant/W in H)
|
||||
implants += W
|
||||
H.monkeyize()
|
||||
changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
feedback_add_details("changeling_powers","LF")
|
||||
return 1
|
||||
Reference in New Issue
Block a user