Files
CHOMPStation2/code/WorkInProgress/organs/organs.dm
2012-01-06 16:41:47 -05:00

465 lines
11 KiB
Plaintext

/obj/organstructure //used obj for the "contents" var
name = "organs"
var/species = "mob" //for speaking in unknown languages purposes
var/obj/organ/limb/arms/arms = null
var/obj/organ/limb/legs/legs = null
var/obj/organ/torso/torso = null
var/obj/organ/head/head = null
proc/GetSpeciesName()
var/list/speciesPresent = list()
for(var/obj/organ/organ in src) //only external organs count, since it's judging by the appearance
if(speciesPresent[organ.species])
speciesPresent[organ.species]++
else
speciesPresent[organ.species] = 1 //not sure, but I think it's not initialised before that, so can't ++
var/list/dominantSpecies = list()
for(var/speciesName in speciesPresent)
if(!dominantSpecies.len)
dominantSpecies += speciesName
else
if(speciesPresent[dominantSpecies[1]] == speciesPresent[speciesName])
dominantSpecies += speciesName
else if(speciesPresent[dominantSpecies[1]] < speciesPresent[speciesName])
dominantSpecies = list(speciesName)
if(!dominantSpecies.len)
species = "mob"
else
species = pick(dominantSpecies)
return species
proc/RecalculateStructure()
var/list/organs = GetAllContents()
arms = locate(/obj/organ/limb/arms) in organs
legs = locate(/obj/organ/limb/legs) in organs
torso = locate(/obj/organ/torso) in organs
head = locate(/obj/organ/head) in organs
GetSpeciesName()
return
proc/ProcessOrgans()
set background = 1
var/list/organs = GetAllContents()
for(var/name in organs)
var/obj/organ/organ = organs[name]
organ.ProcessOrgan()
return
New()
..()
RecalculateStructure()
/obj/organstructure/human
name = "human organs"
New()
new /obj/organ/torso/human(src)
..()
/obj/organstructure/alien
name = "alien organs"
New()
new /obj/organ/torso/alien(src)
..()
/obj/organ
name = "organ"
//All types
var/organType = 0 //CYBER and SPELL go here
var/species = "mob"
var/obj/organstructure/rootOrganStructure = null
New(location)
..()
rootOrganStructure = FindRootStructure()
proc/FindRootStructure()
if(istype(loc,/obj/organ))
var/obj/organ/parent = loc
return parent.FindRootStructure()
else if(istype(loc,/obj/organstructure))
return loc
return null
proc/ProcessOrgan()
return
/obj/organ/torso
name = "torso"
var/maxHealth = 50 //right now, the mob's (only humans for now) health depends only on it. Will be fixed later
var/ear_damage = null//Carbon
var/cloneloss = 0//Carbon
var/nodamage = 0
// flags = NOREACT //uncomment this out later
var/viruses = list() // replaces var/datum/disease/virus
var/list/resistances = list()
var/datum/disease/virus = null
var/emote_allowed = 1
var/sdisabilities = 0//Carbon
var/disabilities = 0//Carbon
var/monkeyizing = null//Carbon
var/lying = 0.0
var/resting = 0.0//Carbon
var/sleeping = 0.0//Carbon
var/oxyloss = 0.0//Living
var/toxloss = 0.0//Living
var/fireloss = 0.0//Living
var/bruteloss = 0.0//Living
var/timeofdeath = 0.0//Living
var/rejuv = null
var/antitoxs = null
var/plasma = null
var/cpr_time = 1.0//Carbon
var/health = 100//Living
var/bodytemperature = 310.055 //98.7 F
var/bhunger = 0//Carbon
var/nutrition = 400.0//Carbon
var/overeatduration = 0 // How long this guy is overeating //Carbon
var/paralysis = 0.0
var/stunned = 0.0
var/weakened = 0.0
var/losebreath = 0.0//Carbon
var/obj/item/weapon/storage/s_active = null//Carbon
var/inertia_dir = 0
var/datum/dna/dna = null//Carbon
var/radiation = 0.0//Carbon
var/mutations = 0//Carbon
//telekinesis = 1
//firemut = 2
//xray = 4
//hulk = 8
//clumsy = 16
//obese = 32
//husk = 64
/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
//0 is off, 1 is normal, 2 is for ninjas.
var/incorporeal_move = 0
//The last mob/living/carbon to push/drag/grab this mob (mostly used by Metroids friend recognition)
var/mob/living/carbon/LAssailant = null
/obj/organ/torso/human
name = "human torso"
species = "human"
maxHealth = 100
var/underwear = 1//Human
var/obj/item/weapon/back = null//Human/Monkey
var/obj/item/weapon/tank/internal = null//Human/Monkey
var/alien_egg_flag = 0//Have you been infected?
var/last_special = 0
New()
..()
new /obj/organ/limb/arms/human(src)
new /obj/organ/limb/legs/human(src)
new /obj/organ/head/human(src)
/obj/organ/torso/alien
name = "alien torso"
species = "alien"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/alien(src)
new /obj/organ/limb/legs/alien(src)
new /obj/organ/head/alien(src)
/obj/organ/limb
name = "limb"
/obj/organ/limb/arms
name = "arms"
var/minDamage = 5 //punching damage
var/maxDamage = 5
var/atom/movable/pulling = null
var/hand = null
var/obj/item/weapon/handcuffs/handcuffed = null//Living
var/obj/item/l_hand = null//Living
var/obj/item/r_hand = null//Living
var/in_throw_mode = 0
// var/strangleDelay = 1 //The code is a bit too complicated for that right now
/obj/organ/limb/arms/alien
name = "alien arms"
species = "alien"
minDamage = 5
maxDamage = 15
/obj/organ/limb/arms/human
name = "human arms"
species = "human"
minDamage = 1
maxDamage = 9
/obj/organ/limb/legs
name = "legs"
var/moveRunDelay = 1 //not sure about how that works
var/moveWalkDelay = 7
//var/knockdownResist = 0
var/next_move = null
var/prev_move = null
var/canmove = 1.0
var/obj/structure/stool/buckled = null//Living
var/footstep = 1
/obj/organ/limb/legs/human
name = "human legs"
species = "human"
/obj/organ/limb/legs/alien
name = "alien legs"
species = "alien"
/obj/organ/head
name = "head"
var/stuttering = null//Carbon
var/druggy = 0//Carbon
var/confused = 0//Carbon
var/drowsyness = 0.0//Carbon
var/dizziness = 0//Carbon
var/is_dizzy = 0
var/is_jittery = 0
var/jitteriness = 0//Carbon
var/r_epil = 0
var/r_ch_cou = 0
var/r_Tourette = 0//Carbon
var/miming = null //checks if the guy is a mime//Human
var/silent = null //Can't talk. Value goes down every life proc.//Human
var/voice_name = "unidentifiable voice"
var/voice_message = null // When you are not understood by others (replaced with just screeches, hisses, chimpers etc.)
var/say_message = null // When you are understood by others. Currently only used by aliens and monkeys in their say_quote procs
var/coughedtime = null
var/job = null//Living
var/const/blindness = 1//Carbon
var/const/deafness = 2//Carbon
var/const/muteness = 4//Carbon
var/brainloss = 0//Carbon
var/robot_talk_understand = 0
var/alien_talk_understand = 0
var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
var/ear_deaf = null//Carbon
var/eye_blind = null//Carbon
var/eye_blurry = null//Carbon
var/eye_stat = null//Living, potentially Carbon
var/blinded = null
var/shakecamera = 0
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
var/obj/proc_holder/spell/list/spell_list = list()
/obj/organ/head/human
name = "human head"
species = "human"
var/obj/item/clothing/mask/wear_mask = null//Carbon
/obj/organ/head/alien
name = "alien head"
species = "alien"
/obj/organ/limb/arms/alien
name = "alien arms"
species = "alien"
minDamage = 5
maxDamage = 15
/obj/organ/limb/legs/alien
name = "alien legs"
species = "alien"
/obj/organ/head/alien
name = "alien head"
species = "alien"
// ++++STUB ORGAN STRUCTURE. THIS IS THE DEFAULT STRUCTURE. USED TO PREVENT EXCEPTIONS++++
/obj/organstructure/stub
name = "stub organs"
New()
new /obj/organ/torso/stub(src)
..()
/obj/organ/torso/stub
name = "stub torso"
species = "stub"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/stub(src)
new /obj/organ/limb/legs/stub(src)
new /obj/organ/head/stub(src)
/obj/organ/limb/arms/stub
name = "stub arms"
species = "stub"
/obj/organ/limb/legs/stub
name = "stub legs"
species = "stub"
/obj/organ/head/stub
name = "stub head"
species = "stub"
// ++++STUB ORGAN STRUCTURE. END++++
// ++++MONKEY++++
/obj/organstructure/monkey
name = "monkey organs"
New()
new /obj/organ/torso/monkey(src)
..()
/obj/organ/torso/monkey
name = "monkey torso"
species = "monkey"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/monkey(src)
new /obj/organ/limb/legs/monkey(src)
new /obj/organ/head/monkey(src)
/obj/organ/limb/arms/monkey
name = "monkey arms"
species = "monkey"
/obj/organ/limb/legs/monkey
name = "monkey legs"
species = "monkey"
/obj/organ/head/monkey
name = "monkey head"
species = "monkey"
// +++++CYBORG+++++
/obj/organstructure/cyborg
name = "cyborg organs"
New()
new /obj/organ/torso/cyborg(src)
..()
/obj/organ/torso/cyborg
name = "cyborg torso"
species = "cyborg"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/cyborg(src)
new /obj/organ/limb/legs/cyborg(src)
new /obj/organ/head/cyborg(src)
/obj/organ/limb/arms/cyborg
name = "cyborg arms"
species = "cyborg"
/obj/organ/limb/legs/cyborg
name = "cyborg legs"
species = "cyborg"
/obj/organ/head/cyborg
name = "cyborg head"
species = "cyborg"
// +++++AI++++++
/obj/organstructure/AI
name = "AI organs"
New()
new /obj/organ/torso/AI(src)
..()
/obj/organ/torso/AI
name = "AI torso"
species = "AI"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/AI(src)
new /obj/organ/limb/legs/AI(src)
new /obj/organ/head/AI(src)
/obj/organ/limb/arms/AI
name = "AI arms"
species = "AI"
/obj/organ/limb/legs/AI
name = "AI legs"
species = "AI"
/obj/organ/head/AI
name = "AI head"
species = "AI"
/* New organ structure template
/obj/organstructure/template
name = "template organs"
New()
new /obj/organ/torso/template(src)
..()
/obj/organ/torso/template
name = "template torso"
species = "template"
maxHealth = 100
New()
..()
new /obj/organ/limb/arms/template(src)
new /obj/organ/limb/legs/template(src)
new /obj/organ/head/template(src)
/obj/organ/limb/arms/template
name = "template arms"
species = "template"
/obj/organ/limb/legs/template
name = "template legs"
species = "template"
/obj/organ/head/template
name = "template head"
species = "template"
*/