mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge pull request #5962 from KasparoVy/fixes-monochromatic-bugs
Refines Cloning, Fixes a Couple Genetics-related Bugs.
This commit is contained in:
@@ -619,7 +619,7 @@
|
||||
numbers += H.mind.initial_account.account_number
|
||||
numbers += H.mind.initial_account.remote_access_pin
|
||||
if(numbers.len>0)
|
||||
to_chat(usr, "<span class='notice'>b>Numbers</b>: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name].</span>")
|
||||
to_chat(usr, "<span class='notice'><b>Numbers</b>: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name].</span>")
|
||||
to_chat(usr, "<span class='notice'><b>Thoughts</b>: [M.name] is currently [thoughts].</span>")
|
||||
|
||||
if(EMPATH in M.mutations)
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
clonemind = locate(R.mind)
|
||||
if(!istype(clonemind)) //not a mind
|
||||
return 0
|
||||
if( clonemind.current && clonemind.current.stat != DEAD ) //mind is associated with a non-dead body
|
||||
if(clonemind.current && clonemind.current.stat != DEAD) //mind is associated with a non-dead body
|
||||
return 0
|
||||
if(clonemind.active) //somebody is using that mind
|
||||
if(ckey(clonemind.key) != R.ckey)
|
||||
@@ -229,12 +229,21 @@
|
||||
spawn(30)
|
||||
eject_wait = 0
|
||||
|
||||
if(!R.dna)
|
||||
R.dna = new /datum/dna()
|
||||
|
||||
var/mob/living/carbon/human/H = new /mob/living/carbon/human(src, R.dna.species)
|
||||
occupant = H
|
||||
|
||||
if(!R.dna.real_name) //to prevent null names
|
||||
R.dna.real_name = "clone ([rand(0,999)])"
|
||||
H.real_name = R.dna.real_name
|
||||
R.dna.real_name = H.real_name
|
||||
else
|
||||
H.real_name = R.dna.real_name
|
||||
|
||||
H.dna = R.dna.Clone()
|
||||
|
||||
for(var/datum/language/L in R.languages)
|
||||
H.add_language(L.name)
|
||||
|
||||
//Get the clone body ready
|
||||
H.adjustCloneLoss(190) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite
|
||||
@@ -256,31 +265,23 @@
|
||||
beginning to regenerate in a cloning pod. You will
|
||||
become conscious when it is complete.</span>"})
|
||||
|
||||
if(!R.dna)
|
||||
H.dna = new /datum/dna()
|
||||
H.dna.real_name = H.real_name
|
||||
H.dna.ready_dna(H)
|
||||
else
|
||||
H.dna = R.dna.Clone()
|
||||
domutcheck(H, null, MUTCHK_FORCED) //Ensures species that get powers by the species proc handle_dna keep them
|
||||
|
||||
if(efficiency > 2 && efficiency < 5 && prob(25))
|
||||
randmutb(H)
|
||||
if(efficiency > 5 && prob(20))
|
||||
randmutg(H)
|
||||
if(efficiency < 3 && prob(50))
|
||||
randmutb(H)
|
||||
|
||||
H.dna.UpdateSE()
|
||||
H.dna.UpdateUI()
|
||||
|
||||
H.set_species(R.dna.species)
|
||||
H.sync_organ_dna(1) // It's literally a fresh body as you can get, so all organs properly belong to it
|
||||
H.UpdateAppearance()
|
||||
|
||||
H.update_body()
|
||||
update_icon()
|
||||
|
||||
for(var/datum/language/L in R.languages)
|
||||
H.add_language(L.name)
|
||||
|
||||
H.suiciding = 0
|
||||
attempting = 0
|
||||
return 1
|
||||
|
||||
@@ -2098,37 +2098,6 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
I.robotize()
|
||||
|
||||
character.dna.b_type = b_type
|
||||
if(disabilities & DISABILITY_FLAG_FAT && character.species.flags & CAN_BE_FAT)
|
||||
character.dna.SetSEState(FATBLOCK,1,1)
|
||||
character.mutations += FAT
|
||||
character.mutations += OBESITY
|
||||
character.overeatduration = 600
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_NEARSIGHTED)
|
||||
character.dna.SetSEState(GLASSESBLOCK,1,1)
|
||||
character.disabilities|=NEARSIGHTED
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_EPILEPTIC)
|
||||
character.dna.SetSEState(EPILEPSYBLOCK,1,1)
|
||||
character.disabilities|=EPILEPSY
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_DEAF)
|
||||
character.dna.SetSEState(DEAFBLOCK,1,1)
|
||||
character.disabilities|=DEAF
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_BLIND)
|
||||
character.dna.SetSEState(BLINDBLOCK,1,1)
|
||||
character.disabilities|=BLIND
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_MUTE)
|
||||
character.dna.SetSEState(MUTEBLOCK,1,1)
|
||||
character.disabilities |= MUTE
|
||||
|
||||
S.handle_dna(character)
|
||||
|
||||
if(character.dna.dirtySE)
|
||||
character.dna.UpdateSE()
|
||||
domutcheck(character)
|
||||
|
||||
// Wheelchair necessary?
|
||||
var/obj/item/organ/external/l_foot = character.get_organ("l_foot")
|
||||
@@ -2169,6 +2138,38 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
|
||||
character.change_eye_color(r_eyes, g_eyes, b_eyes)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_FAT && character.species.flags & CAN_BE_FAT)
|
||||
character.dna.SetSEState(FATBLOCK,1,1)
|
||||
character.mutations += FAT
|
||||
character.mutations += OBESITY
|
||||
character.overeatduration = 600
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_NEARSIGHTED)
|
||||
character.dna.SetSEState(GLASSESBLOCK,1,1)
|
||||
character.disabilities |= NEARSIGHTED
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_EPILEPTIC)
|
||||
character.dna.SetSEState(EPILEPSYBLOCK,1,1)
|
||||
character.disabilities |= EPILEPSY
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_DEAF)
|
||||
character.dna.SetSEState(DEAFBLOCK,1,1)
|
||||
character.disabilities |= DEAF
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_BLIND)
|
||||
character.dna.SetSEState(BLINDBLOCK,1,1)
|
||||
character.disabilities |= BLIND
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_MUTE)
|
||||
character.dna.SetSEState(MUTEBLOCK,1,1)
|
||||
character.disabilities |= MUTE
|
||||
|
||||
S.handle_dna(character)
|
||||
|
||||
if(character.dna.dirtySE)
|
||||
character.dna.UpdateSE()
|
||||
domutcheck(character, null, MUTCHK_FORCED)
|
||||
|
||||
character.dna.ready_dna(character, flatten_SE = 0)
|
||||
character.sync_organ_dna(assimilate=1)
|
||||
character.UpdateAppearance()
|
||||
|
||||
@@ -49,9 +49,6 @@
|
||||
dna.real_name = real_name
|
||||
sync_organ_dna(1)
|
||||
|
||||
if(species)
|
||||
species.handle_dna(src)
|
||||
|
||||
UpdateAppearance()
|
||||
|
||||
/mob/living/carbon/human/OpenCraftingMenu()
|
||||
@@ -1594,6 +1591,7 @@
|
||||
dna.real_name = real_name
|
||||
|
||||
species.handle_post_spawn(src)
|
||||
species.handle_dna(src) //Give them whatever special dna business they got.
|
||||
|
||||
spawn(0)
|
||||
overlays.Cut()
|
||||
|
||||
Reference in New Issue
Block a user