mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 11:05:03 +01:00
- Added a real_name variable to DNA, which gets assigned when mobs are created and when preferences are copied as well as when changelings absorb mobs. This is so I could drop the dictionary-style list from changelings, which went list(real_name = \ref[dna]). What this meant was that if you absorbed multiple people whose real_name was "Unknown", you'd only have one dna to show for it. Now all of them will show and will be available to transform into.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4457 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -110,6 +110,7 @@
|
||||
if (!istype(H.dna, /datum/dna) || !H.dna.uni_identity || (length(H.dna.uni_identity) != 32))
|
||||
if(!istype(H.dna, /datum/dna))
|
||||
H.dna = new /datum/dna(null)
|
||||
H.dna.real_name = H.real_name
|
||||
H.check_dna()
|
||||
//Now, deal with gloves.
|
||||
if (H.gloves && H.gloves != src)
|
||||
@@ -171,6 +172,7 @@
|
||||
return 0
|
||||
if (!istype(M.dna, /datum/dna))
|
||||
M.dna = new /datum/dna(null)
|
||||
M.dna.real_name = M.real_name
|
||||
M.check_dna()
|
||||
if (!( src.flags ) & FPRINT)
|
||||
return 0
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
var/uni_identity = null
|
||||
var/b_type = "A+"
|
||||
var/mutantrace = null //The type of mutant race the player is if applicable (i.e. potato-man)
|
||||
var/real_name //Stores the real name of the person who originally got this dna datum. Used primarely for changelings,
|
||||
|
||||
/datum/dna/proc/check_integrity(var/mob/living/carbon/human/character)
|
||||
if(character)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
src.verbs += P.verbpath
|
||||
|
||||
if(!mind.changeling.absorbed_dna.len)
|
||||
mind.changeling.absorbed_dna[real_name] = dna
|
||||
mind.changeling.absorbed_dna += dna
|
||||
return 1
|
||||
|
||||
//removes our changeling verbs
|
||||
@@ -109,7 +109,8 @@
|
||||
usr.visible_message("<span class='danger'>[usr] sucks the fluids from [T]!</span>")
|
||||
T << "<span class='danger'>You have been absorbed by the changeling!</span>"
|
||||
|
||||
changeling.absorbed_dna[T.real_name] = T.dna
|
||||
T.dna.real_name = T.real_name //Set this again, just to be sure that it's properly set.
|
||||
changeling.absorbed_dna += T.dna
|
||||
if(usr.nutrition < 400) usr.nutrition = min((usr.nutrition + T.nutrition), 400)
|
||||
changeling.chem_charges += 10
|
||||
changeling.geneticpoints += 2
|
||||
@@ -119,7 +120,7 @@
|
||||
changeling.absorbed_dna |= T.mind.changeling.absorbed_dna //steal all their loot
|
||||
changeling.absorbedcount += T.mind.changeling.absorbedcount
|
||||
|
||||
T.mind.changeling.absorbed_dna = list("T.real_name"=T.dna)
|
||||
T.mind.changeling.absorbed_dna = list(T.dna)
|
||||
|
||||
if(T.mind.changeling.purchasedpowers)
|
||||
for(var/datum/power/changeling/Tp in T.mind.changeling.purchasedpowers)
|
||||
@@ -153,14 +154,27 @@
|
||||
var/datum/changeling/changeling = changeling_power(5,1,0)
|
||||
if(!changeling) return
|
||||
|
||||
var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in changeling.absorbed_dna
|
||||
var/list/names = list()
|
||||
for(var/datum/dna/DNA in changeling.absorbed_dna)
|
||||
names += "[DNA.real_name]"
|
||||
|
||||
var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names
|
||||
if(!S) return
|
||||
|
||||
var/datum/dna/chosen_dna
|
||||
for(var/datum/dna/DNA in changeling.absorbed_dna)
|
||||
if(S == "[DNA.real_name]")
|
||||
chosen_dna = DNA
|
||||
break
|
||||
|
||||
if(!chosen_dna)
|
||||
return
|
||||
|
||||
changeling.chem_charges -= 5
|
||||
usr.visible_message("<span class='warning'>[usr] transforms!</span>")
|
||||
changeling.geneticdamage = 30
|
||||
usr.dna = changeling.absorbed_dna[S]
|
||||
usr.real_name = S
|
||||
usr.dna = chosen_dna
|
||||
usr.real_name = chosen_dna.real_name
|
||||
updateappearance(usr, usr.dna.uni_identity)
|
||||
domutcheck(usr, null)
|
||||
|
||||
@@ -243,15 +257,28 @@
|
||||
var/datum/changeling/changeling = changeling_power(1,1,0)
|
||||
if(!changeling) return
|
||||
|
||||
var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in changeling.absorbed_dna
|
||||
var/list/names = list()
|
||||
for(var/datum/dna/DNA in changeling.absorbed_dna)
|
||||
names += "[DNA.real_name]"
|
||||
|
||||
var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names
|
||||
if(!S) return
|
||||
|
||||
var/datum/dna/chosen_dna
|
||||
for(var/datum/dna/DNA in changeling.absorbed_dna)
|
||||
if(S == "[DNA.real_name]")
|
||||
chosen_dna = DNA
|
||||
break
|
||||
|
||||
if(!chosen_dna)
|
||||
return
|
||||
|
||||
var/mob/living/carbon/C = usr
|
||||
|
||||
changeling.chem_charges--
|
||||
C.remove_changeling_powers()
|
||||
C.visible_message("<span class='warning'>[C] transforms!</span>")
|
||||
C.dna = changeling.absorbed_dna[S]
|
||||
C.dna = chosen_dna
|
||||
|
||||
var/list/implants = list()
|
||||
for (var/obj/item/weapon/implant/I in C) //Still preserving implants
|
||||
@@ -286,7 +313,7 @@
|
||||
O.gender = MALE
|
||||
O.dna = C.dna
|
||||
C.dna = null
|
||||
O.real_name = S
|
||||
O.real_name = chosen_dna.real_name
|
||||
|
||||
for(var/obj/T in C)
|
||||
del(T)
|
||||
@@ -566,17 +593,33 @@
|
||||
|
||||
var/datum/changeling/changeling = changeling_power(40)
|
||||
if(!changeling) return 0
|
||||
var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in changeling.absorbed_dna
|
||||
|
||||
|
||||
|
||||
var/list/names = list()
|
||||
for(var/datum/dna/DNA in changeling.absorbed_dna)
|
||||
names += "[DNA.real_name]"
|
||||
|
||||
var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in names
|
||||
if(!S) return
|
||||
|
||||
var/datum/dna/chosen_dna
|
||||
for(var/datum/dna/DNA in changeling.absorbed_dna)
|
||||
if(S == "[DNA.real_name]")
|
||||
chosen_dna = DNA
|
||||
break
|
||||
|
||||
if(!chosen_dna)
|
||||
return
|
||||
|
||||
var/mob/living/carbon/T = changeling_sting(40,/mob/proc/changeling_transformation_sting)
|
||||
if(!T) return 0
|
||||
if((HUSK in T.mutations) || (!ishuman(T) && !ismonkey(T)))
|
||||
usr << "<span class='warning'>Our sting appears ineffective against its DNA.</span>"
|
||||
return 0
|
||||
T.visible_message("<span class='warning'>[T] transforms!</span>")
|
||||
T.dna = changeling.absorbed_dna[S]
|
||||
T.real_name = S
|
||||
T.dna = chosen_dna
|
||||
T.real_name = chosen_dna.real_name
|
||||
updateappearance(T, T.dna.uni_identity)
|
||||
domutcheck(T, null)
|
||||
feedback_add_details("changeling_powers","TS")
|
||||
|
||||
@@ -181,6 +181,7 @@
|
||||
|
||||
if(!H.dna)
|
||||
H.dna = new /datum/dna()
|
||||
H.dna.real_name = H.real_name
|
||||
if(ui)
|
||||
H.dna.uni_identity = ui
|
||||
updateappearance(H, ui)
|
||||
|
||||
@@ -910,6 +910,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
|
||||
if(!podman.dna)
|
||||
podman.dna = new /datum/dna()
|
||||
podman.dna.real_name = podman.real_name
|
||||
if(ui)
|
||||
podman.dna.uni_identity = ui
|
||||
updateappearance(podman, ui)
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
|
||||
..()
|
||||
|
||||
if(dna)
|
||||
dna.real_name = real_name
|
||||
|
||||
|
||||
/mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes)
|
||||
if ((!( yes ) || now_pushing))
|
||||
|
||||
@@ -2,10 +2,15 @@
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
|
||||
if(name == "monkey")
|
||||
name = text("monkey ([rand(1, 1000)])")
|
||||
real_name = name
|
||||
if (!(dna))
|
||||
if(gender == NEUTER)
|
||||
gender = pick(MALE, FEMALE)
|
||||
dna = new /datum/dna( null )
|
||||
dna.real_name = real_name
|
||||
dna.uni_identity = "00600200A00E0110148FC01300B009"
|
||||
dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
|
||||
dna.unique_enzymes = md5(name)
|
||||
@@ -18,10 +23,6 @@
|
||||
dna.uni_identity += gendervar
|
||||
dna.uni_identity += "12C"
|
||||
dna.uni_identity += "4E2"
|
||||
|
||||
if(name == "monkey")
|
||||
name = text("monkey ([rand(1, 1000)])")
|
||||
real_name = name
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
@@ -32,7 +32,10 @@
|
||||
if(hud_used) del(hud_used) //remove the hud objects
|
||||
hud_used = new/obj/hud( src )
|
||||
|
||||
if(!dna) dna = new /datum/dna(null)
|
||||
if(!dna)
|
||||
dna = new /datum/dna(null)
|
||||
if(dna)
|
||||
dna.real_name = real_name
|
||||
|
||||
next_move = 1
|
||||
sight |= SEE_SELF
|
||||
|
||||
@@ -671,6 +671,9 @@ datum/preferences
|
||||
|
||||
character.real_name = real_name
|
||||
|
||||
if(character.dna)
|
||||
character.dna.real_name = character.real_name
|
||||
|
||||
character.gender = gender
|
||||
|
||||
character.age = age
|
||||
|
||||
Reference in New Issue
Block a user