From b58e465bbe420c9aa300458732e4ce6d34e90f71 Mon Sep 17 00:00:00 2001 From: "rastaf.zero@gmail.com" Date: Fri, 15 Apr 2011 07:41:19 +0000 Subject: [PATCH] Shitton of bugfixes related to bryteloss/fireloss. Note for coders: in order to help with seaching of health-related bugs I have moved many procs from /mob/ under /mob/living/. Also, done some clean up and rearranging. Results: -admin rejuvenating now works again; -people screams if getting creamated while still alive; -diseases actually loose your health; -monkeys wearing masks receive protection from acids as humans did; -and other minor fixes and improvements. Bugfix for imbuing a talisman. RD now spawns with only 2 pens instead of 3. Audible emotions can be heard by people outside of locker/other container. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1446 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/Chemistry-Reagents.dm | 271 +++++++------ code/WorkInProgress/Chemistry-Tools.dm | 2 +- code/datums/disease.dm | 2 +- code/datums/diseases/alien_embryo.dm | 3 +- code/datums/diseases/dna_spread.dm | 3 +- code/datums/diseases/flu.dm | 6 +- .../datums/diseases/robotic_transformation.dm | 12 +- code/datums/diseases/xeno_transformation.dm | 12 +- code/datums/mind.dm | 4 +- code/datums/spells/disintegrate.dm | 4 +- code/datums/spells/fireball.dm | 5 +- code/datums/spells/magic_missile.dm | 4 +- code/defines/mob/living/carbon/human.dm | 2 + code/defines/mob/mob.dm | 2 +- code/defines/obj/clothing/suit.dm | 2 +- code/defines/obj/storage.dm | 2 +- code/defines/obj/weapon.dm | 12 +- code/defines/procs/helpers.dm | 2 +- code/game/dna.dm | 81 ++-- .../gamemodes/changeling/changeling_powers.dm | 9 +- code/game/gamemodes/wizard/spells.dm | 15 +- code/game/jobs/jobprocs.dm | 2 +- code/game/machinery/Sleeper.dm | 2 +- code/game/machinery/bots/mulebot.dm | 1 + code/game/machinery/cryo.dm | 7 +- code/game/machinery/morgue.dm | 62 +-- code/game/machinery/teleporter.dm | 16 +- code/game/magic/cultist/ritual.dm | 19 +- code/game/magic/cultist/runes.dm | 83 ++-- code/game/mecha/combat/combat.dm | 8 +- code/game/mecha/equipment/tools/tools.dm | 15 +- code/game/mecha/mecha.dm | 7 +- code/game/objects/alien/facehugger.dm | 2 +- code/game/objects/items/item.dm | 77 +++- code/game/objects/items/weapons/guns_ammo.dm | 103 +++-- .../game/objects/items/weapons/hydroponics.dm | 23 +- code/game/objects/items/weapons/kitchen.dm | 98 ++--- code/game/objects/items/weapons/medical.dm | 81 ++-- .../game/objects/items/weapons/papers_bins.dm | 10 +- .../objects/items/weapons/surgery_tools.dm | 381 +++++++++++------- .../objects/items/weapons/swords_axes_etc.dm | 19 +- code/game/objects/items/weapons/tools.dm | 59 +-- code/game/objects/livestock.dm | 2 +- code/game/objects/secstorage/sbriefcase.dm | 10 +- code/game/objects/stool.dm | 5 +- code/game/objects/storage/bible.dm | 18 +- code/game/objects/storage/briefcase.dm | 10 +- code/game/objects/storage/firstaid.dm | 14 +- code/game/objects/tank.dm | 5 +- code/game/objects/traps.dm | 19 +- code/game/throwing.dm | 19 +- code/game/turf.dm | 4 +- code/modules/admin/admin.dm | 7 +- code/modules/admin/verbs/randomverbs.dm | 6 +- .../living/carbon/alien/humanoid/humanoid.dm | 10 - code/modules/mob/living/carbon/carbon.dm | 16 +- code/modules/mob/living/carbon/human/emote.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 141 +++++-- .../mob/living/carbon/monkey/monkey.dm | 13 +- code/modules/mob/living/living.dm | 201 +++++++++ .../mob/living/silicon/robot/robot_modules.dm | 4 +- code/modules/mob/living/silicon/silicon.dm | 2 +- code/modules/mob/mob.dm | 285 +------------ code/modules/mob/transform_procs.dm | 11 +- code/modules/power/lighting.dm | 3 +- .../power/singularity/containment_field.dm | 5 +- .../particle_accelerator/particle.dm | 5 +- maps/tgstation.2.0.3.dmm | 22 +- maps/tgstation.2.0.4.dmm | 22 +- maps/tgstation.2.0.5.dmm | 40 +- maps/tgstation.2.0.6.dmm | 22 +- maps/tgstation.2.0.7.dmm | 22 +- tgstation.dme | 1 + 73 files changed, 1266 insertions(+), 1210 deletions(-) create mode 100644 code/modules/mob/living/living.dm diff --git a/code/WorkInProgress/Chemistry-Reagents.dm b/code/WorkInProgress/Chemistry-Reagents.dm index 2e8d0f57a32..27e45610497 100644 --- a/code/WorkInProgress/Chemistry-Reagents.dm +++ b/code/WorkInProgress/Chemistry-Reagents.dm @@ -42,7 +42,7 @@ datum src = null return - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. return @@ -57,7 +57,7 @@ datum id = "metroid" description = "A green semi-liquid produced from one of the deadliest lifeforms in existence." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(prob(10)) M << "You don't feel too good." M.toxloss+=20 @@ -228,7 +228,7 @@ datum id = "bilk" description = "This appears to be beer mixed with milk. Disgusting." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(M:bruteloss && prob(10)) M:heal_organ_damage(1,0) M:nutrition += 2 if(!data) data = 1 @@ -250,7 +250,7 @@ datum description = "Dylovene is a broad-spectrum antitoxin." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:drowsyness = max(M:drowsyness-2, 0) if(holder.has_reagent("toxin")) @@ -281,7 +281,7 @@ datum description = "A Toxic chemical." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss += 1.5 ..() @@ -292,7 +292,7 @@ datum id = "cyanide" description = "A highly toxic chemical." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss += 3 M:oxyloss += 3 @@ -306,7 +306,7 @@ datum description = "An effective hypnotic used to treat insomnia." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(!data) data = 1 switch(data) @@ -327,7 +327,7 @@ datum description = "Inaprovaline is a synaptic stimulant and cardiostimulant. Commonly used to stabilize patients." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M.losebreath >= 10) M.losebreath = max(10, M.losebreath-5) @@ -339,7 +339,7 @@ datum id = "space_drugs" description = "An illegal chemical compound used as drug." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.druggy = max(M.druggy, 15) if(M.canmove) step(M, pick(cardinal)) @@ -396,7 +396,7 @@ datum description = "A chemical element." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M.canmove) step(M, pick(cardinal)) if(prob(5)) M:emote(pick("twitch","drool","moan")) @@ -425,7 +425,7 @@ datum id = "chlorine" description = "A chemical element." reagent_state = GAS - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.take_organ_damage(1, 0) ..() @@ -436,7 +436,7 @@ datum id = "fluorine" description = "A highly-reactive chemical element." reagent_state = GAS - on_mob_life(var/mob.M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss++ ..() @@ -460,7 +460,7 @@ datum description = "A chemical element." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M.canmove) step(M, pick(cardinal)) if(prob(5)) M:emote(pick("twitch","drool","moan")) @@ -472,7 +472,7 @@ datum id = "sugar" description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:nutrition += 1 ..() return @@ -482,13 +482,13 @@ datum id = "acid" description = "A strong mineral acid with the molecular formula H2SO4." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss++ M.take_organ_damage(0, 1) ..() return - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if(method == TOUCH) if(istype(M, /mob/living/carbon/human)) if(M:wear_mask) @@ -499,8 +499,13 @@ datum del (M:head) M << "\red Your helmet melts into uselessness but protects you from the acid!" return + if(istype(M, /mob/living/carbon/monkey)) + if(M:wear_mask) + del (M:wear_mask) + M << "\red Your mask melts away but protects you from the acid!" + return - if(prob(75)) + if(prob(75) && istype(M, /mob/living/carbon/human)) var/datum/organ/external/affecting = M:organs["head"] if(affecting) affecting.take_damage(25, 0) @@ -510,9 +515,9 @@ datum M << "\red Your face has become disfigured!" M.real_name = "Unknown" else - M:bruteloss += 15 + M.take_organ_damage(15) else - M:bruteloss += 15 + M.take_organ_damage(15) reaction_obj(var/obj/O, var/volume) if(istype(O,/obj/item) && prob(40)) @@ -527,13 +532,13 @@ datum id = "pacid" description = "Polytrinic acid is a an extremely corrosive chemical substance." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss++ M.take_organ_damage(0, 1) ..() return - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if(method == TOUCH) if(istype(M, /mob/living/carbon/human)) if(M:wear_mask) @@ -552,7 +557,11 @@ datum M << "\red Your face has become disfigured!" M.real_name = "Unknown" else - M:bruteloss += 15 + if(istype(M, /mob/living/carbon/monkey) && M:wear_mask) + del (M:wear_mask) + M << "\red Your mask melts away but protects you from the acid!" + return + M.take_organ_damage(15) else if(istype(M, /mob/living/carbon/human)) var/datum/organ/external/affecting = M:organs["head"] @@ -563,7 +572,7 @@ datum M << "\red Your face has become disfigured!" M.real_name = "Unknown" else - M:bruteloss += 15 + M.take_organ_damage(15) reaction_obj(var/obj/O, var/volume) if(istype(O,/obj/item)) @@ -590,7 +599,7 @@ datum id = "radium" description = "Radium is an alkaline earth metal. It is extremely radioactive." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.radiation += 3 ..() @@ -608,7 +617,7 @@ datum id = "ryetalyn" description = "Ryetalyn can cure all genetic abnomalities." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.mutations = 0 M.disabilities = 0 @@ -645,7 +654,7 @@ datum domutcheck(M, null) updateappearance(M,M.dna.uni_identity) return - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.radiation += 3 ..() @@ -666,7 +675,7 @@ datum usr << "Well, that was stupid." M:toxloss += 3 return - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.radiation += 3 ..() @@ -678,7 +687,7 @@ datum description = "Pure iron is a metal." reagent_state = SOLID /* - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if((M.virus) && (prob(8) && (M.virus.name=="Magnitis"))) if(M.virus.spread == "Airborne") @@ -724,7 +733,7 @@ datum napalm.trace_gases += fuel T.assume_air(napalm) return - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss += 1 ..() @@ -804,7 +813,7 @@ datum id = "plasma" description = "Plasma in its liquid form." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(holder.has_reagent("inaprovaline")) holder.remove_reagent("inaprovaline", 2) @@ -833,7 +842,7 @@ datum id = "leporazine" description = "Leporazine can be use to stabilize an individuals body temperature." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-20) @@ -847,7 +856,7 @@ datum id = "cryptobiolin" description = "Cryptobiolin causes confusion and dizzyness." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.make_dizzy(1) if(!M.confused) M.confused = 1 @@ -861,7 +870,7 @@ datum id = "lexorin" description = "Lexorin temporarily stops respiration. Causes tissue damage." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(prob(33)) M.take_organ_damage(1, 0) @@ -875,7 +884,7 @@ datum id = "kelotane" description = "Kelotane is a drug used to treat burns." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:heal_organ_damage(0,2) ..() @@ -886,7 +895,7 @@ datum id = "dexalin" description = "Dexalin is used in the treatment of oxygen deprivation." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:oxyloss = max(M:oxyloss-2, 0) if(holder.has_reagent("lexorin")) @@ -899,7 +908,7 @@ datum id = "dexalinp" description = "Dexalin Plus is used in the treatment of oxygen deprivation. Its highly effective." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:oxyloss = 0 if(holder.has_reagent("lexorin")) @@ -912,7 +921,7 @@ datum id = "tricordrazine" description = "Tricordrazine is a highly potent stimulant, originally derived from cordrazine. Can be used to treat a wide range of injuries." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M:oxyloss && prob(40)) M:oxyloss-- if(M:bruteloss && prob(40)) M:heal_organ_damage(1,0) @@ -926,7 +935,7 @@ datum id = "adminordrazine" description = "I don't have to explain shit about adminordrazine, its magic." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:cloneloss = 0 M:oxyloss = 0 @@ -969,7 +978,7 @@ datum id = "synaptizine" description = "Synaptizine is used to treat neuroleptic shock. Can be used to help remove disabling symptoms such as paralysis." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:drowsyness = max(M:drowsyness-5, 0) if(M:paralysis) M:paralysis-- @@ -983,7 +992,7 @@ datum id = "impedrezene" description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:jitteriness = max(M:jitteriness-5,0) if(prob(80)) M:brainloss++ @@ -997,7 +1006,7 @@ datum id = "hyronalin" description = "Hyronalin is a medicinal drug used to counter the effects of radiation poisoning." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:radiation = max(M:radiation-3,0) ..() @@ -1022,7 +1031,7 @@ datum id = "alkysine" description = "Alkysine is a drug used to lessen the damage to neurological tissue after a catastrophic injury. Can heal brain tissue." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:brainloss = max(M:brainloss-3 , 0) ..() @@ -1033,7 +1042,7 @@ datum id = "imidazoline" description = "Heals eye damage" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:eye_blurry = max(M:eye_blurry-5 , 0) M:eye_blind = max(M:eye_blind-5 , 0) @@ -1042,12 +1051,26 @@ datum ..() return + arithrazine + name = "Arithrazine" + id = "arithrazine" + description = "Arithrazine is an unstable medication used for the most extreme cases of radiation poisoning." + reagent_state = LIQUID + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M:radiation = max(M:radiation-3,0) + if(M:toxloss) M:toxloss-- + if(prob(15)) + M.take_organ_damage(1, 0) + ..() + return + bicaridine name = "Bicaridine" id = "bicaridine" description = "Bicaridine is an analgesic medication and can be used to treat blunt trauma." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:heal_organ_damage(2,0) ..() @@ -1058,7 +1081,7 @@ datum id = "hyperzine" description = "Hyperzine is a highly effective, long lasting, muscle stimulant." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(prob(5)) M:emote(pick("twitch","blink_r","shiver")) holder.remove_reagent(src.id, 0.2) @@ -1070,7 +1093,7 @@ datum id = "cryoxadone" description = "A chemical mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 170K for it to metabolise correctly." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M.bodytemperature < 170) if(M:oxyloss) M:oxyloss = max(0, M:oxyloss-3) @@ -1084,7 +1107,7 @@ datum id = "clonexadone" description = "A liquid compound similar to that used in the cloning process. Can be used to 'finish' clones that get ejected early when used in conjunction with a cryo tube." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M.bodytemperature < 170) if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-3) @@ -1100,7 +1123,7 @@ datum description = "An all-purpose antiviral agent." reagent_state = LIQUID - on_mob_life(var/mob/M)//no more mr. panacea + on_mob_life(var/mob/living/M as mob)//no more mr. panacea holder.remove_reagent(src.id, 0.2) ..() return @@ -1111,7 +1134,7 @@ datum description = "A deadly neurotoxin produced by the dreaded spess carp." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss += 2 ..() @@ -1121,7 +1144,7 @@ datum name = "Zombie Powder" id = "zombiepowder" description = "A strong neurotoxin that puts the subject into a death-like state." - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:oxyloss += 0.5 M:toxloss += 0.5 @@ -1182,7 +1205,7 @@ datum id = "ethanol" description = "A well-known alcohol with a variety of applications." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.make_dizzy(5) @@ -1213,7 +1236,7 @@ datum id = "ethylredoxrazine" description = "A powerfuld oxidizer that reacts with ethanol." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.dizziness = 0 M:drowsyness = 0 @@ -1227,7 +1250,7 @@ datum id = "chloralhydrate" description = "A powerful sedative." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(!data) data = 1 switch(data) @@ -1248,7 +1271,7 @@ datum id = "beer2" description = "An alcoholic beverage made from malted grains, hops, yeast, and water." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(!data) data = 1 switch(data) @@ -1274,7 +1297,7 @@ datum description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(prob(50)) M:heal_organ_damage(1,0) M:nutrition += nutriment_factor // For hunger and fatness @@ -1314,7 +1337,7 @@ datum description = "This is what makes chilis hot." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:bodytemperature += 5 if(prob(40)) @@ -1328,7 +1351,7 @@ datum description = "A special oil that noticably chills the body. Extraced from Icepeppers." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:bodytemperature -= 5 if(prob(40)) @@ -1354,7 +1377,7 @@ datum name = "Amatoxin" id = "amatoxin" description = "A powerful poison derived from certain species of mushroom." - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:toxloss++ ..() @@ -1364,7 +1387,7 @@ datum name = "Psilocybin" id = "psilocybin" description = "A strong psycotropic derived from certain species of mushroom." - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M.druggy = max(M.druggy, 30) if(!data) data = 1 @@ -1395,7 +1418,7 @@ datum id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." nutriment_factor = 1 * REAGENTS_METABOLISM - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:nutrition += nutriment_factor if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden")) if(!M) M = holder.my_atom @@ -1410,7 +1433,7 @@ datum id = "syndicream" description = "Delicious cream filling of a mysterious origin. Tastes criminally good." nutriment_factor = 1 * REAGENTS_METABOLISM - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:nutrition += nutriment_factor if(istype(M, /mob/living/carbon/human) && M.mind) if(M.mind.special_role) @@ -1427,7 +1450,7 @@ datum description = "An oil derived from various types of corn." reagent_state = LIQUID nutriment_factor = 20 * REAGENTS_METABOLISM - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:nutrition += nutriment_factor ..() return @@ -1470,7 +1493,7 @@ datum description = "A delicious blend of several different kinds of berries." reagent_state = LIQUID nutriment_factor = 1 * REAGENTS_METABOLISM - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:nutrition += nutriment_factor ..() @@ -1487,7 +1510,7 @@ datum id = "dry_ramen" description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() M:nutrition += 1 return @@ -1497,7 +1520,7 @@ datum id = "hot_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature+10) @@ -1509,7 +1532,7 @@ datum id = "hell_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() M:bodytemperature += 10 M:nutrition += 5 @@ -1524,7 +1547,7 @@ datum id = "milk" description = "An opaque white liquid produced by the mammary glands of mammals." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M:bruteloss && prob(10)) M:heal_organ_damage(1,0) M:nutrition++ @@ -1536,7 +1559,7 @@ datum id = "soymilk" description = "An opaque white liquid made from soybeans." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M:bruteloss && prob(10)) M:heal_organ_damage(1,0) M:nutrition++ @@ -1548,7 +1571,7 @@ datum id = "coffee" description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) @@ -1564,7 +1587,7 @@ datum id = "tea" description = "Tasty black tea, it has antioxidants, it's good for you!" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() M.dizziness = max(0,M.dizziness-2) M:drowsyness = max(0,M:drowsyness-1) @@ -1582,7 +1605,7 @@ datum id = "icecoffee" description = "Coffee and ice, refreshing and cool." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) @@ -1598,7 +1621,7 @@ datum id = "icetea" description = "No relation to a certain rap artist/ actor." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() M.dizziness = max(0,M.dizziness-2) M:drowsyness = max(0,M:drowsyness-1) @@ -1613,7 +1636,7 @@ datum id = "h_chocolate" description = "Made with love! And coco beans." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) ..() if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature+5) @@ -1625,7 +1648,7 @@ datum id = "cola" description = "A refreshing beverage." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-5) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature-5) @@ -1638,7 +1661,7 @@ datum id = "spacemountainwind" description = "Blows right through you like a space wind." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-7) M:sleeping = 0 if (M.bodytemperature > 310) @@ -1653,7 +1676,7 @@ datum id = "thirteenloko" description = "A potent mixture of caffeine and alcohol." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-7) M:sleeping = 0 if (M.bodytemperature > 310) @@ -1676,7 +1699,7 @@ datum id = "dr_gibb" description = "A delicious blend of 42 different flavours" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M:drowsyness = max(0,M:drowsyness-6) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) //310 is the normal bodytemp. 310.055 @@ -1689,7 +1712,7 @@ datum id = "space_up" description = "Tastes like a hull breach in your mouth." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-8) //310 is the normal bodytemp. 310.055 M:nutrition += 1 @@ -1701,7 +1724,7 @@ datum id = "beer" description = "An alcoholic beverage made from malted grains, hops, yeast, and water." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.make_dizzy(3) @@ -1721,7 +1744,7 @@ datum id = "whiskey" description = "A superb and well-aged single-malt whiskey. Damn." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -1738,7 +1761,7 @@ datum id = "specialwhiskey" description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -1756,7 +1779,7 @@ datum id = "gin" description = "It's gin. In space. I say, good sir." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -1773,7 +1796,7 @@ datum id = "rum" description = "Yohoho and all that." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -1790,7 +1813,7 @@ datum id = "vodka" description = "Number one drink AND fueling choice for Russians worldwide." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -1807,7 +1830,7 @@ datum id = "tequilla" description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -1824,7 +1847,7 @@ datum id = "vermouth" description = "You suddenly feel a craving for a martini..." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -1841,7 +1864,7 @@ datum id = "wine" description = "An premium alchoholic beverage made from distilled grape juice." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=2 @@ -1858,7 +1881,7 @@ datum id = "tonic" description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) M:sleeping = 0 @@ -1872,7 +1895,7 @@ datum id = "orangejuice" description = "Both delicious AND rich in Vitamin C, what more do you need?" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M:oxyloss && prob(30)) M:oxyloss-- if(M:bruteloss && prob(30)) M:heal_organ_damage(1,0) @@ -1887,7 +1910,7 @@ datum id = "tomatojuice" description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M:oxyloss && prob(20)) M:oxyloss-- if(M:bruteloss && prob(20)) M:heal_organ_damage(1,0) @@ -1902,7 +1925,7 @@ datum id = "limejuice" description = "The sweet-sour juice of limes." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M:oxyloss && prob(20)) M:oxyloss-- if(M:bruteloss && prob(20)) M:heal_organ_damage(1,0) @@ -1918,7 +1941,7 @@ datum id = "kahlua" description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) M:sleeping = 0//Copy-paste from Coffee, derp @@ -1932,7 +1955,7 @@ datum id = "cognac" description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -1955,7 +1978,7 @@ datum id = "hooch" description = "Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that?" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=6 @@ -1972,7 +1995,7 @@ datum id = "ale" description = "A dark alchoholic beverage made by malted barley and yeast." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -1989,7 +2012,7 @@ datum id = "sodawater" description = "A can of club soda. Why not make a scotch and soda?" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M.dizziness = max(0,M.dizziness-5) M:drowsyness = max(0,M:drowsyness-3) M:sleeping = 0 @@ -2003,7 +2026,7 @@ datum id = "ice" description = "Frozen water, your dentist wouldn't like you chewing this." reagent_state = SOLID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:bodytemperature -= 5 ..() @@ -2017,7 +2040,7 @@ datum id = "gintonic" description = "An all time classic, mild cocktail." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2034,7 +2057,7 @@ datum id = "cubalibre" description = "Rum, mixed with cola. Viva la revolution." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2051,7 +2074,7 @@ datum id = "whiskeycola" description = "Whiskey, mixed with cola. Surprisingly refreshing." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2068,7 +2091,7 @@ datum id = "martini" description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2085,7 +2108,7 @@ datum id = "vodkamartini" description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2102,7 +2125,7 @@ datum id = "whiterussian" description = "That's just, like, your opinion, man..." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2119,7 +2142,7 @@ datum id = "screwdrivercocktail" description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2136,7 +2159,7 @@ datum id = "bloodymary" description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2153,7 +2176,7 @@ datum id = "gargleblaster" description = "Whoah, this stuff looks volatile!" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=6 @@ -2172,7 +2195,7 @@ datum id = "bravebull" description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2189,7 +2212,7 @@ datum id = "tequillasunrise" description = "Tequilla and orange juice. Much like a Screwdriver, only Mexican~" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2206,7 +2229,7 @@ datum id = "toxinsspecial" description = "This thing is FLAMING!. CALL THE DAMN SHUTTLE!" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if (M.bodytemperature < 330) M.bodytemperature = min(330, M.bodytemperature+15) //310 is the normal bodytemp. 310.055 if(!data) data = 1 @@ -2225,7 +2248,7 @@ datum id = "beepskysmash" description = "Deny drinking this and prepare for THE LAW." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) M.stunned = 2 if(!data) data = 1 data++ @@ -2243,7 +2266,7 @@ datum id = "doctorsdelight" description = "A gulp a day keeps the MediBot away. That's probably for the best." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M:oxyloss && prob(50)) M:oxyloss -= 2 if(M:bruteloss && prob(60)) M:heal_organ_damage(2,0) @@ -2259,7 +2282,7 @@ datum id = "irishcream" description = "Whiskey-imbued cream, what else would you expect from the Irish." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2276,7 +2299,7 @@ datum id = "manlydorf" description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=5 @@ -2293,7 +2316,7 @@ datum id = "longislandicedtea" description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2310,7 +2333,7 @@ datum id = "moonshine" description = "You've really hit rock bottom now... your liver packed its bags and left last night." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=5 @@ -2327,7 +2350,7 @@ datum id = "b52" description = "Coffee, Irish Cream, and congac. You will get bombed." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2344,7 +2367,7 @@ datum id = "irishcoffee" description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=3 @@ -2361,7 +2384,7 @@ datum id = "margarita" description = "On the rocks with salt on the rim. Arriba~!" reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -2378,7 +2401,7 @@ datum id = "blackrussian" description = "For the lactose-intolerant. Still as classy as a White Russian." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -2395,7 +2418,7 @@ datum id = "manhattan" description = "The Detective's undercover drink of choice. He never could stomach gin..." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -2412,7 +2435,7 @@ datum id = "whiskeysoda" description = "Ultimate refreshment." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -2429,7 +2452,7 @@ datum id = "vodkatonic" description = "For when a gin and tonic isn't russian enough." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -2446,7 +2469,7 @@ datum id = "ginfizz" description = "Refreshingly lemony, deliciously dry." reagent_state = LIQUID - on_mob_life(var/mob/M) + on_mob_life(var/mob/living/M as mob) if(!data) data = 1 data++ M.dizziness +=4 @@ -2456,4 +2479,4 @@ datum else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) ..() - return \ No newline at end of file + return diff --git a/code/WorkInProgress/Chemistry-Tools.dm b/code/WorkInProgress/Chemistry-Tools.dm index b0e8573842f..9a93d167384 100644 --- a/code/WorkInProgress/Chemistry-Tools.dm +++ b/code/WorkInProgress/Chemistry-Tools.dm @@ -387,7 +387,7 @@ if(!istype(M,/mob/living/carbon)) continue if(M == user) continue D.reagents.trans_to(M, 15) - M.bruteloss += 5 + M.take_organ_damage(5) for(var/mob/O in viewers(world.view, D)) O.show_message(text("\red [] was hit by the syringe!", M), 1) diff --git a/code/datums/disease.dm b/code/datums/disease.dm index 7db3a266cc1..0a4bdcec068 100644 --- a/code/datums/disease.dm +++ b/code/datums/disease.dm @@ -25,7 +25,7 @@ to null does not delete the object itself. Thank you. var/spread_type = AIRBORNE var/contagious_period = 0//the disease stage when it can be spread var/list/affected_species = list() - var/mob/affected_mob = null //the mob which is affected by disease. + var/mob/living/carbon/affected_mob = null //the mob which is affected by disease. var/holder = null //the atom containing the disease (mob or obj) var/carrier = 0.0 //there will be a small chance that the person will be a carrier var/curable = 1 //can this disease be cured? (By itself...) diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm index 37a22ebdabf..e581010e772 100644 --- a/code/datums/diseases/alien_embryo.dm +++ b/code/datums/diseases/alien_embryo.dm @@ -47,8 +47,7 @@ if(prob(2)) affected_mob << "\red Your muscles ache." if(prob(20)) - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) if(prob(2)) affected_mob << "\red Your stomach hurts." if(prob(20)) diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 23ad82b4c03..92ea7c5057e 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -25,8 +25,7 @@ if(prob(1)) affected_mob << "\red Your muscles ache." if(prob(20)) - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) if(prob(1)) affected_mob << "\red Your stomach hurts." if(prob(20)) diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index 90b4b840cc1..094ed4aea52 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -26,8 +26,7 @@ if(prob(1)) affected_mob << "\red Your muscles ache." if(prob(20)) - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) if(prob(1)) affected_mob << "\red Your stomach hurts." if(prob(20)) @@ -46,8 +45,7 @@ if(prob(1)) affected_mob << "\red Your muscles ache." if(prob(20)) - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) if(prob(1)) affected_mob << "\red Your stomach hurts." if(prob(20)) diff --git a/code/datums/diseases/robotic_transformation.dm b/code/datums/diseases/robotic_transformation.dm index 4c533afe034..b1f9346307d 100644 --- a/code/datums/diseases/robotic_transformation.dm +++ b/code/datums/diseases/robotic_transformation.dm @@ -20,8 +20,7 @@ if(2) if (prob(8)) affected_mob << "Your joints feel stiff." - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) if (prob(9)) affected_mob << "\red Beep...boop.." if (prob(9)) @@ -29,14 +28,12 @@ if(3) if (prob(8)) affected_mob << "\red Your joints feel very stiff." - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) if (prob(8)) affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) if (prob(10)) affected_mob << "Your skin feels loose." - affected_mob.bruteloss += 5 - affected_mob.updatehealth() + affected_mob.take_organ_damage(5) if (prob(4)) affected_mob << "\red You feel a stabbing pain in your head." affected_mob.paralysis += 2 @@ -45,8 +42,7 @@ if(4) if (prob(10)) affected_mob << "\red Your skin feels very loose." - affected_mob.bruteloss += 8 - affected_mob.updatehealth() + affected_mob.take_organ_damage(8) if (prob(20)) affected_mob.say(pick("beep, beep!", "Boop bop boop beep.", "kkkiiiill mmme", "I wwwaaannntt tttoo dddiiieeee...")) if (prob(8)) diff --git a/code/datums/diseases/xeno_transformation.dm b/code/datums/diseases/xeno_transformation.dm index e13adaf788e..92dfe91c534 100644 --- a/code/datums/diseases/xeno_transformation.dm +++ b/code/datums/diseases/xeno_transformation.dm @@ -18,8 +18,7 @@ if(2) if (prob(8)) affected_mob << "Your throat feels scratchy." - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) if (prob(9)) affected_mob << "\red Kill..." if (prob(9)) @@ -27,16 +26,14 @@ if(3) if (prob(8)) affected_mob << "\red Your throat feels very scratchy." - affected_mob.bruteloss += 1 - affected_mob.updatehealth() + affected_mob.take_organ_damage(1) /* if (prob(8)) affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop")) */ if (prob(10)) affected_mob << "Your skin feels tight." - affected_mob.bruteloss += 5 - affected_mob.updatehealth() + affected_mob.take_organ_damage(5) if (prob(4)) affected_mob << "\red You feel a stabbing pain in your head." affected_mob.paralysis += 2 @@ -45,8 +42,7 @@ if(4) if (prob(10)) affected_mob << pick("\red Your skin feels very tight.", "\red Your blood boils!") - affected_mob.bruteloss += 8 - affected_mob.updatehealth() + affected_mob.take_organ_damage(8) if (prob(20)) affected_mob.say(pick("You look delicious.", "Going to... devour you...", "Hsssshhhhh!")) if (prob(8)) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 1b9469a3c52..13f384b8e5e 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1,7 +1,7 @@ datum/mind var/key - var/mob/current - var/mob/original + var/mob/living/current + var/mob/living/original var/memory diff --git a/code/datums/spells/disintegrate.dm b/code/datums/spells/disintegrate.dm index b30cb7e1673..80eb4237f7d 100644 --- a/code/datums/spells/disintegrate.dm +++ b/code/datums/spells/disintegrate.dm @@ -19,9 +19,9 @@ if(!cast_check()) return - var/mob/M = input("Choose whom to [kill_type]", "ABRAKADABRA") as mob in oview(usr,range) + var/mob/living/M = input("Choose whom to [kill_type]", "ABRAKADABRA") as mob in oview(usr,range) - if(!M) + if(!istype(M)) return invocation() diff --git a/code/datums/spells/fireball.dm b/code/datums/spells/fireball.dm index 0f6f63d077c..832c7ea99c6 100644 --- a/code/datums/spells/fireball.dm +++ b/code/datums/spells/fireball.dm @@ -38,9 +38,8 @@ for(i=0, i= max_targets) break @@ -49,7 +49,7 @@ step_to(A,M,0) if (get_dist(A,M) == 0) M.weakened += missile_weaken_amt - M.fireloss += missile_damage + M.take_organ_damage(0, missile_damage) del(A) return sleep(missile_step_delay) diff --git a/code/defines/mob/living/carbon/human.dm b/code/defines/mob/living/carbon/human.dm index 8f6464e8c70..7071c90880a 100644 --- a/code/defines/mob/living/carbon/human.dm +++ b/code/defines/mob/living/carbon/human.dm @@ -52,6 +52,8 @@ var/mutantrace = null + var/list/organs = list( ) + /mob/living/carbon/human/dummy real_name = "Test Dummy" nodamage = 1 \ No newline at end of file diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index 628ee6de95c..a391c453675 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -115,7 +115,7 @@ var/obj/hud/hud_used = null - var/list/organs = list( ) + //var/list/organs = list( ) //moved to human. var/list/grabbed_by = list( ) var/list/requests = list( ) diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm index d0713ffb1b0..9a08084388e 100644 --- a/code/defines/obj/clothing/suit.dm +++ b/code/defines/obj/clothing/suit.dm @@ -81,7 +81,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS permeability_coefficient = 0.25 heat_transfer_coefficient = 0.75 - allowed = list(/obj/item/device/analyzer,/obj/item/weapon/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen) + allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen) /obj/item/clothing/suit/labcoat/cmo name = "chief medical officer's labcoat" diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm index e947035f52f..eb55aa21b5c 100644 --- a/code/defines/obj/storage.dm +++ b/code/defines/obj/storage.dm @@ -34,7 +34,7 @@ "/obj/item/weapon/zippo", "/obj/item/weapon/cigpacket", "/obj/item/weapon/storage/pill_bottle", - "/obj/item/weapon/medical", + "/obj/item/stack/medical", "/obj/item/device/flashlight/pen" ) flags = FPRINT | TABLEPASS | ONBELT diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 01748291d8f..cbcb834066b 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -299,25 +299,29 @@ throw_range = 15 var/spam_flag = 0 -/obj/item/weapon/medical +/obj/item/stack/medical name = "medical pack" + singular_name = "medical pack" icon = 'items.dmi' - var/amount = 5 + amount = 5 + max_amount = 5 w_class = 1 throw_speed = 4 throw_range = 20 var/heal_brute = 0 var/heal_burn = 0 -/obj/item/weapon/medical/bruise_pack +/obj/item/stack/medical/bruise_pack name = "bruise pack" + singular_name = "bruise pack" desc = "A pack designed to treat blunt-force trauma." icon_state = "brutepack" heal_brute = 60 origin_tech = "biotech=1" -/obj/item/weapon/medical/ointment +/obj/item/stack/medical/ointment name = "ointment" + singular_name = "ointment" icon_state = "ointment" heal_burn = 40 origin_tech = "biotech=1" diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm index b6db98cce82..81373e2d7e3 100644 --- a/code/defines/procs/helpers.dm +++ b/code/defines/procs/helpers.dm @@ -709,7 +709,7 @@ text += "" if (the_client && the_client.holder && the_client.stealth && !include_name) - text += "Administrato" + text += "Administrator" else text += "[the_key]" diff --git a/code/game/dna.dm b/code/game/dna.dm index 632ab136f25..358cffbb1dd 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -265,7 +265,7 @@ else return 0 -/proc/domutcheck(mob/M as mob, connected, inj) +/proc/domutcheck(mob/living/M as mob, connected, inj) //telekinesis = 1 //firemut = 2 //xray = 4 @@ -337,26 +337,22 @@ //////////////////////////////////////////////////////////// Monkey Block if (isblockon(getblock(M.dna.struc_enzymes, 14,3),14) && istype(M, /mob/living/carbon/human)) // human > monkey + var/mob/living/carbon/human/H = M var/list/implants = list() //Try to preserve implants. - for(var/obj/item/weapon/W in M) - if (istype(W, /obj/item/weapon/implant)) - implants += W - for(var/obj/item/weapon/W in M) - M.u_equip(W) - if (M.client) - M.client.screen -= W - if (W) - W.loc = M.loc - W.dropped(M) - W.layer = initial(W.layer) + for(var/obj/item/weapon/implant/W in H) + implants += W if(!connected) + for(var/obj/item/W in (H.contents-implants)) + if (W==H.w_uniform) // will be teared + continue + H.drop_from_slot(W) M.update_clothing() M.monkeyizing = 1 M.canmove = 0 M.icon = null M.invisibility = 101 - var/atom/movable/overlay/animation = new /atom/movable/overlay( M.loc ) + var/atom/movable/overlay/animation = new( M.loc ) animation.icon_state = "blank" animation.icon = 'mob.dmi' animation.master = src @@ -364,15 +360,22 @@ sleep(48) del(animation) - var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey(src) + var/mob/living/carbon/monkey/O = new(src) if (M.dna) O.dna = M.dna M.dna = null - for(var/obj/T in M) + + O.virus = M.virus + M.virus = null + if (O.virus) + O.virus.affected_mob = O + + + for(var/obj/T in (M.contents-implants)) del(T) - for(var/R in M.organs) - del(M.organs[text("[]", R)]) + //for(var/R in M.organs) + // del(M.organs[text("[]", R)]) O.loc = M.loc @@ -385,40 +388,32 @@ C.occupant = O connected = null O.name = text("monkey ([])",copytext(md5(M.real_name), 2, 6)) + O.take_overall_damage(M.bruteloss + 40, M.fireloss) O.toxloss += (M.toxloss + 20) - O.bruteloss += (M.bruteloss + 40) O.oxyloss += M.oxyloss - O.fireloss += M.fireloss O.stat = M.stat O.a_intent = "hurt" for (var/obj/item/weapon/implant/I in implants) I.loc = O I.implanted = O - continue del(M) return if (!isblockon(getblock(M.dna.struc_enzymes, 14,3),14) && !istype(M, /mob/living/carbon/human)) - // monkey > human - var/list/implants = list() - for (var/obj/item/weapon/implant/I in M) //Still preserving implants - implants += I - + // monkey > human, + var/mob/living/carbon/monkey/Mo = M + var/list/implants = list() //Still preserving implants + for(var/obj/item/weapon/implant/W in Mo) + implants += W if(!connected) - for(var/obj/item/weapon/W in M) - M.u_equip(W) - if (M.client) - M.client.screen -= W - if (W) - W.loc = M.loc - W.dropped(M) - W.layer = initial(W.layer) + for(var/obj/item/W in (Mo.contents-implants)) + Mo.drop_from_slot(W) M.update_clothing() M.monkeyizing = 1 M.canmove = 0 M.icon = null M.invisibility = 101 - var/atom/movable/overlay/animation = new /atom/movable/overlay( M.loc ) + var/atom/movable/overlay/animation = new( M.loc ) animation.icon_state = "blank" animation.icon = 'mob.dmi' animation.master = src @@ -426,7 +421,7 @@ sleep(48) del(animation) - var/mob/living/carbon/human/O = new /mob/living/carbon/human( src ) + var/mob/living/carbon/human/O = new( src ) if (isblockon(getblock(M.dna.uni_identity, 11,3),11)) O.gender = FEMALE else @@ -434,8 +429,13 @@ O.dna = M.dna M.dna = null - for(var/obj/T in M) - del(T) + O.virus = M.virus + M.virus = null + if (O.virus) + O.virus.affected_mob = O + + //for(var/obj/T in M) + // del(T) O.loc = M.loc @@ -461,19 +461,18 @@ O.real_name = randomname i++ updateappearance(O,O.dna.uni_identity) + O.take_overall_damage(M.bruteloss, M.fireloss) O.toxloss += M.toxloss - O.bruteloss += M.bruteloss O.oxyloss += M.oxyloss - O.fireloss += M.fireloss O.stat = M.stat for (var/obj/item/weapon/implant/I in implants) I.loc = O I.implanted = O - continue del(M) return //////////////////////////////////////////////////////////// Monkey Block - if (M) M.update_clothing() + if (M) + M.update_clothing() return null /////////////////////////// DNA MISC-PROCS diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index ccf645ec770..4f38323b13b 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -88,7 +88,7 @@ usr << "\blue We stab [T] with the proboscis." usr.visible_message(text("\red [usr] stabs [T] with the proboscis!")) T << "\red You feel a sharp stabbing pain!" - T.bruteloss += 40 + T.take_overall_damage(40) if (!do_mob(usr, T, 150)) usr << "\red Our absorption of [T] has been interrupted!" @@ -191,8 +191,8 @@ for(var/obj/T in usr) del(T) - for(var/R in usr.organs) - del(usr.organs[text("[]", R)]) + //for(var/R in usr.organs) //redundant, let's give garbage collector work to do --rastaf0 + // del(usr.organs[text("[]", R)]) O.loc = usr.loc @@ -341,7 +341,8 @@ usr.radiation = 0 //usr.health = 100 //usr.updatehealth() - usr.heal_overall_damage(1000, 1000) + var/mob/living/M = src + M.heal_overall_damage(1000, 1000) usr.reagents.clear_reagents() usr.lying = 0 usr.canmove = 1 diff --git a/code/game/gamemodes/wizard/spells.dm b/code/game/gamemodes/wizard/spells.dm index a6e3375a0e4..3162f6b8c6f 100644 --- a/code/game/gamemodes/wizard/spells.dm +++ b/code/game/gamemodes/wizard/spells.dm @@ -48,7 +48,7 @@ usr.say("FORTI GY AMA") usr.spellvoice() - for (var/mob/M as mob in oview()) + for (var/mob/living/M as mob in oview()) spawn(0) var/obj/overlay/A = new /obj/overlay( usr.loc ) A.icon_state = "magicm" @@ -71,7 +71,7 @@ step_to(A,M,0) if (get_dist(A,M) == 0) M.weakened += 5 - M.fireloss += 10 + M.take_overall_damage(0,10) del(A) return sleep(5) @@ -155,7 +155,7 @@ //FIREBALLAN -/client/proc/fireball(mob/T as mob in oview()) +/client/proc/fireball(mob/living/T as mob in oview()) set category = "Spells" set name = "Fireball" set desc = "This spell fires a fireball at a target and does not require wizard garb." @@ -181,9 +181,7 @@ for(i=0, i<100, i++) step_to(A,T,0) if (get_dist(A,T) <= 1) - T.bruteloss += 20 - T.fireloss += 25 - + T.take_overall_damage(20,25) explosion(T.loc, -1, -1, 2, 2) del(A) return @@ -279,13 +277,12 @@ fuckthis:ignite() - for(var/mob/M in viewers(world.view-1, myturf)) + for(var/mob/living/M in viewers(world.view-1, myturf)) - if(!istype(M, /mob/living)) continue if(M == usr) continue if (istype(M, /mob/living/silicon)) - M.fireloss += 25 + M.take_overall_damage(0,25) flick("noise", M:flash) M << "\red *BZZZT*" M << "\red Warning: Electromagnetic pulse detected." diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm index e09bcb8e758..159137d0942 100644 --- a/code/game/jobs/jobprocs.dm +++ b/code/game/jobs/jobprocs.dm @@ -567,7 +567,7 @@ src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes) src.equip_if_possible(new /obj/item/clothing/under/rank/research_director(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit) - src.equip_if_possible(new /obj/item/weapon/pen(src), slot_l_hand) + //src.equip_if_possible(new /obj/item/weapon/pen(src), slot_l_hand) src.equip_if_possible(new /obj/item/weapon/clipboard(src), slot_r_hand) src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index abc1d03f6af..f114e07ef91 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -198,7 +198,7 @@ else return -/obj/machinery/sleeper/alter_health(mob/M as mob) +/obj/machinery/sleeper/alter_health(mob/living/M as mob) if (M.health > 0) if (M.oxyloss >= 10) var/amount = max(0.15, 1) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index ebf4bd0b608..fd16703a4d5 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -964,4 +964,5 @@ s.start() new /obj/decal/cleanable/oil(src.loc) + unload(0) del(src) \ No newline at end of file diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 0c429acbbf0..f63552a1012 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -9,7 +9,7 @@ var/on = 0 var/temperature_archived var/obj/overlay/O1 = null - var/mob/occupant = null + var/mob/living/carbon/occupant = null var/beaker = null var/next_trans = 0 @@ -212,7 +212,10 @@ src.occupant = null build_icon() return - put_mob(mob/M as mob) + put_mob(mob/living/carbon/M as mob) + if (!istype(M)) + usr << "\red The cryo cell cannot handle such liveform!" + return if (src.occupant) usr << "\red The cryo cell is already occupied!" return diff --git a/code/game/machinery/morgue.dm b/code/game/machinery/morgue.dm index 3cdd88b526f..31b38b9c3ea 100644 --- a/code/game/machinery/morgue.dm +++ b/code/game/machinery/morgue.dm @@ -256,48 +256,28 @@ else if(contents) cremating = 1 locked = 1 - var/mob/dead/observer/newmob - for (var/M in contents) - if (istype(M,/mob/living) && M:client) - spawn(1) - var/i - M:stunned = 100 //You really dont want to place this inside the loop. - - newmob = new/mob/dead/observer(M) - M:client:mob = newmob - - for(i=0, i<10, i++) - sleep(10) - M:fireloss += 30 - new /obj/decal/ash(M:loc) - - //newmob.loc = src.loc - - newmob:client:eye = newmob // Hrm - for (var/obj/item/weapon/W in M) - if (prob(10)) - W.loc = M:loc - del(M) - else if (istype(M,/mob/living) && !(M:client)) // - spawn(0) - if(M) - var/i - M:stunned = 100 - for(i=0, i<10, i++) - sleep(10) - M:fireloss += 50 - new /obj/decal/ash(M:loc) - for (var/obj/item/weapon/W in M) - if (prob(10)) - W.loc = M:loc - del(M) - for (var/mob/M in viewers(user)) + for (var/mob/living/M in contents) + M:stunned = 100 //You really dont want to place this inside the loop. + spawn(1) + for(var/i=1 to 10) + sleep(10) + M.take_overall_damage(0,30) + if (M.stat!=2 && prob(30)) + M.emote("scream") + new /obj/decal/ash(src) + for (var/obj/item/W in M) + if (prob(10)) + W.loc = src + if (M.client) + var/mob/dead/observer/newmob = new(M) + M.client.mob = newmob + newmob.client.eye = newmob // Hrm + del(M) + cremating = 0 + locked = 0 + playsound(src.loc, 'ding.ogg', 50, 1) + for (var/mob/M in viewers(src)) M.show_message("\red You hear a roar as the crematorium activates.", 1) - spawn(100) - cremating = 0 - locked = 0 - playsound(src.loc, 'ding.ogg', 50, 1) - return /obj/c_tray/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 0ba593e8fe3..24952c426e6 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -158,8 +158,8 @@ for(var/mob/O in viewers(M, null)) O.show_message(text("\red The [] bounces off of the portal!", M.name), 1) return - if (istype(M, /mob)) - var/mob/MM = M + if (istype(M, /mob/living)) + var/mob/living/MM = M if(MM.check_contents_for(/obj/item/weapon/disk/nuclear)) MM << "\red Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through." return @@ -175,8 +175,8 @@ disky = 1 if (istype(O, /obj/item/weapon/disk/nuclear)) disky = 1 - if (istype(O, /mob)) - var/mob/MM = O + if (istype(O, /mob/living)) + var/mob/living/MM = O if(MM.check_contents_for(/obj/item/weapon/disk/nuclear)) disky = 1 if (disky) @@ -185,8 +185,8 @@ return //Bags of Holding cause bluespace teleportation to go funky. --NeoFite - if (istype(M, /mob)) - var/mob/MM = M + if (istype(M, /mob/living)) + var/mob/living/MM = M if(MM.check_contents_for(/obj/item/weapon/storage/backpack/holding)) MM << "\red The Bluespace interface on your Bag of Holding interferes with the teleport!" precision = rand(1,100) @@ -203,8 +203,8 @@ precision = rand(1,100) if (istype(O, /obj/item/weapon/storage/backpack/holding)) precision = rand(1,100) - if (istype(O, /mob)) - var/mob/MM = O + if (istype(O, /mob/living)) + var/mob/living/MM = O if(MM.check_contents_for(/obj/item/weapon/storage/backpack/holding)) precision = rand(1,100) diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index c2a6e3901a3..8abbb2e974b 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -362,7 +362,16 @@ var/runedec = 0 "} - attack(mob/M as mob, mob/user as mob) + attack(mob/living/M as mob, mob/living/user as mob) + if(istype(M,/mob/dead)) + M.invisibility = 0 + user.visible_message( \ + "\red [user] drags the ghost to our plan of reality!", \ + "\red You drag the ghost to our plan of reality!" \ + ) + return + if(!istype(M)) + return if(!iscultist(user)) return ..() if(iscultist(M)) @@ -374,7 +383,7 @@ var/runedec = 0 - attack_self(mob/user as mob) + attack_self(mob/living/user as mob) if(!wordtravel) runerandom() if(iscultist(user)) @@ -414,7 +423,7 @@ var/runedec = 0 for (var/mob/V in viewers(src)) V.show_message("\red [user] slices open a finger and begins to chant and paint symbols on the floor.", 3, "\red You hear chanting.", 2) user << "\red You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world." - user.bruteloss += 1 + user.take_overall_damage(1) if(do_after(user, 50)) var/mob/living/carbon/human/H = user var/obj/rune/R = new /obj/rune(user.loc) @@ -624,8 +633,8 @@ var/runedec = 0 var/imbue = null var/uses = 0 - attack_self(mob/user as mob) - usr.take_organ_damage(5, 0) + attack_self(mob/living/user as mob) + user.take_organ_damage(5, 0) switch(imbue) if("newtome") call(/obj/rune/proc/tomesummon)() diff --git a/code/game/magic/cultist/runes.dm b/code/game/magic/cultist/runes.dm index 83c9789831e..e6bb307df66 100644 --- a/code/game/magic/cultist/runes.dm +++ b/code/game/magic/cultist/runes.dm @@ -4,6 +4,7 @@ var/list/sacrificed = list() /////////////////////////////////////////FIRST RUNE proc teleport(var/key) + var/mob/living/user = usr var/allrunesloc[] allrunesloc = new/list() var/index = 0 @@ -16,18 +17,19 @@ var/list/sacrificed = list() allrunesloc.len = index allrunesloc[index] = R.loc if(index >= 5) - usr << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric" - usr.take_overall_damage(5, 0) + user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric" + if (istype(user, /mob/living)) + user.take_overall_damage(5, 0) del(src) if(allrunesloc && index != 0) if(istype(src,/obj/rune)) - usr.say("Sas'so c'arta forbici!") + user.say("Sas'so c'arta forbici!") else - usr.whisper("Sas'so c'arta forbici!") - usr.visible_message("\red [usr] disappears in a flash of red light!", \ + user.whisper("Sas'so c'arta forbici!") + user.visible_message("\red [user] disappears in a flash of red light!", \ "\red You feel as your body gets dragged through the dimension of Nar-Sie!", \ "\red You hear a sickening crunch and sloshing of viscera.") - usr.loc = allrunesloc[rand(1,index)] + user.loc = allrunesloc[rand(1,index)] return if(istype(src,/obj/rune)) return fizzle() //Use friggin manuals, Dorf, your list was of zero length. @@ -44,6 +46,7 @@ var/list/sacrificed = list() var/culcount = 0 var/runecount = 0 var/obj/rune/IP = null + var/mob/living/user = usr for(var/obj/rune/R in world) if(R == src) continue @@ -51,15 +54,16 @@ var/list/sacrificed = list() IP = R runecount++ if(runecount >= 2) - usr << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric" - usr.take_overall_damage(5, 0) + user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric" + if (istype(user, /mob/living)) + user.take_overall_damage(5, 0) del(src) for(var/mob/living/carbon/C in orange(1,src)) if(iscultist(C)) culcount++ if(culcount>=3) - usr.say("Sas'so c'arta forbici tarem!") - usr.visible_message("\red You feel air moving from the rune - like as it was swapped with somewhere else.", \ + user.say("Sas'so c'arta forbici tarem!") + user.visible_message("\red You feel air moving from the rune - like as it was swapped with somewhere else.", \ "\red You feel air moving from the rune - like as it was swapped with somewhere else.", \ "\red You smell ozone.") for(var/obj/O in src.loc) @@ -171,24 +175,25 @@ var/list/sacrificed = list() usr.visible_message("\red Blood flows from the rune into [usr]!", \ "\red The blood starts flowing from the rune and into your frail mortal body. You feel... empowered.", \ "\red You hear a liquid flowing.") - if(usr.bhunger) - usr.bhunger = max(usr.bhunger-2*drain,0) + var/mob/living/user = usr + if(user.bhunger) + user.bhunger = max(user.bhunger-2*drain,0) if(drain>=50) - usr.visible_message("\red [usr]'s eyes give off eerie red glow!", \ + user.visible_message("\red [user]'s eyes give off eerie red glow!", \ "\red ...but it wasn't nearly enough. You crave, crave for more. The hunger consumes you from within.", \ "\red You hear a heartbeat.") - usr.bhunger += drain - src = usr + user.bhunger += drain + src = user spawn() - for (,usr.bhunger>0,usr.bhunger--) + for (,user.bhunger>0,user.bhunger--) sleep(50) - usr.take_overall_damage(3, 0) + user.take_overall_damage(3, 0) return - usr.heal_organ_damage(drain%5, 0) + user.heal_organ_damage(drain%5, 0) drain-=drain%5 for (,drain>0,drain-=5) sleep(2) - usr.heal_organ_damage(5, 0) + user.heal_organ_damage(5, 0) return @@ -404,8 +409,9 @@ var/list/sacrificed = list() ticker.mode.cult+=D.mind D << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." D << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." - while(this_rune && usr && usr.stat==0 && usr.client && usr.loc==this_rune.loc) - usr.take_organ_damage(1, 0) + var/mob/living/user = usr + while(this_rune && user && user.stat==0 && user.client && user.loc==this_rune.loc) + user.take_organ_damage(1, 0) sleep(30) D.visible_message("\red [D] slowly dissipates into dust and bones.", \ "\red You feel pain, as bonds formed between your soul and this homunculus break.", \ @@ -486,6 +492,7 @@ var/list/sacrificed = list() V.show_message("\red The runes turn into dust, which then forms into an arcane image on the paper.", 3) usr.say("H'drak v'loso, mir'kanas verbot!") del(imbued_from) + del(newtalisman) del(src) else return fizzle() @@ -493,16 +500,17 @@ var/list/sacrificed = list() /////////////////////////////////////////THIRTEENTH RUNE mend() + var/mob/living/user = usr src = null - usr.say("Uhrast ka'hfa heldsagen ver'lot!") - usr.take_overall_damage(200, 0) + user.say("Uhrast ka'hfa heldsagen ver'lot!") + user.take_overall_damage(200, 0) runedec+=10 - usr.visible_message("\red [usr] keels over dead, his blood glowing blue as it escapes his body and dissipates into thin air.", \ + user.visible_message("\red [user] keels over dead, his blood glowing blue as it escapes his body and dissipates into thin air.", \ "\red In the last moment of your humbly life, you feel as fabric of reality mends... with your blood.", \ "\red You hear faint rustle.") - for(,usr.stat==2) + for(,user.stat==2) sleep(600) - if (!usr) + if (!user) return runedec-=10 return @@ -676,7 +684,8 @@ var/list/sacrificed = list() wall() usr.say("Khari'd! Eske'te tannin!") src.density = !src.density - usr.take_organ_damage(2, 0) + var/mob/living/user = usr + user.take_organ_damage(2, 0) if(src.density) usr << "\red Your blood flows into the rune, and you feel that the very space over the rune thickens." else @@ -686,6 +695,7 @@ var/list/sacrificed = list() /////////////////////////////////////////EIGHTTEENTH RUNE freedom() + var/mob/living/user = usr var/list/mob/living/carbon/cultists = new for(var/datum/mind/H in ticker.mode.cult) if (istype(H.current,/mob/living/carbon)) @@ -698,7 +708,7 @@ var/list/sacrificed = list() var/mob/cultist = input("Choose the one who you want to free", "Followers of Geometer") as null|anything in (cultists - users) if(!cultist) return fizzle() - if (cultist == usr) //just to be sure. + if (cultist == user) //just to be sure. return if(!(cultist.buckled || \ cultist.handcuffed || \ @@ -707,7 +717,7 @@ var/list/sacrificed = list() (istype(cultist.loc, /obj/secure_closet)&&cultist.loc:locked) || \ (istype(cultist.loc, /obj/machinery/dna_scannernew)&&cultist.loc:locked) \ )) - usr << "\red The [cultist] is already free." + user << "\red The [cultist] is already free." return cultist.buckled = null if (cultist.handcuffed) @@ -722,7 +732,7 @@ var/list/sacrificed = list() if(istype(cultist.loc, /obj/machinery/dna_scannernew)&&cultist.loc:locked) cultist.loc:locked = 0 for(var/mob/living/carbon/C in users) - usr.take_overall_damage(15, 0) + user.take_overall_damage(15, 0) C.say("Khari'd! Gual'te nikka!") del(src) return fizzle() @@ -730,6 +740,7 @@ var/list/sacrificed = list() /////////////////////////////////////////NINETEENTH RUNE cultsummon() + var/mob/living/user = usr var/list/mob/living/carbon/cultists = new for(var/datum/mind/H in ticker.mode.cult) if (istype(H.current,/mob/living/carbon)) @@ -739,13 +750,13 @@ var/list/sacrificed = list() if(iscultist(C)) users+=C if(users.len>=3) - var/mob/cultist = input("Choose the one who you want to summon", "Followers of Geometer") as null|anything in (cultists - usr) + var/mob/cultist = input("Choose the one who you want to summon", "Followers of Geometer") as null|anything in (cultists - user) if(!cultist) return fizzle() - if (cultist == usr) //just to be sure. + if (cultist == user) //just to be sure. return if(cultist.buckled || cultist.handcuffed || (!isturf(cultist.loc) && !istype(cultist.loc, /obj/closet))) - usr << "\red You cannot summon the [cultist], for him shackles of blood are strong" + user << "\red You cannot summon the [cultist], for him shackles of blood are strong" return fizzle() cultist.loc = src.loc cultist.lying = 1 @@ -754,7 +765,7 @@ var/list/sacrificed = list() if(iscultist(C)) C.say("N'ath reth sh'yro eth d'rekkathnor!") C.take_overall_damage(25, 0) - usr.visible_message("\red Rune disappears with a flash of red light, and in it's place now a body lies.", \ + user.visible_message("\red Rune disappears with a flash of red light, and in it's place now a body lies.", \ "\red You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a body.", \ "\red You hear a pop and smell ozone.") del(src) @@ -871,7 +882,7 @@ var/list/sacrificed = list() if(culcount >= 5) for(var/obj/rune/R in world) if(R.blood_DNA == src.blood_DNA && R.blood_type == src.blood_type) - for(var/mob/M in orange(2,R)) + for(var/mob/living/M in orange(2,R)) M.take_overall_damage(0,15) if (R.invisibility>M.see_invisible) M << "\red Aargh it burns!" @@ -881,7 +892,7 @@ var/list/sacrificed = list() T.hotspot_expose(700,125) for(var/obj/decal/cleanable/blood/B in world) if(B.blood_DNA == src.blood_DNA && B.blood_type == src.blood_type) - for(var/mob/M in orange(1,B)) + for(var/mob/living/M in orange(1,B)) M.take_overall_damage(0,5) M << "\red Blood suddenly ignites, burning you!" var/turf/T = get_turf(B) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index c6cc0f83a6b..548c538fc2b 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -39,8 +39,8 @@ if(internal_damage&MECHA_INT_CONTROL_LOST) target = pick(oview(1,src)) if(!melee_can_hit || !istype(target, /atom)) return - if(istype(target, /mob)) - var/mob/M = target + if(istype(target, /mob/living)) + var/mob/living/M = target if(src.occupant.a_intent == "hurt") playsound(src, 'punch4.ogg', 50, 1) if(damtype == "brute") @@ -75,9 +75,9 @@ switch(damtype) if("brute") M.paralysis += 1 - M.bruteloss += rand(force/2, force) + M.take_overall_damage(rand(force/2, force)) if("fire") - M.fireloss += rand(force/2, force) + M.take_overall_damage(0, rand(force/2, force)) if("tox") M.toxloss += rand(force/2, force) else diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 2f4da4dd701..39fb255c7d7 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -47,11 +47,11 @@ else chassis.occupant_message("[target] is firmly secured.") - else if(istype(target,/mob)) - var/mob/M = target + else if(istype(target,/mob/living)) + var/mob/living/M = target if(M.stat>1) return if(chassis.occupant.a_intent == "hurt") - M.bruteloss += dam_force + M.take_overall_damage(dam_force) M.oxyloss += round(dam_force/2) M.updatehealth() chassis.occupant_message("\red You squeese [target] with [src.name]. Something cracks.") @@ -498,14 +498,13 @@ proc/dynhitby(atom/movable/A) if(!action_checks(A)) return chassis.dynhitby(A) - if(prob(chassis.deflect_chance) || istype(A, /mob) || istype(A, /obj/item/mecha_tracking)) + if(prob(chassis.deflect_chance) || istype(A, /mob/living) || istype(A, /obj/item/mecha_tracking)) chassis.occupant_message("\blue The [A] bounces off the armor.") chassis.visible_message("The [A] bounces off the [chassis] armor") chassis.log_append_to_last("Armor saved.") - if(istype(A, /mob)) - var/mob/M = A - M.bruteloss += 10 - M.updatehealth() + if(istype(A, /mob/living)) + var/mob/living/M = A + M.take_organ_damage(10) else if(istype(A, /obj)) var/obj/O = A if(O.throwforce) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 79aa60d3455..d21ad8ded2a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -376,10 +376,9 @@ src.occupant_message("\blue The [A] bounces off the armor.") src.visible_message("The [A] bounces off the [src.name] armor") src.log_append_to_last("Armor saved.") - if(istype(A, /mob)) - var/mob/M = A - M.bruteloss += 10 - M.updatehealth() + if(istype(A, /mob/living)) + var/mob/living/M = A + M.take_organ_damage(10) else if(istype(A, /obj)) var/obj/O = A if(O.throwforce) diff --git a/code/game/objects/alien/facehugger.dm b/code/game/objects/alien/facehugger.dm index 5b467752e9e..f6f4a4fd5c6 100644 --- a/code/game/objects/alien/facehugger.dm +++ b/code/game/objects/alien/facehugger.dm @@ -239,7 +239,7 @@ for(var/mob/O in viewers(world.view,src)) O.show_message("\red [src.target] has been leapt on by [lamarr ? src.name : "the alien"]!", 1, "\red You hear someone fall", 2) if (!lamarr) - target:bruteloss += 5 + target:take_overall_damage(5) if(prob(70)) target:paralysis = max(target:paralysis, 5) src.loc = target.loc diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm index 289b5daccff..c88d16fe96a 100644 --- a/code/game/objects/items/item.dm +++ b/code/game/objects/items/item.dm @@ -160,9 +160,9 @@ O.amount -= 1 -/obj/item/proc/attack(mob/M as mob, mob/user as mob, def_zone) +/obj/item/proc/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - if (!M) // not sure if this is the right thing... + if (!istype(M)) // not sure if this is the right thing... return var/messagesource = M @@ -319,18 +319,87 @@ else switch(src.damtype) if("brute") - M.bruteloss += power + M.take_organ_damage(power) if (prob(33)) // Added blood for whacking non-humans too var/turf/location = M.loc if (istype(location, /turf/simulated)) location.add_blood_floor(M) if("fire") if (!(M.mutations & 2)) - M.fireloss += power + M.take_organ_damage(0, power) M << "Aargh it burns!" M.updatehealth() src.add_fingerprint(user) return 1 +/obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + + var/mob/living/carbon/human/H = M + if(istype(H) && ( \ + (H.head && H.head.flags & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \ + )) + // you can't stab someone in the eyes wearing a mask! + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + var/mob/living/carbon/monkey/Mo = M + if(istype(Mo) && ( \ + (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \ + )) + // you can't stab someone in the eyes wearing a mask! + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N + user << "\red You cannot locate any eyes on this creature!" + return + + src.add_fingerprint(user) + //if((user.mutations & 16) && prob(50)) + // M = user + /* + M << "\red You stab yourself in the eye." + M.sdisabilities |= 1 + M.weakened += 4 + M.bruteloss += 10 + */ + + if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] has been stabbed in the eye with [src] by [user].", 1) + M << "\red [user] stabs you in the eye with [src]!" + user << "\red You stab [M] in the eye with [src]!" + else + user.visible_message( \ + "\red [user] has stabbed themself with [src]!", \ + "\red You stab yourself in the eyes with [src]!" \ + ) + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(7) + else + M.take_organ_damage(7) + M.eye_blurry += rand(3,4) + M.eye_stat += rand(2,4) + if (M.eye_stat >= 10) + M.eye_blurry += 15+(0.1*M.eye_blurry) + M.disabilities |= 1 + if(M.stat != 2) + M << "\red Your eyes start to bleed profusely!" + if(prob(50)) + if(M.stat != 2) + M << "\red You drop what you're holding and clutch at your eyes!" + M.drop_item() + M.eye_blurry += 10 + M.paralysis += 1 + M.weakened += 4 + if (prob(M.eye_stat - 10 + 1)) + if(M.stat != 2) + M << "\red You go blind!" + M.sdisabilities |= 1 + return + diff --git a/code/game/objects/items/weapons/guns_ammo.dm b/code/game/objects/items/weapons/guns_ammo.dm index 639f1e8b0e7..ca60db75073 100644 --- a/code/game/objects/items/weapons/guns_ammo.dm +++ b/code/game/objects/items/weapons/guns_ammo.dm @@ -36,17 +36,17 @@ TELEPORT GUN var/mode = 1//I guess I'll leave this here in case another mode to the weapon is added./N - afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if ((user.mutations & 16) && prob(50)) - usr << "\red The pulse rifle blows up in your face." - usr.fireloss += 20 - usr.drop_item() + user << "\red The pulse rifle blows up in your face." + user.take_organ_damage(0,20) + user.drop_item() del(src) return if (flag) return if ((!istype(user, /mob/living/carbon/human)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" + user << "\red You don't have the dexterity to do this!" return src.add_fingerprint(user) @@ -70,7 +70,7 @@ TELEPORT GUN A.process() return -/obj/item/weapon/gun/energy/pulse_rifle/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/gun/energy/pulse_rifle/attack(mob/M as mob, mob/living/user as mob) ..() /* src.add_fingerprint(user) @@ -131,7 +131,7 @@ TELEPORT GUN ..() return -obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/user as mob) +obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/a357)) @@ -153,7 +153,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/revolver/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/revolver/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") @@ -192,7 +192,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return return -/obj/item/weapon/gun/revolver/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/gun/revolver/attack(mob/M as mob, mob/living/user as mob) if ((user.a_intent == "hurt" && src.bullets > 0)) playsound(user, 'Gunshot.ogg', 100, 1) for(var/mob/O in viewers(M, null)) @@ -220,7 +220,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us //0, not loaded. 1, beanbag, 2, 12gauge, 3, blank, 4, dart. -/obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/user as mob) +/obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/shell/beanbag)) if (index == src.shellsmax || shellsunlimited >= 1) //...than sorry. @@ -274,7 +274,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return 1 -/obj/item/weapon/gun/shotgun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/shotgun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") @@ -419,7 +419,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ..() return -/obj/item/weapon/gun/detectiverevolver/attackby(obj/item/weapon/ammo/a38/A as obj, mob/user as mob) +/obj/item/weapon/gun/detectiverevolver/attackby(obj/item/weapon/ammo/a38/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/a38)) @@ -441,7 +441,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/detectiverevolver/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/detectiverevolver/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) var/detective = ((istype(user:w_uniform, /obj/item/clothing/under/det) || !istype(user, /mob/living/carbon/human)) && istype(user:head, /obj/item/clothing/head/det_hat) && istype(user:wear_suit, /obj/item/clothing/suit/det_suit)) @@ -486,7 +486,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return return -/obj/item/weapon/gun/detectiverevolver/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/gun/detectiverevolver/attack(mob/M as mob, mob/living/user as mob) src.add_fingerprint(user) var/mob/living/carbon/human/H = user var/detective @@ -571,17 +571,17 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us spawn(50) charge() -/obj/item/weapon/gun/energy/laser_gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if ((usr.mutations & 16) && prob(50)) - usr << "\red The laser gun blows up in your face." - usr.fireloss += 20 - usr.drop_item() +/obj/item/weapon/gun/energy/laser_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) + if ((user.mutations & 16) && prob(50)) + user << "\red The laser gun blows up in your face." + user.take_organ_damage(0,20) + user.drop_item() del(src) return if (flag) return if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" + user << "\red You don't have the dexterity to do this!" return src.add_fingerprint(user) @@ -624,7 +624,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us A.process() return -/obj/item/weapon/gun/energy/laser_gun/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/gun/energy/laser_gun/attack(mob/M as mob, mob/living/user as mob) ..() /* src.add_fingerprint(user) @@ -657,7 +657,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ratio = round(ratio, 0.25) * 100 src.icon_state = text("taser[]", ratio) -/obj/item/weapon/gun/energy/taser_gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/energy/taser_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if(flag) return if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") @@ -700,7 +700,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us A.process() -/obj/item/weapon/gun/energy/taser_gun/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/gun/energy/taser_gun/attack(mob/M as mob, mob/living/user as mob) if ((usr.mutations & 16) && prob(50)) usr << "\red The taser gun discharges in your hand." usr.paralysis += 60 @@ -789,7 +789,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us if(charges < maximum_charges) charges++ spawn(50) charge() -/obj/item/weapon/gun/energy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/energy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if(flag) return if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") @@ -827,16 +827,11 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us A.process() -/obj/item/weapon/gun/energy/crossbow/attack(mob/M as mob, mob/user as mob) - ..() - - - // TELEPORT GUN // This whole thing is just a copy/paste job -/obj/item/weapon/gun/energy/teleport_gun/attack_self(mob/user as mob) +/obj/item/weapon/gun/energy/teleport_gun/attack_self(mob/living/user as mob) var/list/L = list( ) for(var/obj/machinery/teleport/hub/R in world) var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(R.x - 2, R.y, R.z)) @@ -860,7 +855,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ratio = round(ratio, 0.25) * 100 src.icon_state = text("taser[]", ratio) -/obj/item/weapon/gun/energy/teleport_gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/energy/teleport_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if(flag) return if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") @@ -899,7 +894,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us A.process() -/obj/item/weapon/gun/energy/teleport_gun/proc/point_blank_teleport(mob/M as mob, mob/user as mob) +/obj/item/weapon/gun/energy/teleport_gun/proc/point_blank_teleport(mob/M as mob, mob/living/user as mob) if (src.target == null) var/list/turfs = list( ) for(var/turf/T in orange(10)) @@ -921,7 +916,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us do_teleport(M, src.target, 2) return -/obj/item/weapon/gun/energy/teleport_gun/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/gun/energy/teleport_gun/attack(mob/M as mob, mob/living/user as mob) if ((usr.mutations & 16) && prob(50)) usr << "\red You shoot the teleport gun while holding it backwards." point_blank_teleport(usr) @@ -1040,7 +1035,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us else if (mode == 1) overlays += "nucgun-kill" - attack_self(mob/user as mob) + attack_self(mob/living/user as mob) if(mode == 1) mode = 2 user << "\blue You set the gun to stun" @@ -1055,17 +1050,17 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ratio = round(ratio, 0.25) * 100 src.icon_state = text("energy[]", ratio) - afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if ((usr.mutations & 16) && prob(50)) - usr << "\red The energy gun blows up in your face." - usr.fireloss += 20 - usr.drop_item() + afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) + if ((user.mutations & 16) && prob(50)) + user << "\red The energy gun blows up in your face." + user.take_organ_damage(0,20) + user.drop_item() del(src) return if (flag) return if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey") - usr << "\red You don't have the dexterity to do this!" + user << "\red You don't have the dexterity to do this!" return src.add_fingerprint(user) @@ -1112,7 +1107,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us spawn() A.process() - attack_self(mob/user as mob) + attack_self(mob/living/user as mob) if(mode == 1) mode = 2 user << "\blue You set the gun to stun" @@ -1125,7 +1120,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us overlays -= "energystun" update_icon() - attack(mob/M as mob, mob/user as mob) + attack(mob/M as mob, mob/living/user as mob) ..() /* src.add_fingerprint(user) @@ -1188,7 +1183,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ..() return -/obj/item/weapon/gun/c96/attackby(obj/item/weapon/ammo/a763m/A as obj, mob/user as mob) +/obj/item/weapon/gun/c96/attackby(obj/item/weapon/ammo/a763m/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/a763m)) @@ -1202,7 +1197,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/c96/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/c96/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return @@ -1281,7 +1276,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ..() return -/obj/item/weapon/gun/p08/attackby(obj/item/weapon/ammo/a9x19p/A as obj, mob/user as mob) +/obj/item/weapon/gun/p08/attackby(obj/item/weapon/ammo/a9x19p/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/a9x19p)) @@ -1295,7 +1290,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/p08/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/p08/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return @@ -1380,7 +1375,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ..() return -/obj/item/weapon/gun/glock/attackby(obj/item/weapon/ammo/a45/A as obj, mob/user as mob) +/obj/item/weapon/gun/glock/attackby(obj/item/weapon/ammo/a45/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/a45)) @@ -1393,7 +1388,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/glock/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/glock/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return @@ -1462,7 +1457,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ..() return -/obj/item/weapon/gun/m1911/attackby(obj/item/weapon/ammo/a45/A as obj, mob/user as mob) +/obj/item/weapon/gun/m1911/attackby(obj/item/weapon/ammo/a45/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/a45)) @@ -1475,7 +1470,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/m1911/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/m1911/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return @@ -1545,7 +1540,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ..() return -/obj/item/weapon/gun/carbine/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/user as mob) +/obj/item/weapon/gun/carbine/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/assaultmag)) @@ -1559,7 +1554,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/carbine/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/carbine/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return @@ -1630,7 +1625,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us ..() return -/obj/item/weapon/gun/ak331/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/user as mob) +/obj/item/weapon/gun/ak331/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/living/user as mob) ..() if (istype(A, /obj/item/weapon/ammo/assaultmag)) @@ -1644,7 +1639,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us return 1 return -/obj/item/weapon/gun/ak331/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) +/obj/item/weapon/gun/ak331/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag) if (flag) return diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm index 6df25c2180a..69825e144af 100644 --- a/code/game/objects/items/weapons/hydroponics.dm +++ b/code/game/objects/items/weapons/hydroponics.dm @@ -72,7 +72,12 @@ Deathnettle /obj/item/weapon/grown/nettle/pickup(mob/living/carbon/human/user as mob) if(!user.gloves) user << "\red The nettle burns your bare hand!" - user.fireloss += force + if(istype(user, /mob/living/carbon/human)) + var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm") + var/datum/organ/external/affecting = user.organs[organ] + affecting.take_damage(0,force) + else + user.take_organ_damage(0,force) /obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user as mob) if (force > 0) @@ -86,22 +91,26 @@ Deathnettle /obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob) if(!user.gloves) - user.fireloss += force + if(istype(user, /mob/living/carbon/human)) + var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm") + var/datum/organ/external/affecting = user.organs[organ] + affecting.take_damage(0,force) + else + user.take_organ_damage(0,force) if(prob(50)) user.paralysis += 5 user << "\red You are stunned by the Deathnettle when you try picking it up!" /obj/item/weapon/grown/deathnettle/attack(mob/living/carbon/M as mob, mob/user as mob) if(!..()) return - if(istype(M, /mob/living/carbon/human)) + if(istype(M, /mob/living)) M << "\red You are stunned by the powerful acid of the Deathnettle!" - M.eye_blurry += 4 + M.eye_blurry += force/7 if(prob(20)) - M.paralysis += 5 - M.weakened += 2 + M.paralysis += force/6 + M.weakened += force/15 M.drop_item() - /obj/item/weapon/grown/deathnettle/afterattack(atom/A as mob|obj, mob/user as mob) if (force > 0) force -= rand(1,(force/3)+1) // When you whack someone with it, leaves fall off diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 559025d04cd..78900b7e056 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -19,8 +19,11 @@ KNIFE // FORK /obj/item/weapon/kitchen/utensil/fork/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) - return + if(!istype(M)) + return ..() + + if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head") + return ..() if (src.icon_state == "forkloaded") //This is a poor way of handling it, but a proper rewrite of the fork to allow for a more varied foodening can happen when I'm in the mood. --NEO if(M == user) @@ -33,70 +36,21 @@ KNIFE M.reagents.add_reagent("nutriment", 1) src.icon_state = "fork" return - - - - if((usr.mutations & 16) && prob(50)) - M << "\red You stab yourself in the eye." - M.sdisabilities |= 1 - M.weakened += 4 - M.bruteloss += 10 - - src.add_fingerprint(user) - if(!(user.zone_sel.selecting == ("eyes" || "head"))) - return ..() - var/mob/living/carbon/human/H = M - - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // you can't stab someone in the eyes wearing a mask! - user << "\blue You're going to need to remove that mask/helmet/glasses first." - return - if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N - user << "\blue You cannot locate any eyes on this creature!" - return - - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) continue - if(M == user) O.show_message(text("\red [] has stabbed themself with []!", user, src), 1) - else O.show_message(text("\red [] has been stabbed in the eye with [] by [].", M, src, user), 1) - if(M != user) - M << "\red [user] stabs you in the eye with [src]!" - user << "\red You stab [M] in the eye with [src]!" else - user << "\red You stab yourself in the eyes with [src]!" - if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M.organs["head"] - affecting.take_damage(7) - else - M.bruteloss += 7 - M.eye_blurry += rand(3,4) - M.eye_stat += rand(2,4) - if (M.eye_stat >= 10) - M << "\red Your eyes start to bleed profusely!" - M.eye_blurry += 15+(0.1*M.eye_blurry) - M.disabilities |= 1 - if(M.stat == 2) return - if(prob(50)) - M << "\red You drop what you're holding and clutch at your eyes!" - M.eye_blurry += 10 - M.paralysis += 1 - M.weakened += 4 - M.drop_item() - if (prob(M.eye_stat - 10 + 1)) - M << "\red You go blind!" - M.sdisabilities |= 1 - return + if((user.mutations & 16) && prob(50)) + M = user + return eyestab(M,user) // ROLLING PIN -/obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/user as mob) - if ((usr.mutations & 16) && prob(50)) - usr << "\red The [src] slips out of your hand and hits your head." - usr.bruteloss += 10 - usr.paralysis += 2 +/obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/living/user as mob) + if ((user.mutations & 16) && prob(50)) + user << "\red The [src] slips out of your hand and hits your head." + user.take_organ_damage(10) + user.paralysis += 2 return if (M.stat < 2 && M.health < 50 && prob(90)) var/mob/H = M @@ -126,20 +80,20 @@ KNIFE // KNIFE -/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/user as mob) - if ((usr.mutations & 16) && prob(50)) - usr << "\red You accidentally cut yourself with the [src]." - usr.bruteloss += 20 +/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob) + if ((user.mutations & 16) && prob(50)) + user << "\red You accidentally cut yourself with the [src]." + user.take_organ_damage(20) return - + return ..() /////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// TRAY -Agouri :3 /////////////////////////////////////////////// /obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if((usr.mutations & 16) && prob(50)) //What if he's a clown? + if((user.mutations & 16) && prob(50)) //What if he's a clown? M << "\red You accidentally slam yourself with the [src]!" M.weakened += 1 - M.bruteloss += 2 + user.take_organ_damage(2) if(prob(50)) //playsound(M, 'trayhit1.wav', 50, 1) return @@ -160,9 +114,9 @@ KNIFE if(prob(15)) M.weakened += 3 - M.bruteloss += 3 + M.take_organ_damage(3) else - M.bruteloss +=5 + M.take_organ_damage(5) if(prob(50)) //playsound(M, 'trayhit1.wav', 50, 1) for(var/mob/O in viewers(M, null)) @@ -201,10 +155,10 @@ KNIFE O.show_message(text("\red [] slams [] with the tray!", user, M), 1) if(prob(10)) M.stunned = rand(1,3) - M.bruteloss += 3 + M.take_organ_damage(3) return else - M.bruteloss +=5 + M.take_organ_damage(5) return else //No eye or head protection, tough luck! @@ -225,10 +179,10 @@ KNIFE O.show_message(text("\red [] slams [] in the face with the tray!", user, M), 1) if(prob(30)) M.stunned = rand(2,4) - M.bruteloss +=4 + M.take_organ_damage(4) return else - M.bruteloss +=8 + M.take_organ_damage(8) if(prob(30)) M.weakened+=2 return diff --git a/code/game/objects/items/weapons/medical.dm b/code/game/objects/items/weapons/medical.dm index 4395a1cb5b8..d903e34fb6e 100644 --- a/code/game/objects/items/weapons/medical.dm +++ b/code/game/objects/items/weapons/medical.dm @@ -5,65 +5,33 @@ MEDICAL */ -/obj/item/weapon/medical/examine() - set src in view(1) - if (src.amount <= 0) - del(src) +/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob) + if (M.stat == 2) + var/t_him = "it" + if (M.gender == MALE) + t_him = "him" + else if (M.gender == FEMALE) + t_him = "her" + user << "\red \The [M] is dead, you cannot help [t_him]!" return - ..() + if (!istype(M)) + user << "\red \The [src] cannot be applied to [M]!" + return 1 - usr << "\icon[src] \blue There [src.amount == 1 ? "is" : "are"] [src.amount] [src.name]\s left on the stack!" - -/obj/item/weapon/medical/attack_hand(mob/user as mob) - if (user.r_hand == src || user.l_hand == src) - src.add_fingerprint(user) - var/obj/item/weapon/medical/split = new src.type(user) - split.amount = 1 - src.amount-- - - if (user.hand) - user.l_hand = split - else - user.r_hand = split - - split.layer = 20 - split.add_fingerprint(user) - - if (src.amount < 1) - del(src) - return - else - ..() - -/obj/item/weapon/medical/attackby(obj/item/weapon/medical/W as obj, mob/user as mob) - ..() - if (!istype(W, src.type)) - return - - if (W.amount == 5) - return - - if (W.amount + src.amount > 5) - src.amount = (W.amount + src.amount) - 5 - W.amount = 5 - else - W.amount += src.amount - del(src) - -/obj/item/weapon/medical/attack(mob/M as mob, mob/user as mob) - if (M.health < 0) - return - - if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + if ( ! (istype(user, /mob/living/carbon/human) || \ + istype(user, /mob/living/silicon) || \ + istype(user, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") ) user << "\red You don't have the dexterity to do this!" - return + return 1 if (user) if (M != user) - for (var/mob/O in viewers(M, null)) - O.show_message("\red [M] has been applied with [src] by [user]", 1) + user.visible_message( \ + "\blue [M] has been applied with [src] by [user].", \ + "\blue You apply \the [src] to [M]." \ + ) else var/t_himself = "itself" if (user.gender == MALE) @@ -71,8 +39,10 @@ MEDICAL else if (user.gender == FEMALE) t_himself = "herself" - for (var/mob/O in viewers(M, null)) - O.show_message("\red [M] applied [src] on [t_himself]", 1) + user.visible_message( \ + "\blue [M] applied [src] on [t_himself].", \ + "\blue You apply \the [src] on yourself." \ + ) if (istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M @@ -101,7 +71,4 @@ MEDICAL else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) - - src.amount-- - if (src.amount <= 0) - del(src) + use(1) diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm index e252c1560fd..f81ca018ae8 100644 --- a/code/game/objects/items/weapons/papers_bins.dm +++ b/code/game/objects/items/weapons/papers_bins.dm @@ -190,10 +190,10 @@ CLIPBOARDS attack_self(usr) return -/obj/item/weapon/paper/attack_self(mob/user as mob) - if ((usr.mutations & 16) && prob(50)) - usr << text("\red You cut yourself on the paper.") - usr.bruteloss += 3 +/obj/item/weapon/paper/attack_self(mob/living/user as mob) + if ((user.mutations & 16) && prob(50)) + user << text("\red You cut yourself on the paper.") + user.take_organ_damage(3) return var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text n_name = copytext(n_name, 1, 32) @@ -203,7 +203,7 @@ CLIPBOARDS return /obj/item/weapon/paper/attack_ai(var/mob/living/silicon/ai/user as mob) - var/dist + var/dist if (istype(user) && user.current) //is AI dist = get_dist(src, user.current) else //cyborg or AI not seeing through a camera diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index acce4bff9cc..0cd63f8b8ce 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -13,7 +13,7 @@ CIRCULAR SAW //RETRACTOR// ///////////// /obj/item/weapon/retractor/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) + if(!istype(M)) return if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(50)))) @@ -22,31 +22,46 @@ CIRCULAR SAW if (user.zone_sel.selecting == "eyes") var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // Eye surgery cannot be performed unless the head is clear - user << "\blue You're going to need to remove that mask/helmet/glasses first." + if(istype(H) && ( \ + (H.head && H.head.flags & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + var/mob/living/carbon/monkey/Mo = M + if(istype(Mo) && ( \ + (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N + user << "\red You cannot locate any eyes on this creature!" return switch(M.eye_op_stage) if(1.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] begins to have his eyes retracted."), 1) - else - O.show_message(text("\red [M] is having his eyes retracted by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is having his eyes retracted by [user].", 1) M << "\red [user] begins to seperate your eyes with [src]!" user << "\red You seperate [M]'s eyes with [src]!" else - user << "\red You begin to pry open your eyes with [src]!" - if(prob(25)) - user << "\red You mess up!" - M.bruteloss += 15 + user.visible_message( \ + "\red [user] begins to have his eyes retracted.", \ + "\red You begin to pry open your eyes with [src]!" \ + ) + if(M == user && prob(25)) + user << "\red You mess up!" + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(15) + M.updatehealth() + else + M.take_organ_damage(15) - M.updatehealth() M:eye_op_stage = 2.0 else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human)))) @@ -59,7 +74,7 @@ CIRCULAR SAW //////////// /obj/item/weapon/hemostat/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) + if(!istype(M)) return if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50)))) @@ -68,31 +83,45 @@ CIRCULAR SAW if (user.zone_sel.selecting == "eyes") var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // Eye surgery cannot be performed unless the head is clear - user << "\blue You're going to need to remove that mask/helmet/glasses first." + if(istype(H) && ( \ + (H.head && H.head.flags & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + var/mob/living/carbon/monkey/Mo = M + if(istype(Mo) && ( \ + (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N + user << "\red You cannot locate any eyes on this creature!" return switch(M.eye_op_stage) if(2.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] begins to have his eyes mended."), 1) - else - O.show_message(text("\red [M] is having his eyes mended by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is having his eyes mended by [user].", 1) M << "\red [user] begins to mend your eyes with [src]!" user << "\red You mend [M]'s eyes with [src]!" else - user << "\red You begin to mend your eyes with [src]!" - if(prob(25)) - user << "\red You mess up!" - M.bruteloss += 15 - - M.updatehealth() + user.visible_message( \ + "\red [user] begins to have his eyes mended.", \ + "\red You begin to mend your eyes with [src]!" \ + ) + if(M == user && prob(25)) + user << "\red You mess up!" + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(15) + M.updatehealth() + else + M.take_organ_damage(15) M:eye_op_stage = 3.0 else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human)))) @@ -105,7 +134,7 @@ CIRCULAR SAW /////////// /obj/item/weapon/cautery/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) + if(!istype(M)) return if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50)))) @@ -114,32 +143,45 @@ CIRCULAR SAW if (user.zone_sel.selecting == "eyes") var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // Eye surgery cannot be performed unless the head is clear - user << "\blue You're going to need to remove that mask/helmet/glasses first." + if(istype(H) && ( \ + (H.head && H.head.flags & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + var/mob/living/carbon/monkey/Mo = M + if(istype(Mo) && ( \ + (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N + user << "\red You cannot locate any eyes on this creature!" return switch(M.eye_op_stage) if(3.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] begins to have his eyes cauterized."), 1) - else - O.show_message(text("\red [M] is having his eyes cauterized by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is having his eyes cauterized by [user].", 1) M << "\red [user] begins to cauterize your eyes!" user << "\red You cauterize [M]'s eyes with [src]!" else - user << "\red You begin to cauterize your eyes!" - if(prob(25)) - user << "\red You mess up!" - M.bruteloss += 15 - - - M.updatehealth() + user.visible_message( \ + "\red [user] begins to have his eyes cauterized.", \ + "\red You begin to cauterize your eyes!" \ + ) + if(M == user && prob(25)) + user << "\red You mess up!" + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(15) + M.updatehealth() + else + M.take_organ_damage(15) M.sdisabilities &= ~1 M:eye_op_stage = 0.0 @@ -156,78 +198,89 @@ CIRCULAR SAW //SCALPEL// /////////// /obj/item/weapon/scalpel/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) - return + if(!istype(M)) + return ..() - if((usr.mutations & 16) && prob(50)) - M << "\red You stab yourself in the eye." - M.sdisabilities |= 1 - M.weakened += 4 - M.bruteloss += 10 - - src.add_fingerprint(user) + if((user.mutations & 16) && prob(50)) + M = user + return eyestab(M,user) if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50)))) return ..() + src.add_fingerprint(user) + if(user.zone_sel.selecting == "head") var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // you can't stab someone in the eyes wearing a mask! - user << "\blue You're going to need to remove that mask/helmet/glasses first." + if(istype(H) && ( \ + (H.head && H.head.flags & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + var/mob/living/carbon/monkey/Mo = M + if(istype(Mo) && ( \ + (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." return switch(M:brain_op_stage) if(0.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] begins to cut open his skull with [src]!"), 1) - else - O.show_message(text("\red [M] is beginning to have his head cut open with [src] by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is beginning to have his head cut open with [src] by [user].", 1) M << "\red [user] begins to cut open your head with [src]!" user << "\red You cut [M]'s head open with [src]!" else - user << "\red You begin to cut open your head with [src]!" - if(prob(25)) - user << "\red You mess up!" - M.bruteloss += 15 + user.visible_message( \ + "\red [user] begins to cut open his skull with [src]!", \ + "\red You begin to cut open your head with [src]!" \ + ) + + if(M == user && prob(25)) + user << "\red You mess up!" + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(15) + else + M.take_organ_damage(15) if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M.organs["head"] + var/datum/organ/external/affecting = M:organs["head"] affecting.take_damage(7) else - M.bruteloss += 7 + M.take_organ_damage(7) M.updatehealth() M:brain_op_stage = 1.0 if(2.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] begin to delicately remove the connections to his brain with [src]!"), 1) - else - O.show_message(text("\red [M] is having his connections to the brain delicately severed with [src] by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is having his connections to the brain delicately severed with [src] by [user].", 1) M << "\red [user] begins to cut open your head with [src]!" user << "\red You cut [M]'s head open with [src]!" else - user << "\red You begin to delicately remove the connections to the brain with [src]!" - if(prob(25)) - user << "\red You nick an artery!" - M.bruteloss += 75 + user.visible_message( \ + "\red [user] begin to delicately remove the connections to his brain with [src]!", \ + "\red You begin to cut open your head with [src]!" \ + ) + if(M == user && prob(25)) + user << "\red You nick an artery!" + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(75) + else + M.take_organ_damage(75) if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M.organs["head"] + var/datum/organ/external/affecting = M:organs["head"] affecting.take_damage(7) else - M.bruteloss += 7 + M.take_organ_damage(7) M.updatehealth() M:brain_op_stage = 3.0 @@ -239,38 +292,55 @@ CIRCULAR SAW user << "\blue So far so good." var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // Eye surgery cannot be performed unless the head is clear - user << "\blue You're going to need to remove that mask/helmet/glasses first." + if(istype(H) && ( \ + (H.head && H.head.flags & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + var/mob/living/carbon/monkey/Mo = M + if(istype(Mo) && ( \ + (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N + user << "\red You cannot locate any eyes on this creature!" return switch(M:eye_op_stage) if(0.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] begins to cut around his eyes with [src]!"), 1) - else - O.show_message(text("\red [M] is beginning to have his eyes incised with [src] by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] is beginning to have his eyes incised with [src] by [user].", 1) M << "\red [user] begins to cut open your eyes with [src]!" user << "\red You make an incision around [M]'s eyes with [src]!" else - user << "\red You begin to cut open your eyes with [src]!" - if(prob(25)) - user << "\red You mess up!" - M.bruteloss += 15 + user.visible_message( \ + "\red [user] begins to cut around his eyes with [src]!", \ + "\red You begin to cut open your eyes with [src]!" \ + ) + if(M == user && prob(25)) + user << "\red You mess up!" + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(15) + else + M.take_organ_damage(15) user << "\blue So far so good before." M.updatehealth() M:eye_op_stage = 1.0 user << "\blue So far so good after." - + else + return ..() +/* wat else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human)))) return ..() - +*/ return @@ -278,82 +348,91 @@ CIRCULAR SAW //CIRCULAR SAW// //////////////// /obj/item/weapon/circular_saw/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) - return + if(!istype(M)) + return ..() - if((usr.mutations & 16) && prob(50)) - M << "\red You cut out your eyes." - M.sdisabilities |= 1 - M.weakened += 4 - M.bruteloss += 10 - - src.add_fingerprint(user) + if((user.mutations & 16) && prob(50)) + M = user + return eyestab(M,user) if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50)))) return ..() + src.add_fingerprint(user) + if(user.zone_sel.selecting == "head") var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // you can't stab someone in the eyes wearing a mask! - user << "\blue You're going to need to remove that mask/helmet/glasses first." + if(istype(H) && ( \ + (H.head && H.head.flags & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." + return + + var/mob/living/carbon/monkey/Mo = M + if(istype(Mo) && ( \ + (Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \ + )) + user << "\red You're going to need to remove that mask/helmet/glasses first." return switch(M:brain_op_stage) if(1.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] saws open his skull with [src]!"), 1) - else - O.show_message(text("\red [M] has his skull sawed open with [src] by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] has his skull sawed open with [src] by [user].", 1) M << "\red [user] begins to saw open your head with [src]!" user << "\red You saw [M]'s head open with [src]!" else - user << "\red You begin to saw open your head with [src]!" - if(prob(25)) - user << "\red You mess up!" - M.bruteloss += 40 - + user.visible_message( \ + "\red [user] saws open his skull with [src]!", \ + "\red You begin to saw open your head with [src]!" \ + ) + if(M == user && prob(25)) + user << "\red You mess up!" + if(istype(M, /mob/living/carbon/human)) + var/datum/organ/external/affecting = M:organs["head"] + affecting.take_damage(40) + M.updatehealth() + else + M.take_organ_damage(40) + if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M.organs["head"] + var/datum/organ/external/affecting = M:organs["head"] affecting.take_damage(7) else - M.bruteloss += 7 + M.take_organ_damage(7) M.updatehealth() M:brain_op_stage = 2.0 if(3.0) - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O.show_message(text("\red [user] severs his brain's connection to the spine with [src]!"), 1) - else - O.show_message(text("\red [M] has his spine's connection to the brain severed with [src] by [user]."), 1) - if(M != user) + for(var/mob/O in (viewers(M) - user - M)) + O.show_message("\red [M] has his spine's connection to the brain severed with [src] by [user].", 1) M << "\red [user] severs your brain's connection to the spine with [src]!" user << "\red You sever [M]'s brain's connection to the spine with [src]!" else - user << "\red You sever your brain's connection to the spine with [src]!" + user.visible_message( \ + "\red [user] severs his brain's connection to the spine with [src]!", \ + "\red You sever your brain's connection to the spine with [src]!" \ + ) M:brain_op_stage = 4.0 M.death() - var/obj/item/brain/B = new /obj/item/brain(M.loc) + var/obj/item/brain/B = new (M.loc) B.owner = M else ..() return - + else + return ..() +/* else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human)))) return ..() - - return \ No newline at end of file +*/ + return diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 7ace6556e71..f61ebb2c85c 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -16,11 +16,10 @@ STUN BATON /obj/item/weapon/sword/New() color = pick("red","blue","green","purple") -/obj/item/weapon/sword/attack_self(mob/user as mob) +/obj/item/weapon/sword/attack_self(mob/living/user as mob) if ((user.mutations & 16) && prob(50)) user << "\red You accidentally cut yourself with [src]." - user.bruteloss += 5 - user.fireloss +=5 + user.take_organ_damage(5,5) src.active = !( src.active ) if (src.active) user << "\blue [src] is now active." @@ -204,15 +203,15 @@ STUN BATON if(2) charges -= 5 -/obj/item/weapon/classic_baton/attack(mob/M as mob, mob/user as mob) - if ((usr.mutations & 16) && prob(50)) - usr << "\red You club yourself over the head." - usr.weakened = max(3 * force, usr.weakened) - if(ishuman(usr)) - var/mob/living/carbon/human/H = usr +/obj/item/weapon/classic_baton/attack(mob/M as mob, mob/living/user as mob) + if ((user.mutations & 16) && prob(50)) + user << "\red You club yourself over the head." + user.weakened = max(3 * force, user.weakened) + if(ishuman(user)) + var/mob/living/carbon/human/H = user H.TakeDamage("head", 2 * force, 0) else - usr.bruteloss += 2 * force + user.take_organ_damage(2*force) return src.add_fingerprint(user) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index c12f590d860..e25d7775941 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -23,59 +23,14 @@ WELDINGTOOOL return /obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - if(!istype(M, /mob)) - return - - if((usr.mutations & 16) && prob(50)) - M << "\red You stab yourself in the eye." - M.sdisabilities |= 1 - M.weakened += 4 - M.bruteloss += 10 - - src.add_fingerprint(user) - if(!(user.zone_sel.selecting == ("eyes" || "head"))) + if(!istype(M)) return ..() - var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - // you can't stab someone in the eyes wearing a mask! - user << "\blue You're going to need to remove that mask/helmet/glasses first." - return - if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N - user << "\blue You cannot locate any eyes on this creature!" - return - - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) continue - if(M == user) O.show_message(text("\red [] has stabbed themself with []!", user, src), 1) - else O.show_message(text("\red [] has been stabbed in the eye with [] by [].", M, src, user), 1) - if(M != user) - M << "\red [user] stabs you in the eye with [src]!" - user << "\red You stab [M] in the eye with [src]!" - else - user << "\red You stab yourself in the eyes with [src]!" - if(istype(M, /mob/living/carbon/human)) - var/datum/organ/external/affecting = M.organs["head"] - affecting.take_damage(7) - else - M.bruteloss += 7 - M.eye_blurry += rand(3,4) - M.eye_stat += rand(2,4) - if (M.eye_stat >= 10) - M << "\red Your eyes start to bleed profusely!" - M.eye_blurry += 15+(0.1*M.eye_blurry) - M.disabilities |= 1 - if(M.stat == 2) return - if(prob(50)) - M << "\red You drop what you're holding and clutch at your eyes!" - M.eye_blurry += 10 - M.paralysis += 1 - M.weakened += 4 - M.drop_item() - if (prob(M.eye_stat - 10 + 1)) - M << "\red You go blind!" - M.sdisabilities |= 1 - return + if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head") + return ..() + if((user.mutations & 16) && prob(50)) + M = user + return eyestab(M,user) @@ -330,4 +285,4 @@ WELDINGTOOOL max_fuel = 80 w_class = 3.0 m_amt = 70 - g_amt = 120 \ No newline at end of file + g_amt = 120 diff --git a/code/game/objects/livestock.dm b/code/game/objects/livestock.dm index c2e543a8b0a..2a0c25b8d62 100644 --- a/code/game/objects/livestock.dm +++ b/code/game/objects/livestock.dm @@ -284,7 +284,7 @@ if(distance <= 1) //Am I close enough to attack it? for(var/mob/O in viewers(world.view,src)) O.show_message("\red [src.target] has been attacked by [src.name]!", 1, "\red You hear someone fall.", 2) - target:bruteloss += strength + target.take_organ_damage(strength) special_attack() src.loc = target.loc set_null() diff --git a/code/game/objects/secstorage/sbriefcase.dm b/code/game/objects/secstorage/sbriefcase.dm index 6946e410f6a..200f1433c0f 100644 --- a/code/game/objects/secstorage/sbriefcase.dm +++ b/code/game/objects/secstorage/sbriefcase.dm @@ -15,11 +15,11 @@ new /obj/item/weapon/paper(src) new /obj/item/weapon/pen(src) -/obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/user as mob) - if ((usr.mutations & 16) && prob(50)) - usr << "\red The [src] slips out of your hand and hits your head." - usr.bruteloss += 10 - usr.paralysis += 2 +/obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/living/user as mob) + if ((user.mutations & 16) && prob(50)) + user << "\red The [src] slips out of your hand and hits your head." + user.take_organ_damage(10) + user.paralysis += 2 return var/t = user:zone_sel.selecting diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm index d88e592fc49..6f896307f17 100644 --- a/code/game/objects/stool.dm +++ b/code/game/objects/stool.dm @@ -188,12 +188,13 @@ flick("e_chairs", src) flick("e_chairos", src.overl) - for(var/mob/M in src.loc) + for(var/mob/living/M in src.loc) M.burn_skin(85) M << "\red You feel a deep shock course through your body!" sleep(1) M.burn_skin(85) - if(M.stunned < 600) M.stunned = 600 + if(M.stunned < 600) + M.stunned = 600 for(var/mob/M in hearers(src, null)) M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2) diff --git a/code/game/objects/storage/bible.dm b/code/game/objects/storage/bible.dm index 556b25522f7..0277f456962 100644 --- a/code/game/objects/storage/bible.dm +++ b/code/game/objects/storage/bible.dm @@ -20,24 +20,24 @@ H.UpdateDamage() return -/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/living/user as mob) var/chaplain = 0 if(user.mind && (user.mind.assigned_role == "Chaplain")) chaplain = 1 - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" + if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") + user << "\red You don't have the dexterity to do this!" return if(!chaplain) - usr << "\red The book sizzles in your hands." - usr.fireloss += 10 + user << "\red The book sizzles in your hands." + user.take_organ_damage(0,10) return - if ((usr.mutations & 16) && prob(50)) - usr << "\red The [src] slips out of your hand and hits your head." - usr.bruteloss += 10 - usr.paralysis += 20 + if ((user.mutations & 16) && prob(50)) + user << "\red The [src] slips out of your hand and hits your head." + user.take_organ_damage(10) + user.paralysis += 20 return // if(..() == BLOCKED) diff --git a/code/game/objects/storage/briefcase.dm b/code/game/objects/storage/briefcase.dm index 4b0e7474ecc..dc36d7f3770 100644 --- a/code/game/objects/storage/briefcase.dm +++ b/code/game/objects/storage/briefcase.dm @@ -8,13 +8,13 @@ new /obj/item/weapon/paper(src) new /obj/item/weapon/pen(src) -/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/living/user as mob) //..() - if ((usr.mutations & 16) && prob(50)) - usr << "\red The [src] slips out of your hand and hits your head." - usr.bruteloss += 10 - usr.paralysis += 2 + if ((user.mutations & 16) && prob(50)) + user << "\red The [src] slips out of your hand and hits your head." + user.take_organ_damage(10) + user.paralysis += 2 return if (M.stat < 2 && M.health < 50 && prob(90)) diff --git a/code/game/objects/storage/firstaid.dm b/code/game/objects/storage/firstaid.dm index fdb0e6f1ad8..a567a77140f 100644 --- a/code/game/objects/storage/firstaid.dm +++ b/code/game/objects/storage/firstaid.dm @@ -2,8 +2,8 @@ /obj/item/weapon/storage/firstaid/fire/New() ..() if (empty) return - new /obj/item/weapon/medical/ointment( src ) - new /obj/item/weapon/medical/ointment( src ) + new /obj/item/stack/medical/ointment( src ) + new /obj/item/stack/medical/ointment( src ) new /obj/item/device/healthanalyzer( src ) new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src ) new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src ) @@ -27,11 +27,11 @@ ..() if (empty) return - new /obj/item/weapon/medical/bruise_pack(src) - new /obj/item/weapon/medical/bruise_pack(src) - new /obj/item/weapon/medical/bruise_pack(src) - new /obj/item/weapon/medical/ointment(src) - new /obj/item/weapon/medical/ointment(src) + new /obj/item/stack/medical/bruise_pack(src) + new /obj/item/stack/medical/bruise_pack(src) + new /obj/item/stack/medical/bruise_pack(src) + new /obj/item/stack/medical/ointment(src) + new /obj/item/stack/medical/ointment(src) new /obj/item/device/healthanalyzer(src) new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src ) return diff --git a/code/game/objects/tank.dm b/code/game/objects/tank.dm index a8bd6dc5ad1..6c9d0b8b7e1 100644 --- a/code/game/objects/tank.dm +++ b/code/game/objects/tank.dm @@ -299,7 +299,7 @@ src.ion_trail.stop() return -/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/user as mob) +/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob) if (!( src.on )) return 0 if ((num < 0.01 || src.air_contents.total_moles() < num)) @@ -314,8 +314,7 @@ if (user) var/d = G.toxins / 2 d = min(abs(user.health + 100), d, 25) - user.fireloss += d - user.updatehealth() + user.take_organ_damage(0,d) return (G.oxygen >= 0.0075 ? 0.5 : 0) else if (G.oxygen >= 0.0075) diff --git a/code/game/objects/traps.dm b/code/game/objects/traps.dm index 5fd918c6e56..5290ccdd1e1 100644 --- a/code/game/objects/traps.dm +++ b/code/game/objects/traps.dm @@ -144,16 +144,16 @@ var/obj/item/weapon/ore/rock = new rock_type(hit_loc) for(var/mob/living/M in hit_loc) if(prob(rocks_hit_chance)) - M.bruteloss += rand(rocks_min_dmg,rocks_max_dmg) + M.take_organ_damage(rand(rocks_min_dmg,rocks_max_dmg)) M << "A chunk of [lowertext(rock.name)] hits you in the head!" if(target_type == "mob") for(var/i=0,i[user] attacks [src]'s stomach wall with the [I.name]!"), 2) @@ -85,7 +85,8 @@ shock_damage *= siemens_coeff if (shock_damage<1) return 0 - src.burn_skin(shock_damage) + src.take_overall_damage(0,shock_damage) + //src.burn_skin(shock_damage) //src.fireloss += shock_damage //burn_skin will do this for us //src.updatehealth() src.visible_message( @@ -96,4 +97,13 @@ if(src.stunned < shock_damage) src.stunned = shock_damage if(src.weakened < 20*siemens_coeff) src.weakened = 20*siemens_coeff - return shock_damage \ No newline at end of file + return shock_damage + + +/mob/living/carbon/proc/swap_hand() + src.hand = !( src.hand ) + if (!( src.hand )) + src.hands.dir = NORTH + else + src.hands.dir = SOUTH + return diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 02b063b23d3..d539cb00fe2 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -457,5 +457,5 @@ for (var/mob/O in viewers(src, null)) O.show_message(message, m_type) else if (m_type & 2) - for (var/mob/O in hearers(src, null)) + for (var/mob/O in hearers(src.loc, null)) O.show_message(message, m_type) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 45e44923bab..797bba74841 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -2607,54 +2607,49 @@ It can still be worn/put on as normal. /mob/living/carbon/human/proc/UpdateDamage() - var/list/L = list( ) - for(var/t in src.organs) - if (istype(src.organs[text("[]", t)], /datum/organ/external)) - L += src.organs[text("[]", t)] src.bruteloss = 0 src.fireloss = 0 - for(var/datum/organ/external/O in L) - src.bruteloss += O.brute_dam - src.fireloss += O.burn_dam + var/datum/organ/external/O + for(var/t in src.organs) + O = src.organs[t] + if (istype(O, /datum/organ/external)) + src.bruteloss += O.brute_dam + src.fireloss += O.burn_dam return // new damage icon system // now constructs damage icon for each organ from mask * damage field /mob/living/carbon/human/proc/UpdateDamageIcon() - var/list/L = list( ) - for (var/t in src.organs) - if (istype(src.organs[t], /datum/organ/external)) - L += src.organs[t] - del(src.body_standing) src.body_standing = list() del(src.body_lying) src.body_lying = list() - src.bruteloss = 0 src.fireloss = 0 + var/datum/organ/external/O + for(var/t in src.organs) + O = src.organs[t] + if (istype(O, /datum/organ/external)) + src.bruteloss += O.brute_dam + src.fireloss += O.burn_dam - for (var/datum/organ/external/O in L) - src.bruteloss += O.brute_dam - src.fireloss += O.burn_dam + var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human + DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels - var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human - DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels + // world << "[O.icon_name] [O.damage_state] \icon[DI]" -// world << "[O.icon_name] [O.damage_state] \icon[DI]" + body_standing += DI - body_standing += DI + DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons + DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY) - DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons - DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY) + // world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]" -// world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]" + body_lying += DI - body_lying += DI - - //src.body_standing += new /icon( 'dam_zones.dmi', text("[]", O.d_i_state) ) - //src.body_lying += new /icon( 'dam_zones.dmi', text("[]2", O.d_i_state) ) + //src.body_standing += new /icon( 'dam_zones.dmi', text("[]", O.d_i_state) ) + //src.body_lying += new /icon( 'dam_zones.dmi', text("[]2", O.d_i_state) ) /mob/living/carbon/human/show_inv(mob/user as mob) @@ -2755,12 +2750,79 @@ It can still be worn/put on as normal. siemens_coeff = G.siemens_coefficient return ..(shock_damage,source,siemens_coeff) + +/mob/living/carbon/human/proc/get_damaged_organs(var/brute, var/burn) + var/list/datum/organ/external/parts = list() + for(var/organ_name in src.organs) + var/datum/organ/external/organ = src.organs[organ_name] + if((brute && organ.brute_dam) || (burn && organ.burn_dam)) + parts += organ + return parts + +/mob/living/carbon/human/proc/get_damageable_organs() + var/list/datum/organ/external/parts = list() + for(var/organ_name in src.organs) + var/datum/organ/external/organ = src.organs[organ_name] + if(organ.brute_dam + organ.burn_dam < organ.max_damage) + parts += organ + return parts + +// heal ONE external organ, organ gets randomly selected from damaged ones. /mob/living/carbon/human/heal_organ_damage(var/brute, var/burn) - ..() + var/list/datum/organ/external/parts = get_damaged_organs(brute,burn) + if(!parts.len) + return + var/datum/organ/external/picked = pick(parts) + picked.heal_damage(brute,burn) + src.updatehealth() src.UpdateDamageIcon() +// damage ONE external organ, organ gets randomly selected from damaged ones. /mob/living/carbon/human/take_organ_damage(var/brute, var/burn) - ..() + var/list/datum/organ/external/parts = get_damageable_organs() + if(!parts.len) + return + var/datum/organ/external/picked = pick(parts) + picked.take_damage(brute,burn) + src.updatehealth() + src.UpdateDamageIcon() + +// heal MANY external organs, in random order +/mob/living/carbon/human/heal_overall_damage(var/brute, var/burn) + var/list/datum/organ/external/parts = get_damaged_organs(brute,burn) + + while(parts.len && (brute>0 || burn>0) ) + var/datum/organ/external/picked = pick(parts) + + var/brute_was = picked.brute_dam + var/burn_was = picked.burn_dam + + picked.heal_damage(brute,burn) + + brute -= (brute_was-picked.brute_dam) + burn -= (burn_was-picked.burn_dam) + + parts -= picked + src.updatehealth() + src.UpdateDamageIcon() + +// damage MANY external organs, in random order +/mob/living/carbon/human/take_overall_damage(var/brute, var/burn) + var/list/datum/organ/external/parts = get_damageable_organs() + + while(parts.len && (brute>0 || burn>0) ) + var/datum/organ/external/picked = pick(parts) + + var/brute_was = picked.brute_dam + var/burn_was = picked.burn_dam + + picked.take_damage(brute,burn) + + brute -= (picked.brute_dam-brute_was) + burn -= (picked.burn_dam-burn_was) + + parts -= picked + src.updatehealth() src.UpdateDamageIcon() /mob/living/carbon/human/proc/isarmored(var/datum/organ/external/def_zone) @@ -2775,3 +2837,24 @@ It can still be worn/put on as normal. return 1 //If wearing armor that covers the targetted bodypart, armored. return 0 + + +/mob/living/carbon/human/Topic(href, href_list) + if (href_list["mach_close"]) + var/t1 = text("window=[]", href_list["mach_close"]) + src.machine = null + src << browse(null, t1) + if ((href_list["item"] && !( usr.stat ) && usr.canmove && !( usr.restrained() ) && in_range(src, usr) && ticker)) //if game hasn't started, can't make an equip_e + var/obj/equip_e/human/O = new /obj/equip_e/human( ) + O.source = usr + O.target = src + O.item = usr.equipped() + O.s_loc = usr.loc + O.t_loc = src.loc + O.place = href_list["item"] + src.requests += O + spawn( 0 ) + O.process() + return + ..() + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index d48ad29b70b..92f44e0252f 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -105,7 +105,7 @@ src.fireloss += 40 src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss return - +/* /mob/living/carbon/monkey/bullet_act(flag) if (flag == PROJECTILE_BULLET) @@ -140,7 +140,7 @@ src.stuttering += 5 src.drowsyness += 5 return - +*/ /mob/living/carbon/monkey/hand_p(mob/M as mob) if ((M.a_intent == "hurt" && !( istype(src.wear_mask, /obj/item/clothing/mask/muzzle) ))) if ((prob(75) && src.health > 0)) @@ -704,12 +704,3 @@ del(src) return -/mob/living/carbon/monkey/heal_organ_damage(var/brute, var/burn) - bruteloss = max(0, bruteloss-brute) //HACK - fireloss = max(0, fireloss-burn) //HACK - src.updatehealth() - -/mob/living/carbon/monkey/take_organ_damage(var/brute, var/burn) - bruteloss += brute //HACK - fireloss += burn //HACK - src.updatehealth() \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm new file mode 100644 index 00000000000..edd4120ceba --- /dev/null +++ b/code/modules/mob/living/living.dm @@ -0,0 +1,201 @@ +/mob/living/verb/succumb() + set hidden = 1 + + if ((src.health < 0 && src.health > -95.0)) + src.oxyloss += src.health + 200 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + src << "\blue You have given up life and succumbed to death." + + +/mob/living/bullet_act(flag) + if (flag == PROJECTILE_BULLET) + if (istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + var/dam_zone = pick("chest", "chest", "chest", "groin", "head") + if (H.organs[text("[]", dam_zone)]) + var/datum/organ/external/affecting = H.organs[text("[]", dam_zone)] + if (affecting.take_damage(51, 0)) + H.UpdateDamageIcon() + else + H.UpdateDamage() + else + src.take_organ_damage(51) + src.updatehealth() + if (prob(80) && src.weakened <= 2) + src.weakened = 2 + else if (flag == PROJECTILE_TASER) + if (prob(75) && src.stunned <= 10) + src.stunned = 10 + else + src.weakened = 10 + else if (flag == PROJECTILE_DART) + src.weakened += 5 + src.toxloss += 10 + else if(flag == PROJECTILE_LASER) + if (istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + var/dam_zone = pick("chest", "chest", "chest", "groin", "head") + if (H.organs[text("[]", dam_zone)]) + var/datum/organ/external/affecting = H.organs[text("[]", dam_zone)] + if (affecting.take_damage(20, 0)) + H.UpdateDamageIcon() + else + H.UpdateDamage() + src.updatehealth() + else + src.take_organ_damage(20) + if (prob(25) && src.stunned <= 2) + src.stunned = 2 + else if(flag == PROJECTILE_PULSE) + if (istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + var/dam_zone = pick("chest", "chest", "chest", "groin", "head") + if (H.organs[text("[]", dam_zone)]) + var/datum/organ/external/affecting = H.organs[text("[]", dam_zone)] + if (affecting.take_damage(40, 0)) + H.UpdateDamageIcon() + else + H.UpdateDamage() + src.updatehealth() + else + src.take_organ_damage(40) + if (prob(50)) + src.stunned = min(src.stunned, 5) + else if(flag == PROJECTILE_BOLT) + src.toxloss += 3 + src.radiation += 100 + src.updatehealth() + src.stuttering += 5 + src.drowsyness += 5 + if (prob(10)) + src.weakened = min(src.weakened, 2) + return + + +/mob/living/proc/updatehealth() + if (src.nodamage == 0) + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + else + src.health = 100 + src.stat = 0 + +//sort of a legacy burn method for /electrocute, /shock, and the e_chair +/mob/living/proc/burn_skin(burn_amount) + if(istype(src, /mob/living/carbon/human)) + //world << "DEBUG: burn_skin(), mutations=[mutations]" + if (src.mutations & 2) //fireproof + return 0 + var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part + var/divided_damage = (burn_amount)/(H.organs.len) + var/datum/organ/external/affecting = null + var/extradam = 0 //added to when organ is at max dam + for(var/A in H.organs) + if(!H.organs[A]) continue + affecting = H.organs[A] + if(!istype(affecting, /datum/organ/external)) continue + if(affecting.take_damage(0, divided_damage+extradam)) + extradam = 0 + else + extradam += divided_damage + H.UpdateDamageIcon() + H.updatehealth() + return 1 + else if(istype(src, /mob/living/carbon/monkey)) + if (src.mutations & 2) //fireproof + return 0 + var/mob/living/carbon/monkey/M = src + M.fireloss += burn_amount + M.updatehealth() + return 1 + else if(istype(src, /mob/living/silicon/ai)) + return 0 + +/mob/living/proc/adjustBodyTemp(actual, desired, incrementboost) + var/temperature = actual + var/difference = abs(actual-desired) //get difference + var/increments = difference/10 //find how many increments apart they are + var/change = increments*incrementboost // Get the amount to change by (x per increment) + + // Too cold + if(actual < desired) + temperature += change + if(actual > desired) + temperature = desired + // Too hot + if(actual > desired) + temperature -= change + if(actual < desired) + temperature = desired +// if(istype(src, /mob/living/carbon/human)) +// world << "[src] ~ [src.bodytemperature] ~ [temperature]" + return temperature + + +/mob/living/proc/get_contents() + var/list/L = list() + L += src.contents + for(var/obj/item/weapon/storage/S in src.contents) + L += S.return_inv() + for(var/obj/item/weapon/gift/G in src.contents) + L += G.gift + if (istype(G.gift, /obj/item/weapon/storage)) + L += G.gift:return_inv() + return L + +/mob/living/proc/check_contents_for(A) + var/list/L = list() + L += src.contents + for(var/obj/item/weapon/storage/S in src.contents) + L += S.return_inv() + for(var/obj/item/weapon/gift/G in src.contents) + L += G.gift + if (istype(G.gift, /obj/item/weapon/storage)) + L += G.gift:return_inv() + + for(var/obj/B in L) + if(B.type == A) + return 1 + return 0 + + +/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0) + return 0 //only carbon liveforms have this proc + +/mob/living/emp_act(severity) + var/list/L = src.get_contents() + for(var/obj/O in L) + O.emp_act(severity) + ..() + +/mob/living/proc/get_organ_target() + var/mob/shooter = src + var/t = shooter:zone_sel.selecting + if ((t in list( "eyes", "mouth" ))) + t = "head" + var/datum/organ/external/def_zone = ran_zone(t) + return def_zone + + +// heal ONE external organ, organ gets randomly selected from damaged ones. +/mob/living/proc/heal_organ_damage(var/brute, var/burn) + bruteloss = max(0, bruteloss-brute) + fireloss = max(0, fireloss-burn) + src.updatehealth() + +// damage ONE external organ, organ gets randomly selected from damaged ones. +/mob/living/proc/take_organ_damage(var/brute, var/burn) + bruteloss += brute + fireloss += burn + src.updatehealth() + +// heal MANY external organs, in random order +/mob/living/proc/heal_overall_damage(var/brute, var/burn) + bruteloss = max(0, bruteloss-brute) + fireloss = max(0, fireloss-burn) + src.updatehealth() + +// damage MANY external organs, in random order +/mob/living/proc/take_overall_damage(var/brute, var/burn) + bruteloss += brute + fireloss += burn + src.updatehealth() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 380548cbddc..9cc84fe3888 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -96,8 +96,8 @@ obj/item/weapon/robot_module/syndicate /obj/item/weapon/robot_module/medical/New() ..() src.modules += new /obj/item/device/healthanalyzer(src) - src.modules += new /obj/item/weapon/medical/ointment/medbot(src) - src.modules += new /obj/item/weapon/medical/bruise_pack/medbot(src) + src.modules += new /obj/item/stack/medical/ointment/medbot(src) + src.modules += new /obj/item/stack/medical/bruise_pack/medbot(src) src.modules += new /obj/item/weapon/reagent_containers/syringe/robot(src) src.modules += new /obj/item/weapon/scalpel(src) src.modules += new /obj/item/weapon/circular_saw(src) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index c639aa272a5..15137cb467f 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -8,7 +8,7 @@ return /mob/living/silicon/emp_act(severity) - src.fireloss += 25 + src.take_organ_damage(25) flick("noise", src:flash) src << "\red *BZZZT*" src << "\red Warning: Electromagnetic pulse detected." diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 97031880185..fb08a77e52f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -20,12 +20,12 @@ // fun if you want to typecast humans/monkeys/etc without writing long path-filled lines. /proc/ishuman(A) - if(A && istype(A, /mob/living/carbon/human)) + if(istype(A, /mob/living/carbon/human)) return 1 return 0 /proc/isalien(A) - if(A && istype(A, /mob/living/carbon/alien)) + if(istype(A, /mob/living/carbon/alien)) return 1 return 0 @@ -35,7 +35,7 @@ return 0 /proc/isrobot(A) - if(A && istype(A, /mob/living/silicon/robot)) + if(istype(A, /mob/living/silicon/robot)) return 1 return 0 @@ -45,17 +45,17 @@ return 0 /proc/isAI(A) - if(A && istype(A, /mob/living/silicon/ai)) + if(istype(A, /mob/living/silicon/ai)) return 1 return 0 /proc/iscarbon(A) - if(A && istype(A, /mob/living/carbon)) + if(istype(A, /mob/living/carbon)) return 1 return 0 /proc/issilicon(A) - if(A && istype(A, /mob/living/silicon)) + if(istype(A, /mob/living/silicon)) return 1 return 0 @@ -983,26 +983,6 @@ ..() return -/mob/living/carbon/human/Topic(href, href_list) - if (href_list["mach_close"]) - var/t1 = text("window=[]", href_list["mach_close"]) - src.machine = null - src << browse(null, t1) - if ((href_list["item"] && !( usr.stat ) && usr.canmove && !( usr.restrained() ) && in_range(src, usr) && ticker)) //if game hasn't started, can't make an equip_e - var/obj/equip_e/human/O = new /obj/equip_e/human( ) - O.source = usr - O.target = src - O.item = usr.equipped() - O.s_loc = usr.loc - O.t_loc = src.loc - O.place = href_list["item"] - src.requests += O - spawn( 0 ) - O.process() - return - ..() - return - /mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) if(!src.client) return if (type) @@ -1096,13 +1076,6 @@ return -/mob/living/carbon/proc/swap_hand() - src.hand = !( src.hand ) - if (!( src.hand )) - src.hands.dir = NORTH - else - src.hands.dir = SOUTH - return /mob/proc/drop_item_v() if (src.stat == 0) @@ -1383,14 +1356,6 @@ src << browse('changelog.html', "window=changes;size=675x650") src.client.changes = 1 -/mob/verb/succumb() - set hidden = 1 - - if ((src.health < 0 && src.health > -95.0)) - src.oxyloss += src.health + 200 - src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss - src << "\blue You have given up life and succumbed to death." - /mob/var/ghost_ears = 1 /mob/verb/toggle_ghost_ears() set name = "Ghost ears" @@ -1582,69 +1547,6 @@ if(LinkBlocked(usr.loc,src.loc)) return src.show_inv(usr) -/mob/bullet_act(flag) - if (flag == PROJECTILE_BULLET) - if (istype(src, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - var/dam_zone = pick("chest", "chest", "chest", "groin", "head") - if (H.organs[text("[]", dam_zone)]) - var/datum/organ/external/affecting = H.organs[text("[]", dam_zone)] - if (affecting.take_damage(51, 0)) - H.UpdateDamageIcon() - else - H.UpdateDamage() - else - src.bruteloss += 51 - src.updatehealth() - if (prob(80) && src.weakened <= 2) - src.weakened = 2 - else if (flag == PROJECTILE_TASER) - if (prob(75) && src.stunned <= 10) - src.stunned = 10 - else - src.weakened = 10 - else if (flag == PROJECTILE_DART) - src.weakened += 5 - src.toxloss += 10 - else if(flag == PROJECTILE_LASER) - if (istype(src, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - var/dam_zone = pick("chest", "chest", "chest", "groin", "head") - if (H.organs[text("[]", dam_zone)]) - var/datum/organ/external/affecting = H.organs[text("[]", dam_zone)] - if (affecting.take_damage(20, 0)) - H.UpdateDamageIcon() - else - H.UpdateDamage() - else - src.bruteloss += 20 - src.updatehealth() - if (prob(25) && src.stunned <= 2) - src.stunned = 2 - else if(flag == PROJECTILE_PULSE) - if (istype(src, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - var/dam_zone = pick("chest", "chest", "chest", "groin", "head") - if (H.organs[text("[]", dam_zone)]) - var/datum/organ/external/affecting = H.organs[text("[]", dam_zone)] - if (affecting.take_damage(40, 0)) - H.UpdateDamageIcon() - else - H.UpdateDamage() - else - src.bruteloss += 40 - src.updatehealth() - if (prob(50)) - src.stunned = min(src.stunned, 5) - else if(flag == PROJECTILE_BOLT) - src.toxloss += 3 - src.radiation += 100 - src.updatehealth() - src.stuttering += 5 - src.drowsyness += 5 - if (prob(10)) - src.weakened = min(src.weakened, 2) - return /atom/movable/Move(NewLoc, direct) @@ -1961,64 +1863,6 @@ for(var/mob/M in viewers()) M.see(message) -/mob/proc/updatehealth() - if (src.nodamage == 0) - src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss - else - src.health = 100 - src.stat = 0 - -//sort of a legacy burn method for /electrocute, /shock, and the e_chair -/mob/proc/burn_skin(burn_amount) - if(istype(src, /mob/living/carbon/human)) - //world << "DEBUG: burn_skin(), mutations=[mutations]" - if (src.mutations & 2) //fireproof - return 0 - var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part - var/divided_damage = (burn_amount)/(H.organs.len) - var/datum/organ/external/affecting = null - var/extradam = 0 //added to when organ is at max dam - for(var/A in H.organs) - if(!H.organs[A]) continue - affecting = H.organs[A] - if(!istype(affecting, /datum/organ/external)) continue - if(affecting.take_damage(0, divided_damage+extradam)) - extradam = 0 - else - extradam += divided_damage - H.UpdateDamageIcon() - H.updatehealth() - return 1 - else if(istype(src, /mob/living/carbon/monkey)) - if (src.mutations & 2) //fireproof - return 0 - var/mob/living/carbon/monkey/M = src - M.fireloss += burn_amount - M.updatehealth() - return 1 - else if(istype(src, /mob/living/silicon/ai)) - return 0 - -/mob/proc/adjustBodyTemp(actual, desired, incrementboost) - var/temperature = actual - var/difference = abs(actual-desired) //get difference - var/increments = difference/10 //find how many increments apart they are - var/change = increments*incrementboost // Get the amount to change by (x per increment) - - // Too cold - if(actual < desired) - temperature += change - if(actual > desired) - temperature = desired - // Too hot - if(actual > desired) - temperature -= change - if(actual < desired) - temperature = desired -// if(istype(src, /mob/living/carbon/human)) -// world << "[src] ~ [src.bodytemperature] ~ [temperature]" - return temperature - //This is the proc for gibbing a mob. Cannot gib ghosts. Removed the medal reference, //added different sort of gibs and animations. N /mob/proc/gib() @@ -2081,8 +1925,6 @@ Originally created for wizard disintegrate. I've removed the virus code since it */ /mob/proc/dust() - if (istype(src, /mob/dead/observer)) - return src.death(1) var/atom/movable/overlay/animation = null src.monkeyizing = 1 @@ -2118,32 +1960,6 @@ Originally created for wizard disintegrate. I've removed the virus code since it sleep(15) del(src) -/mob/proc/get_contents() - var/list/L = list() - L += src.contents - for(var/obj/item/weapon/storage/S in src.contents) - L += S.return_inv() - for(var/obj/item/weapon/gift/G in src.contents) - L += G.gift - if (istype(G.gift, /obj/item/weapon/storage)) - L += G.gift:return_inv() - return L - -/mob/proc/check_contents_for(A) - var/list/L = list() - L += src.contents - for(var/obj/item/weapon/storage/S in src.contents) - L += S.return_inv() - for(var/obj/item/weapon/gift/G in src.contents) - L += G.gift - if (istype(G.gift, /obj/item/weapon/storage)) - L += G.gift:return_inv() - - for(var/obj/B in L) - if(B.type == A) - return 1 - return 0 - /* adds a dizziness amount to a mob @@ -2270,92 +2086,3 @@ note dizziness decrements automatically in the mob's Life() proc. boom.icon_state = "loss_malf" else boom.icon_state = "loss_general" - -/mob/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0) - return 0 //only carbon liveforms has this proc - -/mob/emp_act(severity) - var/list/L = src.get_contents() - for(var/obj/O in L) - O.emp_act(severity) - ..() - -/mob/proc/get_organ_target() - var/mob/shooter = src - var/t = shooter:zone_sel.selecting - if ((t in list( "eyes", "mouth" ))) - t = "head" - var/datum/organ/external/def_zone = ran_zone(t) - return def_zone - -// heal ONE external organ, organ gets randomly selected from damaged ones. -/mob/proc/heal_organ_damage(var/brute, var/burn) - var/list/datum/organ/external/parts = list() - for(var/organ_name in src.organs) - var/datum/organ/external/organ = src.organs[organ_name] - if((brute && organ.brute_dam) || (burn && organ.burn_dam)) - parts += organ - - if(!parts.len) - return - var/datum/organ/external/picked = pick(parts) - picked.heal_damage(brute,burn) - src.updatehealth() - -// damage ONE external organ, organ gets randomly selected from damaged ones. -/mob/proc/take_organ_damage(var/brute, var/burn) - var/list/datum/organ/external/parts = list() - for(var/organ_name in src.organs) - var/datum/organ/external/organ = src.organs[organ_name] - if(organ.brute_dam + organ.burn_dam < organ.max_damage) - parts += organ - - if(!parts.len) - return - var/datum/organ/external/picked = pick(parts) - picked.take_damage(brute,burn) - src.updatehealth() - -// heal MANY external organs, in random order -/mob/proc/heal_overall_damage(var/brute, var/burn) - var/list/datum/organ/external/parts = list() - for(var/organ_name in src.organs) - var/datum/organ/external/organ = src.organs[organ_name] - if((brute && organ.brute_dam) || (burn && organ.burn_dam)) - parts += organ - - while(parts.len && (brute>0 || burn>0) ) - var/datum/organ/external/picked = pick(parts) - - var/brute_was = picked.brute_dam - var/burn_was = picked.burn_dam - - picked.heal_damage(brute,burn) - - brute -= (brute_was-picked.brute_dam) - burn -= (burn_was-picked.burn_dam) - - parts -= picked - src.updatehealth() - -// damage MANY external organs, in random order -/mob/proc/take_overall_damage(var/brute, var/burn) - var/list/datum/organ/external/parts = list() - for(var/organ_name in src.organs) - var/datum/organ/external/organ = src.organs[organ_name] - if(organ.brute_dam + organ.burn_dam < organ.max_damage) - parts += organ - - while(parts.len && (brute>0 || burn>0) ) - var/datum/organ/external/picked = pick(parts) - - var/brute_was = picked.brute_dam - var/burn_was = picked.burn_dam - - picked.take_damage(brute,burn) - - brute -= (picked.brute_dam-brute_was) - burn -= (picked.burn_dam-burn_was) - - parts -= picked - src.updatehealth() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index eecd7776852..1dc3e4e34bf 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -49,6 +49,13 @@ src.spawning = 1 return ..() +/mob/living/carbon/human/AIize() + if (src.monkeyizing) + return + for(var/t in src.organs) + del(src.organs[text("[]", t)]) + return ..() + /mob/living/carbon/AIize() if (src.monkeyizing) return @@ -59,10 +66,6 @@ src.canmove = 0 src.icon = null src.invisibility = 101 - for(var/t in src.organs) - del(src.organs[text("[]", t)]) - - return ..() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 661d3215ef9..0bf96d9eee0 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -277,9 +277,8 @@ affecting.take_damage( 0, 5 ) // 5 burn damage - H.UpdateDamageIcon() - H.fireloss += 5 H.updatehealth() + H.UpdateDamageIcon() return // if burned, don't remove the light // create a light tube/bulb item and put it in the user's hand diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index ea1945ebcf8..1e9b20d285c 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -50,7 +50,7 @@ proc - shock(mob/user as mob) + shock(mob/living/user as mob) if(!FG1 || !FG2) del(src) return 0 @@ -76,8 +76,7 @@ s.set_up(5, 1, user.loc) s.start() var/shock_damage = rand(15,30) - user.fireloss += shock_damage - user.updatehealth() + user.take_overall_damage(0,shock_damage) user.visible_message("\red [user.name] was shocked by the [src.name]!", \ "\red Energy pulse detected, system damaged!", \ "\red You hear an electrical crack") diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 44cb1bb0bcd..5eb22690726 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -49,11 +49,14 @@ proc - toxmob(var/mob/M) + toxmob(var/mob/living/M) var/radiation = (energy*2) if(istype(M,/mob/living/carbon/human)) if(M:wear_suit) //TODO: check for radiation protection radiation = round(radiation/2,1) + if(istype(M,/mob/living/carbon/monkey)) + if(M:wear_suit) //TODO: check for radiation protection + radiation = round(radiation/2,1) M.radiation += radiation M.updatehealth() //M << "\red You feel odd." diff --git a/maps/tgstation.2.0.3.dmm b/maps/tgstation.2.0.3.dmm index 9547f647081..de262835ef0 100644 --- a/maps/tgstation.2.0.3.dmm +++ b/maps/tgstation.2.0.3.dmm @@ -2844,7 +2844,7 @@ "bcJ" = (/obj/table{dir = 2; icon_state = "tabledir"},/obj/item/weapon/storage/firstaid/toxin{pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bcK" = (/obj/stool/bed{pixel_x = 3},/obj/item/weapon/bedsheet{pixel_x = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcL" = (/obj/table{dir = 9; icon_state = "tabledir"; pixel_y = 0},/obj/item/weapon/storage/lglo_kit{pixel_x = 2; pixel_y = -5},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) -"bcM" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/medical/ointment{pixel_x = 4},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) +"bcM" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/stack/medical/ointment{pixel_x = 4},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/stack/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcN" = (/obj/machinery/disposal,/obj/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcO" = (/obj/morgue,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "bcP" = (/obj/morgue,/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -5169,7 +5169,7 @@ "bVu" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/engine/engineering) "bVv" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/requests_console{department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/engineering) "bVw" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall/r_wall,/area/engine/chiefs_office) -"bVx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) +"bVx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) "bVy" = (/obj/table/reinforced{dir = 10; icon_state = "reinf_tabledir"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/cable{d1 = 4; d2 = 10; icon_state = "4-10"},/turf/simulated/floor,/area/engine/chiefs_office) "bVz" = (/obj/table/reinforced{icon_state = "reinf_tabledir"},/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/machinery/camera{c_tag = "Engineering CE's Office"; dir = 1; pixel_x = 23},/turf/simulated/floor,/area/engine/chiefs_office) "bVA" = (/obj/table/reinforced{icon_state = "reinf_tabledir"; dir = 6},/obj/item/weapon/clipboard,/obj/item/weapon/stamp/ce,/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor,/area/engine/chiefs_office) @@ -5466,8 +5466,8 @@ "cbf" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbg" = (/obj/landmark{name = "Syndicate-Spawn"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbh" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cbi" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cbj" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cbi" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cbj" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbk" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cbl" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cbm" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/infra,/obj/item/device/infra_sensor,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -6058,8 +6058,8 @@ "cmz" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmA" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmB" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"cmC" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"cmD" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"cmC" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"cmD" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmE" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/handcuff_kit,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmF" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmG" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -6708,7 +6708,7 @@ "cyZ" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/derelict/arrival) "cza" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/morgue) "czb" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"czc" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"czc" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "czd" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cze" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/derelict/storage/storage_access) "czf" = (/turf/simulated/wall/r_wall,/area/derelict/storage/storage_access) @@ -6740,8 +6740,8 @@ "czF" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "czG" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "czH" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"czI" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) -"czJ" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) +"czI" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"czJ" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "czK" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "czL" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/medical) "czM" = (/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6779,7 +6779,7 @@ "cAs" = (/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAt" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAu" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/obj/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cAv" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cAv" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) "cAw" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cAx" = (/obj/closet/wardrobe/genetics_white,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAy" = (/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6798,7 +6798,7 @@ "cAL" = (/obj/cable,/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/airless,/area/derelict/medical/chapel) "cAM" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAN" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cAO" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cAO" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAP" = (/obj/machinery/door/firedoor/border_only{dir = 1},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAQ" = (/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAR" = (/obj/closet/l3closet/general,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) diff --git a/maps/tgstation.2.0.4.dmm b/maps/tgstation.2.0.4.dmm index 6ba0a843f45..cab60e69f9a 100644 --- a/maps/tgstation.2.0.4.dmm +++ b/maps/tgstation.2.0.4.dmm @@ -2833,7 +2833,7 @@ "bcy" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcz" = (/obj/stool/bed{pixel_x = 3},/obj/item/weapon/bedsheet{pixel_x = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcA" = (/obj/table{dir = 9; icon_state = "tabledir"; pixel_y = 0},/obj/item/weapon/storage/lglo_kit{pixel_x = 2; pixel_y = -5},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) -"bcB" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/medical/ointment{pixel_x = 4},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) +"bcB" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/stack/medical/ointment{pixel_x = 4},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/stack/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcC" = (/obj/machinery/disposal,/obj/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcD" = (/obj/morgue,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "bcE" = (/obj/morgue,/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -5183,7 +5183,7 @@ "bVI" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/engine/engineering) "bVJ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/requests_console{department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/engineering) "bVK" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall/r_wall,/area/engine/chiefs_office) -"bVL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) +"bVL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) "bVM" = (/obj/table/reinforced{dir = 10; icon_state = "reinf_tabledir"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/cable{d1 = 4; d2 = 10; icon_state = "4-10"; tag = "135Right"},/turf/simulated/floor,/area/engine/chiefs_office) "bVN" = (/obj/table/reinforced{icon_state = "reinf_tabledir"},/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/camera{c_tag = "Engineering CE's Office"; dir = 1; pixel_x = 23},/turf/simulated/floor,/area/engine/chiefs_office) "bVO" = (/obj/table/reinforced{icon_state = "reinf_tabledir"; dir = 6},/obj/item/weapon/clipboard,/obj/item/weapon/stamp/ce,/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/engine/chiefs_office) @@ -5482,8 +5482,8 @@ "cbv" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbw" = (/obj/landmark{name = "Syndicate-Spawn"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbx" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cby" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cbz" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cby" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cbz" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbA" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cbB" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cbC" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/infra,/obj/item/device/infra_sensor,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -6074,8 +6074,8 @@ "cmP" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmQ" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmR" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"cmS" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"cmT" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"cmS" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"cmT" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmU" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/handcuff_kit,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmV" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmW" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -6724,7 +6724,7 @@ "czp" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/arrival) "czq" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/morgue) "czr" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"czs" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"czs" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "czt" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating/airless,/area/derelict/medical) "czu" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/storage/storage_access) "czv" = (/turf/simulated/wall/r_wall,/area/derelict/storage/storage_access) @@ -6756,8 +6756,8 @@ "czV" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "czW" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "czX" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"czY" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) -"czZ" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) +"czY" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"czZ" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cAa" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cAb" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cAc" = (/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6795,7 +6795,7 @@ "cAI" = (/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAJ" = (/obj/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAK" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cAL" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cAL" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) "cAM" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cAN" = (/obj/closet/wardrobe/genetics_white,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAO" = (/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6814,7 +6814,7 @@ "cBb" = (/obj/cable,/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/airless,/area/derelict/medical/chapel) "cBc" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cBd" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cBe" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cBe" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cBf" = (/obj/machinery/door/firedoor/border_only{dir = 1},/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cBg" = (/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cBh" = (/obj/closet/l3closet/general,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) diff --git a/maps/tgstation.2.0.5.dmm b/maps/tgstation.2.0.5.dmm index 81f24980685..ad7a962c0e0 100644 --- a/maps/tgstation.2.0.5.dmm +++ b/maps/tgstation.2.0.5.dmm @@ -2889,7 +2889,7 @@ "bdC" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bdD" = (/obj/stool/bed{pixel_x = 3},/obj/item/weapon/bedsheet{pixel_x = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bdE" = (/obj/table{dir = 9; icon_state = "tabledir"; pixel_y = 0},/obj/item/weapon/storage/lglo_kit{pixel_x = 2; pixel_y = -5},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) -"bdF" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/medical/ointment{pixel_x = 4},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) +"bdF" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/stack/medical/ointment{pixel_x = 4},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/stack/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bdG" = (/obj/machinery/disposal,/obj/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bdH" = (/obj/morgue,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "bdI" = (/obj/morgue,/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -5254,7 +5254,7 @@ "bXb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/engine/engineering) "bXc" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/requests_console{department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/engineering) "bXd" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall/r_wall,/area/engine/chiefs_office) -"bXe" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) +"bXe" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) "bXf" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/engine/chiefs_office) "bXg" = (/obj/table/reinforced{dir = 10; icon_state = "reinf_tabledir"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor,/area/engine/chiefs_office) "bXh" = (/obj/table/reinforced{icon_state = "reinf_tabledir"},/obj/machinery/camera{c_tag = "Engineering CE's Office"; dir = 1; pixel_x = 23},/turf/simulated/floor,/area/engine/chiefs_office) @@ -5553,8 +5553,8 @@ "ccN" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ccO" = (/obj/landmark{name = "Syndicate-Spawn"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ccP" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"ccQ" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"ccR" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"ccQ" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"ccR" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ccS" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ccT" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ccU" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/infra,/obj/item/device/infra_sensor,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -6145,8 +6145,8 @@ "coh" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coi" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coj" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"cok" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"col" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"cok" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"col" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "com" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/handcuff_kit,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "con" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coo" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -6797,7 +6797,7 @@ "cAJ" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/arrival) "cAK" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/morgue) "cAL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cAM" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cAM" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAN" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cAO" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/storage/storage_access) "cAP" = (/turf/simulated/wall/r_wall,/area/derelict/storage/storage_access) @@ -6829,8 +6829,8 @@ "cBp" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "cBq" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "cBr" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cBs" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) -"cBt" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) +"cBs" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cBt" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cBu" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cBv" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cBw" = (/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6868,7 +6868,7 @@ "cCc" = (/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCd" = (/obj/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCe" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cCf" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cCf" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) "cCg" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cCh" = (/obj/closet/wardrobe/genetics_white,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCi" = (/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6887,7 +6887,7 @@ "cCv" = (/obj/cable,/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/airless,/area/derelict/medical/chapel) "cCw" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCx" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cCy" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cCy" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCz" = (/obj/machinery/door/firedoor/border_only{dir = 1},/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCA" = (/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCB" = (/obj/closet/l3closet/general,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) @@ -7809,8 +7809,8 @@ "ccQ" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ccR" = (/obj/landmark{name = "Syndicate-Spawn"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ccS" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"ccT" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"ccU" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"ccT" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"ccU" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "ccV" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ccW" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ccX" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/infra,/obj/item/device/infra_sensor,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -8401,8 +8401,8 @@ "cok" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "col" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "com" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"con" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"coo" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"con" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"coo" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cop" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/handcuff_kit,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coq" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cor" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -9056,7 +9056,7 @@ "cAP" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/arrival) "cAQ" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/morgue) "cAR" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cAS" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cAS" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAT" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cAU" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/storage/storage_access) "cAV" = (/turf/simulated/wall/r_wall,/area/derelict/storage/storage_access) @@ -9088,8 +9088,8 @@ "cBv" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "cBw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "cBx" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cBy" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) -"cBz" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) +"cBy" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cBz" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cBA" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cBB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cBC" = (/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -9127,7 +9127,7 @@ "cCi" = (/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCj" = (/obj/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCk" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cCl" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cCl" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) "cCm" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cCn" = (/obj/closet/wardrobe/genetics_white,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCo" = (/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -9146,7 +9146,7 @@ "cCB" = (/obj/cable,/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/airless,/area/derelict/medical/chapel) "cCC" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCD" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cCE" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cCE" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCF" = (/obj/machinery/door/firedoor/border_only{dir = 1},/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCG" = (/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCH" = (/obj/closet/l3closet/general,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) diff --git a/maps/tgstation.2.0.6.dmm b/maps/tgstation.2.0.6.dmm index 7d917543646..e71183a42b7 100644 --- a/maps/tgstation.2.0.6.dmm +++ b/maps/tgstation.2.0.6.dmm @@ -2832,7 +2832,7 @@ "bcx" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcy" = (/obj/stool/bed{pixel_x = 3},/obj/item/weapon/bedsheet{pixel_x = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcz" = (/obj/table{dir = 9; icon_state = "tabledir"; pixel_y = 0},/obj/item/weapon/storage/lglo_kit{pixel_x = 2; pixel_y = -5},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) -"bcA" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/medical/ointment{pixel_x = 4},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) +"bcA" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/stack/medical/ointment{pixel_x = 4},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/stack/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcB" = (/obj/machinery/disposal,/obj/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bcC" = (/obj/morgue,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "bcD" = (/obj/morgue,/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -5177,7 +5177,7 @@ "bVC" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/engine/engineering) "bVD" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/requests_console{department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/engineering) "bVE" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall/r_wall,/area/engine/chiefs_office) -"bVF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) +"bVF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) "bVG" = (/obj/table/reinforced{dir = 10; icon_state = "reinf_tabledir"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/cable{d1 = 4; d2 = 10; icon_state = "4-10"; tag = "135Right"},/turf/simulated/floor,/area/engine/chiefs_office) "bVH" = (/obj/table/reinforced{icon_state = "reinf_tabledir"},/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/camera{c_tag = "Engineering CE's Office"; dir = 1; pixel_x = 23},/turf/simulated/floor,/area/engine/chiefs_office) "bVI" = (/obj/table/reinforced{icon_state = "reinf_tabledir"; dir = 6},/obj/item/weapon/clipboard,/obj/item/weapon/stamp/ce,/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/engine/chiefs_office) @@ -5474,8 +5474,8 @@ "cbn" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbo" = (/obj/landmark{name = "Syndicate-Spawn"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbp" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cbq" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cbr" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cbq" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cbr" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cbs" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cbt" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cbu" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/infra,/obj/item/device/infra_sensor,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -6066,8 +6066,8 @@ "cmH" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmI" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmJ" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"cmK" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"cmL" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"cmK" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"cmL" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmM" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/handcuff_kit,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmN" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "cmO" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -6716,7 +6716,7 @@ "czh" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/arrival) "czi" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/morgue) "czj" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"czk" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"czk" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "czl" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating/airless,/area/derelict/medical) "czm" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/storage/storage_access) "czn" = (/turf/simulated/wall/r_wall,/area/derelict/storage/storage_access) @@ -6748,8 +6748,8 @@ "czN" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "czO" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "czP" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"czQ" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) -"czR" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) +"czQ" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"czR" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "czS" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "czT" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/medical) "czU" = (/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6787,7 +6787,7 @@ "cAA" = (/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAB" = (/obj/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAC" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cAD" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cAD" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) "cAE" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cAF" = (/obj/closet/wardrobe/genetics_white,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAG" = (/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6806,7 +6806,7 @@ "cAT" = (/obj/cable,/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/airless,/area/derelict/medical/chapel) "cAU" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAV" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cAW" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cAW" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAX" = (/obj/machinery/door/firedoor/border_only{dir = 1},/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAY" = (/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cAZ" = (/obj/closet/l3closet/general,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) diff --git a/maps/tgstation.2.0.7.dmm b/maps/tgstation.2.0.7.dmm index 7a598d5b39e..df73bfbcbf1 100644 --- a/maps/tgstation.2.0.7.dmm +++ b/maps/tgstation.2.0.7.dmm @@ -2909,7 +2909,7 @@ "bdW" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bdX" = (/obj/stool/bed{pixel_x = 3},/obj/item/weapon/bedsheet{pixel_x = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bdY" = (/obj/table{dir = 9; icon_state = "tabledir"; pixel_y = 0},/obj/item/weapon/storage/lglo_kit{pixel_x = 2; pixel_y = -5},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) -"bdZ" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/medical/ointment{pixel_x = 4},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) +"bdZ" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/stack/medical/ointment{pixel_x = 4},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/stack/medical/bruise_pack{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "bea" = (/obj/machinery/disposal,/obj/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/exam_room) "beb" = (/obj/morgue,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) "bec" = (/obj/morgue,/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue) @@ -5274,7 +5274,7 @@ "bXv" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/engine/engineering) "bXw" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/requests_console{department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/engine/engineering) "bXx" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall/r_wall,/area/engine/chiefs_office) -"bXy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) +"bXy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/turf/simulated/floor,/area/engine/chiefs_office) "bXz" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/engine/chiefs_office) "bXA" = (/obj/table/reinforced{dir = 10; icon_state = "reinf_tabledir"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor,/area/engine/chiefs_office) "bXB" = (/obj/table/reinforced{icon_state = "reinf_tabledir"},/obj/machinery/camera{c_tag = "Engineering CE's Office"; dir = 1; pixel_x = 23},/turf/simulated/floor,/area/engine/chiefs_office) @@ -5574,8 +5574,8 @@ "cdj" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cdk" = (/obj/landmark{name = "Syndicate-Spawn"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cdl" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cdm" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cdn" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cdm" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"cdn" = (/obj/machinery/atmospherics/pipe/simple,/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/stack/medical/ointment,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cdo" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cdp" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/clothing/gloves/yellow,/obj/item/device/radio/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "cdq" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/infra,/obj/item/device/infra_sensor,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -6167,8 +6167,8 @@ "coE" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coF" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coG" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"coH" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/obj/item/weapon/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) -"coI" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/obj/item/weapon/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"coH" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) +"coI" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coJ" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/handcuff_kit,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coK" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) "coL" = (/obj/table{icon_state = "tabledir"; dir = 1},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/hand_labeler,/turf/unsimulated/floor{icon_state = "white"},/area/tdome/tdomeadmin) @@ -6822,7 +6822,7 @@ "cBj" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/arrival) "cBk" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/morgue) "cBl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cBm" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cBm" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cBn" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cBo" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/derelict/storage/storage_access) "cBp" = (/turf/simulated/wall/r_wall,/area/derelict/storage/storage_access) @@ -6854,8 +6854,8 @@ "cBP" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "cBQ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "cBR" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cBS" = (/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) -"cBT" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) +"cBS" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cBT" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cBU" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cBV" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/medical) "cBW" = (/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6893,7 +6893,7 @@ "cCC" = (/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCD" = (/obj/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCE" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cCF" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/weapon/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) +"cCF" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/medical) "cCG" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/medical) "cCH" = (/obj/closet/wardrobe/genetics_white,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCI" = (/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area) @@ -6912,7 +6912,7 @@ "cCV" = (/obj/cable,/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/airless,/area/derelict/medical/chapel) "cCW" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCX" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) -"cCY" = (/obj/item/weapon/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) +"cCY" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cCZ" = (/obj/machinery/door/firedoor/border_only{dir = 1},/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cDa" = (/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "cDb" = (/obj/closet/l3closet/general,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) diff --git a/tgstation.dme b/tgstation.dme index 4bef2290fbb..a705f7a25a8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -636,6 +636,7 @@ #include "code\modules\mob\dead\observer\observer.dm" #include "code\modules\mob\dead\observer\say.dm" #include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\living.dm" #include "code\modules\mob\living\carbon\carbon.dm" #include "code\modules\mob\living\carbon\alien\say.dm" #include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm"