Files
S.P.L.U.R.T-Station-13/code/citadel/genetics.dm
Poojawa 1308fc7be5 purge the rainbow
renames 'narky' folder to 'citadel'
2016-08-04 22:44:07 -05:00

136 lines
3.8 KiB
Plaintext

var/const/COLOUR_LIST_SIZE=4
proc/sanitize_colour_list(var/list/lst=null)
if(!lst||!lst.len)
lst=new/list(COLOUR_LIST_SIZE)
if(lst.len!=COLOUR_LIST_SIZE)
var/new_lst[COLOUR_LIST_SIZE]
for(var/x=1,x<=COLOUR_LIST_SIZE,x++)
new_lst[x]=lst[x]
lst=new_lst
return lst
proc/generate_colour_icon(var/fil_chk=null,var/state=null,var/list/lst=null,var/add_layer=0,var/offset_x=0,var/offset_y=0,var/overlay_only=0,var/human=0)
if(!fil_chk||!state)return null
lst=sanitize_colour_list(lst)
var/icon/chk=new/icon(fil_chk)
var/list/available_states=chk.IconStates()
var/list/rtn_lst = list()
if(!overlay_only&&available_states.Find("[state]"))
rtn_lst += image("icon"=fil_chk, "icon_state"="[state]", "pixel_y"=offset_y, "pixel_x"=offset_x, "layer"=add_layer)
var/chk_len=human ? 1 : lst.len
for(var/x=1,x<=chk_len,x++)
if(!lst[x]&&!human)continue
var/state_check="[state]_[x]"
if(x==1)
if(human)
state_check="[state]_h"
else
if(!available_states.Find("[state_check]"))
state_check="[state]_h"
if(available_states.Find("[state_check]"))
var/image/colourized = image("icon"=fil_chk, "icon_state"="[state_check]", "pixel_y"=offset_y, "pixel_x"=offset_x, "layer"=add_layer)
var/new_color = "#" + "[human ? human : lst[x]]"
colourized.color = new_color
rtn_lst += colourized
return rtn_lst
/mob/living/carbon/human/var/heterochromia=0
/datum/dna
var/mutanttail //Narky code~
var/mutantwing
var/wingcolor="FFF"
var/special_color[COLOUR_LIST_SIZE]
var/global/const/COCK_NONE=0
var/global/const/COCK_NORMAL=1
var/global/const/COCK_HYPER=2
var/global/const/COCK_DOUBLE=3
var/list/cock=list("has"=COCK_NONE,"type"="human","color"="900")
var/vagina=0
var/datum/special_mutant/special
var/taur=0 //TEMP!
var/mob/living/simple_animal/naga_segment/naga=null //ALSO TEMP!
/* proc/generateExtraData()
var/list/EDL=list(
"race"=mutantrace,
"tail"=mutanttail,
"sc"=special_color,
"cock"=cock,
"vagina"=vagina)
return EDL
proc/addExtraData(var/list/EDL, var/setit=0)
if(EDL["race"]||setit)
mutantrace=EDL["race"]
if(EDL["tail"]||setit)
mutanttail=EDL["tail"]
if(EDL["sc"]||setit)
special_color=EDL["sc"]
if(EDL["cock"]||setit)
cock=EDL["cock"]
if(!isnull(EDL["vagina"])||setit)
vagina=EDL["vagina"]*
proc/setExtraData(var/list/EDL)*/
/datum/special_mutant
proc/generate_overlay()
return 0
proc/generate_underlay()
return 0
/datum/dna/proc/mutantrace() //Easy legacy support!
if(species)
return species.id
else
return "human"
/datum/dna/proc/generate_race_block()
var/block_gen="fff"
if(species_list[mutantrace()])
//block_gen = construct_block(species_list.Find(mutantrace), species_list.len+1)
block_gen = construct_block(species_list.Find(species.id), species_list.len+1)
else
block_gen = construct_block(species_list.len+1, species_list.len+1)
return block_gen
/mob/living/proc/set_mutantrace(var/new_mutantrace=null)
new_mutantrace=kpcode_race_san(new_mutantrace)
var/datum/dna/dna=has_dna(src)
if(!dna)return
if(new_mutantrace)
//dna.mutantrace=new_mutantrace
if(species_list.Find(new_mutantrace))
//var/typ=species_list[species_list.Find(dna.species.id)]
//dna.species=new typ()
dna.species=kpcode_race_get(new_mutantrace)
dna.uni_identity = setblock(dna.uni_identity, DNA_MUTANTRACE_BLOCK, dna.generate_race_block())
regenerate_icons()
/datum/dna/proc/generate_cock_block()
var/cock_block=0
if(cock["has"])
cock_block+=1
if(vagina)
cock_block+=2
return construct_block(cock_block+1, 4)
/mob/living/proc/set_cock_block()
var/datum/dna/dna=has_dna(src)
if(!dna)return
dna.uni_identity = setblock(dna.uni_identity, DNA_COCK_BLOCK, dna.generate_cock_block())
/mob/living/proc/is_taur()
if(istype(src,/mob/living/carbon/human)&&src:dna&&src:dna:taur)
if(src:dna:species&&kpcode_cantaur(src:dna:species))
return 1
return 0