and stuff...gonna need to get to those merge conflicts eventually. also
purged all mention of internal_organs by name from the face of the
earth. we have get_int_organ now...i may need to tweak shit. oh and i
broke some things...
This commit is contained in:
Aurorablade
2015-12-26 17:34:38 -05:00
parent 4e1f63da7e
commit 2146cc0d3d
40 changed files with 170 additions and 122 deletions
+2 -2
View File
@@ -1575,9 +1575,9 @@ datum/preferences
else
O.robotize()
else
var/obj/item/organ/internal/I = character.internal_organs_by_name[name]
var/obj/item/organ/internal/I = character.get_int_organ(name)
if(I)
if(status == "assisted")
if(status == "assisted")//add an actual organ for this?
I.mechassist()
else if(status == "mechanical")
I.robotize()
@@ -2,6 +2,7 @@
gender = MALE
hud_possible = list(HEALTH_HUD,STATUS_HUD,SPECIALROLE_HUD)
var/list/stomach_contents = list()
var/list/internal_organs = list()
var/brain_op_stage = 0.0
var/list/datum/disease2/disease/virus2 = list()
var/antibodies = 0
@@ -256,8 +256,8 @@
else if(!client)
msg += "[t_He] [t_has] suddenly fallen asleep.\n"
if(!get_int_organ(/obj/item/organ/internal/brain))
msg += "<span class='deadsay'>It appears that it's brain is missing...</span>\n"
if(!src.get_int_organ(/obj/item/organ/internal/brain))
msg += "<span class='deadsay'>It appears that thier brain is missing...</span>\n"
var/list/wound_flavor_text = list()
var/list/is_destroyed = list()
@@ -1313,14 +1313,14 @@
..()
/mob/living/carbon/human/proc/is_lung_ruptured()
var/obj/item/organ/internal/lungs/L = internal_organs_by_name["lungs"]
var/obj/item/organ/internal/lungs/L = get_int_organ(/obj/item/organ/internal/lungs)
if(!L)
return 0
return L.is_bruised()
/mob/living/carbon/human/proc/rupture_lung()
var/obj/item/organ/internal/lungs/L = internal_organs_by_name["lungs"]
var/obj/item/organ/internal/lungs/L = get_int_organ(/obj/item/organ/internal/lungs)
if(!L)
return 0
@@ -18,7 +18,7 @@
if(((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) //100 is the magic human max health number
ChangeToHusk() //BECAUSE NO ONE THOUGHT TO USE LIVING/VAR/MAXHEALTH I GUESS
if(species.can_revive_by_healing)
var/obj/item/organ/internal/brain/B = internal_organs_by_name["brain"]
var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain)
if(B)
if((health >= (config.health_threshold_dead / 100 * 75)) && stat == DEAD)
update_revive()
@@ -32,7 +32,7 @@
return 0 //godmode
if(species && species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name["brain"]
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
if(sponge)
sponge.take_damage(amount, 1)
brainloss = sponge.damage
@@ -46,7 +46,7 @@
return 0 //godmode
if(species && species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name["brain"]
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
if(sponge)
sponge.damage = min(max(amount, 0),(maxHealth*2))
brainloss = sponge.damage
@@ -60,7 +60,7 @@
return 0 //godmode
if(species && species.has_organ["brain"])
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name["brain"]
var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain)
if(sponge)
brainloss = min(sponge.damage,maxHealth*2)
else
@@ -1,13 +1,13 @@
/mob/living/carbon/human/proc/update_eyes()
var/obj/item/organ/internal/eyes/eyes = internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/eyes = get_int_organ(/obj/item/organ/internal/eyes)
if(eyes)
eyes.update_colour()
regenerate_icons()
/mob/living/carbon/var/list/internal_organs = list()
///mob/living/carbon/var/list/internal_organs = list()
/mob/living/carbon/human/var/list/organs = list()
/mob/living/carbon/human/var/list/organs_by_name = list() // map organ names to organs
/mob/living/carbon/human/var/list/internal_organs_by_name = list() // so internal organs have less ickiness too
//mob/living/carbon/human/var/list/internal_organs_by_name = list() // so internal organs have less ickiness too
// Takes care of organ related updates, such as broken and missing limbs
/mob/living/carbon/human/proc/handle_organs()
@@ -157,7 +157,7 @@ I use this to standardize shadowling dethrall code
-- Crazylemon
*/
/mob/living/carbon/human/proc/named_organ_parent(var/organ_name)
if (!(organ_name in internal_organs_by_name))
if (!get_int_organ(organ_name))
return null
var/obj/item/organ/O = internal_organs_by_name[organ_name]
var/obj/item/organ/internal/O = get_int_organ(organ_name)
return O.parent_organ
+3 -3
View File
@@ -215,7 +215,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
if (radiation)
if((locate(src.internal_organs_by_name["resonant crystal"]) in src.internal_organs))
if(src.get_int_organ(/obj/item/organ/internal/nucleation/resonant_crystal))
var/rads = radiation/25
radiation -= rads
radiation -= 0.1
@@ -894,7 +894,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
//Vision //god knows why this is here
var/obj/item/organ/internal/vision
if(species.vision_organ)
vision = internal_organs_by_name[species.vision_organ]
vision = get_int_organ(/obj/item/organ/internal/eyes)//wot?
if(!species.vision_organ) // Presumably if a species has no vision organs, they see via some other means.
eye_blind = 0
@@ -1207,7 +1207,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
/mob/living/carbon/human/proc/handle_heartbeat()
var/client/C = src.client
if(C && C.prefs.sound & SOUND_HEARTBEAT) //disable heartbeat by pref
var/obj/item/organ/internal/heart/H = internal_organs_by_name["heart"]
var/obj/item/organ/internal/heart/H = get_int_organ(/obj/item/organ/internal/heart)
if(!H) //H.status will runtime if there is no H (obviously)
return
@@ -47,14 +47,14 @@
/datum/species/wryn/handle_death(var/mob/living/carbon/human/H)
for(var/mob/living/carbon/C in living_mob_list)
if(locate(/obj/item/organ/internal/wryn/hivenode) in C.internal_organs)
if(C.get_int_organ(/obj/item/organ/internal/wryn/hivenode))
C << "<span class='danger'><B>Your antennae tingle as you are overcome with pain...</B></span>"
C << "<span class='danger'>It feels like part of you has died.</span>"
/datum/species/wryn/handle_attack_hand(var/mob/living/carbon/human/H, var/mob/living/carbon/human/M)
if(M.a_intent == I_HARM)
if(H.handcuffed)
if(!(locate(H.internal_organs_by_name["antennae"]) in H.internal_organs)) return
if(!H.get_int_organ(/obj/item/organ/internal/wryn/hivenode)) return
var/turf/p_loc = M.loc
var/turf/p_loc_m = H.loc
@@ -62,9 +62,10 @@
H << "<span class='danger'><B>[M] grips your antennae and starts violently pulling!<B></span>"
do_after(H, 250, target = src)
if(p_loc == M.loc && p_loc_m == H.loc)
qdel(H.internal_organs_by_name["antennae"])
var/obj/item/organ/internal/wryn/hivenode/node = new /obj/item/organ/internal/wryn/hivenode
H.remove_language("Wryn Hivemind")
new /obj/item/organ/internal/wryn/hivenode(M.loc)
node.remove(H)
node.loc = M.loc
M << "<span class='notice'>You hear a loud crunch as you mercilessly pull off [H]'s antennae.</span>"
H << "<span class='danger'><B>You hear a loud crunch as your antennae is ripped off your head by [M].</span></B>"
H << "<span class='danger'><span class='danger'><B>It's so quiet...</B></span>"
@@ -137,19 +137,17 @@
if((organ in H.organs))
qdel(organ)
for(var/obj/item/organ/internal/organ in H.contents)
if((organ in H.internal_organs))
qdel(organ)
//for(var/obj/item/organ/internal/organ in H.contents)
// if((organ in H.internal_organs))
// qdel(organ)
if(H.organs) H.organs.Cut()
if(H.internal_organs) H.internal_organs.Cut()
//if(H.internal_organs) H.internal_organs.Cut()
if(H.organs_by_name) H.organs_by_name.Cut()
if(H.internal_organs_by_name) H.internal_organs_by_name.Cut()
H.organs = list()
H.internal_organs = list()
H.organs_by_name = list()
H.internal_organs_by_name = list()
for(var/limb_type in has_limbs)
var/list/organ_data = has_limbs[limb_type]
@@ -157,15 +155,12 @@
var/obj/item/organ/O = new limb_path(H)
organ_data["descriptor"] = O.name
for(var/organ in has_organ)
var/organ_type = has_organ[organ]
//world << "[organ_type]"//debug print
H.internal_organs_by_name[organ] = new organ_type(H,1)
H.internal_organs += new organ_type
for(var/index in has_organ)
var/organ = has_organ[index]
H.internal_organs += new organ(null)
for(var/obj/item/organ/internal/I in H.internal_organs)
if(!H.get_int_organ(I))
I.insert(src)
I.insert(H)
for(var/name in H.organs_by_name)
H.organs |= H.organs_by_name[name]
@@ -609,6 +604,7 @@
Returns the path corresponding to the corresponding organ
It'll return null if the organ doesn't correspond, so include null checks when using this!
*/
//Fethas Todo:Do i need to redo this?
/datum/species/proc/return_organ(var/organ_slot)
if(!(organ_slot in has_organ))
return null
@@ -502,7 +502,7 @@
reagent_tag = PROCESS_SYN
has_organ = list(
"brain" = /obj/item/organ/internal/mmi_holder/posibrain,
"brain" = /obj/item/organ/internal/brain/mmi_holder/posibrain,
"cell" = /obj/item/organ/internal/cell,
"optics" = /obj/item/organ/internal/optical_sensor
)
@@ -245,7 +245,7 @@ var/global/list/damage_icon_parts = list()
qdel(stand_icon)
stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi',"blank")
var/icon_key = ""
var/obj/item/organ/internal/eyes/eyes = internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/eyes = get_int_organ(/obj/item/organ/internal/eyes)
if(eyes)
icon_key += "[rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3])]"
+1 -1
View File
@@ -652,7 +652,7 @@
//Synthetic human mob goes here.
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(!isnull(H.internal_organs_by_name["cell"]) && H.a_intent == I_GRAB)
if(H.get_int_organ(/obj/item/organ/internal/cell) && H.a_intent == I_GRAB)
if(emagged || stat & BROKEN)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, src)
@@ -182,7 +182,7 @@
continue
// Where we're going, we don't need eyes.
// Prosthetic eyes will also protect against this business.
var/obj/item/organ/internal/eyes = l.internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/eyes = l.get_int_organ(/obj/item/organ/internal/eyes/)
if(!istype(eyes))
continue
l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) )
+1 -1
View File
@@ -525,7 +525,7 @@ datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
if(prob(80))
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
E.damage = max(E.damage-1, 0)
M.eye_blurry = max(M.eye_blurry-1 , 0)
@@ -63,8 +63,8 @@
M:drowsyness = max(M:drowsyness, 30/sober_str)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/liver/L = H.internal_organs_by_name["liver"]
if (istype(L))
if (H.get_int_organ(/obj/item/organ/internal/liver))
var/obj/item/organ/internal/liver/L = /obj/item/organ/internal/liver
L.take_damage(0.1, 1)
H.adjustToxLoss(0.1)
..()
@@ -24,7 +24,7 @@
M.eye_blind = 0
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
E.damage = max(E.damage-5 , 0)
M.SetWeakened(0)
@@ -78,8 +78,8 @@
var/mob/living/carbon/human/H = M
//Mitocholide is hard enough to get, it's probably fair to make this all internal organs
for(var/name in H.internal_organs_by_name)
var/obj/item/organ/internal/I = H.internal_organs_by_name[name]
for(var/name in H.internal_organs)
var/obj/item/organ/internal/I = H.get_int_organ(name)
if(I.damage > 0)
I.damage = max(I.damage-0.4, 0)
..()
+1 -1
View File
@@ -39,7 +39,7 @@
target.blinded += 1.5
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/internal/eyes/eyes = target.internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/eyes = target.get_int_organ(/obj/item/organ/internal/eyes)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, slicing [target]'s eyes wth \the [tool]!" , \
"\red Your hand slips, slicing [target]'s eyes wth \the [tool]!" )
+8 -7
View File
@@ -7,13 +7,12 @@
parent_organ = "eyes"
w_class = 1
var/sight_flags = 0
var/vision_flags = 0
var/list/eye_colour = list(0,0,0)
var/list/old_eye_colour = list(0,0,0)
var/flash_protect = 0
var/aug_message = "Your vision is augmented!"
/obj/item/organ/internal/cyberimp/eyes/proc/update_colour()
if(!owner)
return
@@ -38,11 +37,12 @@
HMN.update_eyes()
if(aug_message && !special)
owner << "<span class='notice'>[aug_message]</span>"
M.sight |= sight_flags
M.sight |= vision_flags
world << "[M.sight]"
/obj/item/organ/internal/cyberimp/eyes/remove(var/mob/living/carbon/M, var/special = 0)
..()
M.sight ^= sight_flags
M.sight ^= vision_flags
if(istype(owner,/mob/living/carbon/human) && eye_colour)
var/mob/living/carbon/human/HMN = owner
HMN.r_eyes = old_eye_colour[1]
@@ -52,7 +52,7 @@
/obj/item/organ/internal/cyberimp/eyes/on_life()
..()
owner.sight |= sight_flags
owner.sight |= vision_flags
/obj/item/organ/internal/cyberimp/eyes/emp_act(severity)
if(!owner)
@@ -77,14 +77,14 @@
eye_colour = rgb(0, 0, 0)
implant_color = "#000000"
origin_tech = "materials=6;programming=4;biotech=6;magnets=5"
sight_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS
vision_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS
/obj/item/organ/internal/cyberimp/eyes/thermals
name = "Thermals implant"
desc = "These cybernetic eye implants will give you Thermal vision. Vertical slit pupil included."
eye_colour = rgb(255, 204, 0)
implant_color = "#FFCC00"
sight_flags = SEE_MOBS
vision_flags = SEE_MOBS
flash_protect = -1
origin_tech = "materials=6;programming=4;biotech=5;magnets=5;syndicate=4"
aug_message = "You see prey everywhere you look..."
@@ -137,5 +137,6 @@
implant_color = "#101010"
flash_protect = 2
// Welding with thermals will still hurt your eyes a bit.
/obj/item/organ/internal/cyberimp/eyes/shield/emp_act(severity)
return
@@ -8,6 +8,8 @@
status = ORGAN_ROBOT
var/implant_color = "#FFFFFF"
var/implant_overlay
tough = 1 //not easyly broken by combat damage
sterile = 1 //not very germy
/obj/item/organ/internal/cyberimp/New(var/mob/M = null)
if(iscarbon(M))
+1 -1
View File
@@ -87,7 +87,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
// Damaged heart virtually reduces the blood volume, as the blood isn't
// being pumped properly anymore.
var/obj/item/organ/internal/heart/heart = internal_organs_by_name["heart"]
var/obj/item/organ/internal/heart/heart = get_int_organ(/obj/item/organ/internal/heart)
if(heart)
if(heart.damage > 1 && heart.damage < heart.min_bruised_damage)
+19 -19
View File
@@ -32,19 +32,20 @@ var/list/organ_cache = list()
/obj/item/organ/Destroy()
if(!owner)
return ..()
/*
if(istype(owner, /mob/living/carbon))
if((owner.internal_organs) && (src in owner.internal_organs))
owner.internal_organs -= src
var/obj/item/organ/internal/O = src
O.remove(owner)
if(istype(owner, /mob/living/carbon/human))
if((owner.internal_organs_by_name) && (src in owner.internal_organs_by_name))
owner.internal_organs_by_name -= src
if((owner.organs) && (src in owner.organs))
owner.organs -= src
if((owner.organs_by_name) && (src in owner.organs_by_name))
owner.organs_by_name -= src
*/
var/obj/item/organ/internal/O = src
O.remove(owner)
if((owner.organs) && (src in owner.organs))
owner.organs -= src
if((owner.organs_by_name) && (src in owner.organs_by_name))
owner.organs_by_name -= src
if(src in owner.contents)
owner.contents -= src
@@ -101,8 +102,8 @@ var/list/organ_cache = list()
owner.death()
/obj/item/organ/process()
if(loc != owner)
owner = null
//if(loc != owner)
// owner = null
//dead already, no need for more processing
if(status & ORGAN_DEAD)
@@ -289,10 +290,10 @@ var/list/organ_cache = list()
if(!istype(owner))
return
if(is_primary_organ())
owner.internal_organs_by_name[organ_tag] = null
owner.internal_organs_by_name -= organ_tag
owner.internal_organs_by_name -= null // uh what does this line even do this seems silly
//if(is_primary_organ())//Toddo from fethas:Do i need to move ths?
// owner.internal_organs_by_name[organ_tag] = null
// owner.internal_organs_by_name -= organ_tag
// owner.internal_organs_by_name -= null // uh what does this line even do this seems silly
owner.internal_organs -= src
@@ -320,10 +321,9 @@ var/list/organ_cache = list()
owner = target
processing_objects -= src
target.internal_organs |= src
affected.internal_organs |= src
if (!(organ_tag in target.internal_organs_by_name))
target.internal_organs_by_name[organ_tag] = src // In case multiple of the same type are inserted, only the first one is the primary organ
if (!target.get_int_organ(src))
target.internal_organs |= src
src.loc = target
if(robotic)
status |= ORGAN_ROBOT
@@ -342,4 +342,4 @@ I use this so that this can be made better once the organ overhaul rolls out --
O = owner
if (!istype(owner)) // You're not the primary organ of ANYTHING, bucko
return 0
return src == O.internal_organs_by_name[organ_tag]
return src == O.get_int_organ(organ_tag)
@@ -71,7 +71,9 @@
if(internal_organs)
for(var/obj/item/organ/internal/O in internal_organs)
qdel(O)
internal_organs -= O
O.remove(owner)
//qdel(O)
return ..()
@@ -95,11 +97,12 @@
if(contents.len)
var/obj/item/removing = pick(contents)
removing.loc = get_turf(user.loc)
var/obj/item/organ/O = removing
var/obj/item/organ/internal/O = removing
if(istype(O))
O.status |= ORGAN_CUT_AWAY
spread_germs_to_organ(O,user) // This wouldn't be any cleaner than the actual surgery
O.removed(user)
if(!O.sterile)
spread_germs_to_organ(O,user) // This wouldn't be any cleaner than the actual surgery
O.remove(src)
if(!(user.l_hand && user.r_hand))
user.put_in_hands(removing)
user.visible_message("<span class='danger'><b>[user]</b> extracts [removing] from [src] with [W]!")
@@ -166,7 +169,8 @@
// Damage an internal organ
if(internal_organs && internal_organs.len)
var/obj/item/organ/internal/I = pick(internal_organs)
I.take_damage(brute / 2)
if(!I.tough)//mostly for cybernetic organs
I.take_damage(brute / 2)
brute -= brute / 2
if(status & ORGAN_BROKEN && prob(40) && brute)
+2 -2
View File
@@ -33,7 +33,7 @@ var/global/list/limb_icon_cache = list()
/obj/item/organ/external/head/sync_colour_to_human(var/mob/living/carbon/human/human)
..()
var/obj/item/organ/internal/eyes/eyes = owner.get_int_organ("eyes")//owner.internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/eyes = owner.get_int_organ(/obj/item/organ/internal/eyes)//owner.internal_organs_by_name["eyes"]
if(eyes) eyes.update_colour()
/obj/item/organ/external/head/removed()
@@ -48,7 +48,7 @@ var/global/list/limb_icon_cache = list()
return
if(species.has_organ["eyes"])
var/obj/item/organ/internal/eyes/eyes = owner.internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/eyes = owner.get_int_organ(/obj/item/organ/internal/eyes)//owner.internal_organs_by_name["eyes"]
if(species.eyes)
var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', species.eyes)
if(eyes)
+42 -2
View File
@@ -9,6 +9,8 @@
var/slot
vital = 0
var/organ_action_name = null
var/sterile = 0 //can the organ be infected by germs?
var/tough = 0 //can organ be easily damaged?
/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0)
if(!iscarbon(M) || owner == M)
@@ -19,7 +21,9 @@
replaced.remove(M, special = 1)
owner = M
M.internal_organs |= src
//M.internal_organs_by_name[src] |= src(H,1)
loc = null
if(organ_action_name)
action_button_name = organ_action_name
@@ -29,6 +33,7 @@
owner = null
if(M)
M.internal_organs -= src
//M.internal_organs_by_name[src] -= src
if(vital && !special)
M.death()
@@ -192,6 +197,16 @@
owner.b_eyes ? owner.b_eyes : 0
)
/obj/item/organ/internal/eyes/insert(mob/living/carbon/M, special = 0)
// Apply our eye colour to the target.
if(istype(M) && eye_colour)
var/mob/living/carbon/human/eyes = M
eyes.r_eyes = eye_colour[1]
eyes.g_eyes = eye_colour[2]
eyes.b_eyes = eye_colour[3]
eyes.update_eyes()
..()
/obj/item/organ/internal/eyes/surgeryize()
if(!owner)
return
@@ -200,6 +215,7 @@
owner.eye_blurry = 0
owner.eye_blind = 0
/obj/item/organ/internal/liver
name = "liver"
icon_state = "liver"
@@ -282,7 +298,7 @@
name = "inflamed appendix"
..()
*/
//shadowling tumor
/obj/item/organ/internal/shadowtumor
name = "black tumor"
desc = "A tiny black mass with red tendrils trailing from it. It seems to shrivel in the light."
@@ -305,10 +321,34 @@
if(isturf(loc))
var/turf/T = loc
var/light_count = T.get_lumcount()
world << "[light_count]"
if(light_count > 4 && health > 0) //Die in the light
health--
else if(light_count < 2 && health < 3) //Heal in the dark
health++
if(health <= 0)
visible_message("<span class='warning'>[src] collapses in on itself!</span>")
qdel(src)
qdel(src)
//debug and adminbus....
/obj/item/organ/internal/honktumor
name = "banana tumor"
desc = "A tiny yellow mass shaped like..a banana?"
icon_state = "honktumor"
origin_tech = "biotech=1"
w_class = 1
parent_organ = "head"
slot = "brain_tumor"
health = 3
/obj/item/organ/internal/honktumor/insert(mob/living/carbon/M, special = 0)
M.mutations.Add(CLUMSY)
M.dna.SetSEState(COMICBLOCK,1,1)
//genemutcheck(H,COMICBLOCK,null,MUTCHK_FORCED)
/obj/item/organ/internal/honktumor/remove(mob/living/carbon/M, special = 0)
M.mutations.Remove(CLUMSY)
M.mutations.Remove(COMICBLOCK)
//genemutcheck(H,COMICBLOCK,null,MUTCHK_FORCED)
@@ -88,7 +88,7 @@
..()
// Used for an MMI or posibrain being installed into a human.
/obj/item/organ/internal/mmi_holder
/obj/item/organ/internal/brain/mmi_holder
name = "brain"
organ_tag = "brain"
parent_organ = "chest"
@@ -97,7 +97,7 @@
slot = "brain"
var/obj/item/device/mmi/stored_mmi
/obj/item/organ/internal/mmi_holder/proc/update_from_mmi()
/obj/item/organ/internal/brain/mmi_holder/proc/update_from_mmi()
if(!stored_mmi)
return
name = stored_mmi.name
@@ -105,7 +105,7 @@
icon = stored_mmi.icon
icon_state = stored_mmi.icon_state
/obj/item/organ/internal/mmi_holder/remove(var/mob/living/user)
/obj/item/organ/internal/brain/mmi_holder/remove(var/mob/living/user)
if(stored_mmi)
stored_mmi.loc = get_turf(src)
if(owner.mind)
@@ -117,7 +117,7 @@
holder_mob.unEquip(src)
qdel(src)
/obj/item/organ/internal/mmi_holder/New()
/obj/item/organ/internal/brain/mmi_holder/New()
..()
// This is very ghetto way of rebooting an IPC. TODO better way.
spawn(1)
@@ -125,7 +125,7 @@
owner.stat = CONSCIOUS
owner.visible_message("<span class='danger'>\The [owner] twitches visibly!</span>")
/obj/item/organ/internal/mmi_holder/posibrain/New()
/obj/item/organ/internal/brain/mmi_holder/posibrain/New()
robotize()
stored_mmi = new /obj/item/device/mmi/posibrain(src)
..()
@@ -2,6 +2,8 @@
origin_tech = "biotech=5"
icon_state = "xgibmid2"
var/list/alien_powers = list()
tough = 1
sterile = 1
/obj/item/organ/internal/xenos/New()
for(var/A in alien_powers)
+4 -3
View File
@@ -163,7 +163,8 @@
for(var/obj/item/organ/internal/I in affected.internal_organs)
if(I && I.damage > 0)
if(I.robotic < 2)
spread_germs_to_organ(I, user)
if(!I.sterile)
spread_germs_to_organ(I, user)
user.visible_message("[user] starts treating damage to [target]'s [I.name] with [tool_name].", \
"You start treating damage to [target]'s [I.name] with [tool_name]." )
@@ -370,13 +371,13 @@
if(O.organ_tag == "limb")
return 0
else if(target.species.has_organ[O.organ_tag])
else if(target.species.has_organ[O.organ_tag])//need to change this around for cybernetic implants
if(O.damage > (O.max_damage * 0.75))
user << "\red \The [O.organ_tag] [o_is] in no state to be transplanted."
return 2
if(!target.internal_organs_by_name[O.organ_tag])
if(!target.get_int_organ(O))
organ_missing = 1
else
user << "\red \The [target] already has [o_a][O.organ_tag]."
+5 -5
View File
@@ -319,7 +319,7 @@
user.visible_message("\blue [user] has decoupled [target]'s [target.op_stage.current_organ] with \the [tool]." , \
"\blue You have decoupled [target]'s [target.op_stage.current_organ] with \the [tool].")
var/obj/item/organ/internal/I = target.internal_organs_by_name[target.op_stage.current_organ]
var/obj/item/organ/internal/I = target.get_int_organ(target.op_stage.current_organ)
if(I && istype(I))
I.status |= ORGAN_CUT_AWAY
@@ -369,7 +369,7 @@
user.visible_message("\blue [user] has reattached [target]'s [target.op_stage.current_organ] with \the [tool]." , \
"\blue You have reattached [target]'s [target.op_stage.current_organ] with \the [tool].")
var/obj/item/organ/internal/I = target.internal_organs_by_name[target.op_stage.current_organ]
var/obj/item/organ/internal/I = target.get_int_organ(target.op_stage.current_organ)
if(I && istype(I))
I.status &= ~ORGAN_CUT_AWAY
@@ -414,7 +414,7 @@
user << "<span class='danger'>You're pretty sure [target.species.name_plural] don't normally have a brain.</span>"
return 2
if(!isnull(target.internal_organs["brain"]))
if(target.get_int_organ(/obj/item/organ/internal/brain/))
user << "<span class='danger'>Your subject already has a brain.</span>"
return 2
@@ -432,11 +432,11 @@
"\blue You have installed \the [tool] into [target]'s [affected.name].")
var/obj/item/device/mmi/M = tool
var/obj/item/organ/internal/mmi_holder/holder = new(target, 1)
var/obj/item/organ/internal/brain/mmi_holder/holder = new()
if (istype(M, /obj/item/device/mmi/posibrain))
holder.robotize()
target.internal_organs_by_name["brain"] = holder
holder.insert(target)
user.unEquip(tool)
tool.forceMove(holder)
holder.stored_mmi = tool
+1 -1
View File
@@ -68,7 +68,7 @@
/proc/spread_germs_to_organ(obj/item/organ/E, mob/living/carbon/human/user)
if(!istype(user) || !istype(E)) return
//world << "Germ spread: [E] : [E.owner]"
var/germ_level = user.germ_level
if(user.gloves)
germ_level = user.gloves.germ_level
+4 -4
View File
@@ -221,7 +221,7 @@
activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob
var/obj/item/organ/internal/brain/B = H.internal_organs_by_name["brain"]
var/obj/item/organ/internal/brain/B = H.get_int_organ(/obj/item/organ/internal/brain)
if (B.damage < B.min_broken_damage)
B.take_damage(5, 1)
else
@@ -442,7 +442,7 @@
activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob
var/obj/item/organ/internal/brain/B = H.internal_organs_by_name["brain"]
var/obj/item/organ/internal/brain/B = H.get_int_organ(/obj/item/organ/internal/brain)
if (B.damage < B.min_broken_damage)
B.take_damage(1, 1)
else
@@ -704,7 +704,7 @@ var/list/compatible_mobs = list(/mob/living/carbon/human)
activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob, /mob/living/carbon/human))
var/mob/living/carbon/human/H = mob
var/obj/item/organ/internal/brain/B = H.internal_organs_by_name["brain"]
var/obj/item/organ/internal/brain/B = H.get_int_organ(/obj/item/organ/internal/brain)
if (B.damage < B.min_broken_damage)
B.take_damage(0.5, 1)
else
@@ -936,7 +936,7 @@ var/list/compatible_mobs = list(/mob/living/carbon/human)
name = "Watery Eyes"
stage = 1
activate(var/mob/living/carbon/human/mob,var/multiplier)
var/obj/item/organ/internal/eyes/E = mob.internal_organs_by_name["eyes"]
var/obj/item/organ/internal/eyes/E = mob.get_int_organ(/obj/item/organ/internal/eyes)
if(!istype(E) || (E.status & ORGAN_ROBOT)) // No eyes or robotic eyes? No problem!
return
mob << "<span class='warning'>Your eyes sting and water!</span>"