diff --git a/baystation12.dme b/baystation12.dme index 00bfb911c1b..87626cca810 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -23,7 +23,6 @@ #define FILE_DIR "code/defines/mob/living/carbon" #define FILE_DIR "code/defines/mob/living/silicon" #define FILE_DIR "code/defines/obj" -#define FILE_DIR "code/defines/obj/clothing" #define FILE_DIR "code/defines/procs" #define FILE_DIR "code/defines/sd_procs" #define FILE_DIR "code/FEA" @@ -90,6 +89,7 @@ #define FILE_DIR "code/modules/chemical" #define FILE_DIR "code/modules/clothing" #define FILE_DIR "code/modules/clothing/glasses" +#define FILE_DIR "code/modules/clothing/head" #define FILE_DIR "code/modules/clothing/spacesuits" #define FILE_DIR "code/modules/clothing/suits" #define FILE_DIR "code/modules/clothing/uniforms" @@ -328,14 +328,6 @@ #include "code\defines\obj\vending.dm" #include "code\defines\obj\weapon.dm" #include "code\defines\obj\window.dm" -#include "code\defines\obj\clothing\costume.dm" -#include "code\defines\obj\clothing\ears.dm" -#include "code\defines\obj\clothing\gimmick.dm" -#include "code\defines\obj\clothing\gloves.dm" -#include "code\defines\obj\clothing\head.dm" -#include "code\defines\obj\clothing\jumpsuit.dm" -#include "code\defines\obj\clothing\mask.dm" -#include "code\defines\obj\clothing\shoes.dm" #include "code\defines\procs\AStar.dm" #include "code\defines\procs\captain_announce.dm" #include "code\defines\procs\church_name.dm" @@ -799,12 +791,21 @@ #include "code\modules\chemical\Chemistry-Reagents.dm" #include "code\modules\chemical\Chemistry-Recipes.dm" #include "code\modules\chemical\Chemistry-Tools.dm" +#include "code\modules\clothing\costume.dm" +#include "code\modules\clothing\ears.dm" +#include "code\modules\clothing\gimmick.dm" #include "code\modules\clothing\glasses.dm" -#include "code\modules\clothing\hardhat.dm" +#include "code\modules\clothing\gloves.dm" +#include "code\modules\clothing\jumpsuit.dm" +#include "code\modules\clothing\mask.dm" +#include "code\modules\clothing\shoes.dm" #include "code\modules\clothing\spacesuit.dm" #include "code\modules\clothing\suit.dm" #include "code\modules\clothing\glasses\glasses.dm" #include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\head\hardhat.dm" +#include "code\modules\clothing\head\hats.dm" +#include "code\modules\clothing\head\helmets.dm" #include "code\modules\clothing\spacesuits\captain.dm" #include "code\modules\clothing\spacesuits\miscellaneous.dm" #include "code\modules\clothing\spacesuits\ninja.dm" diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm index b205a612d5e..af80f42cef7 100644 --- a/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm +++ b/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm @@ -1,198 +1,485 @@ /mob/living/carbon/human/tajaran/examine() - set src in view() + set src in oview() - usr << "\blue *---------*" + if(!usr || !src) return + if(((usr.disabilities & 128) || usr.blinded || usr.stat) && !(istype(usr,/mob/dead/observer/))) + usr << "Something is there but you can't see it." + return - usr << "\blue This is \icon[src.icon] [src.name]! One of the cat-like Tajarans." + var/skipgloves = 0 + var/skipsuitstorage = 0 + var/skipjumpsuit = 0 + var/skipshoes = 0 + var/skipmask = 0 + var/skipears = 0 + var/skipeyes = 0 - // crappy hack because you can't do \his[src] etc + //exosuits and helmets obscure our view and stuff. + if (src.wear_suit) + skipgloves = src.wear_suit.flags_inv & HIDEGLOVES + skipsuitstorage = src.wear_suit.flags_inv & HIDESUITSTORAGE + skipjumpsuit = src.wear_suit.flags_inv & HIDEJUMPSUIT + skipshoes = src.wear_suit.flags_inv & HIDESHOES + + if (src.head) + skipmask = src.head.flags_inv & HIDEMASK + skipeyes = src.head.flags_inv & HIDEEYES + skipears = src.head.flags_inv & HIDEEARS + + // crappy hacks because you can't do \his[src] etc. I'm sorry this proc is so unreadable, blame the text macros :< + var/t_He = "It" //capitalised for use at the start of each line. var/t_his = "its" var/t_him = "it" - if (src.gender == MALE) - t_his = "his" - t_him = "him" - else if (src.gender == FEMALE) - t_his = "her" - t_him = "her" + var/t_has = "has" + var/t_is = "is" - if (src.w_uniform) + var/msg = "*---------*\nThis is " + + if( skipjumpsuit && (wear_mask || skipmask) ) //big suits/masks make it hard to tell their gender + t_He = "They" + t_his = "their" + t_him = "them" + t_has = "have" + t_is = "are" + else + if(src.icon) + msg += "\icon[src.icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated + switch(src.gender) + if(MALE) + t_He = "He" + t_his = "his" + t_him = "him" + if(FEMALE) + t_He = "She" + t_his = "her" + t_him = "her" + + msg += "\a [src], one of the cat-like Tajarans.!\n" + + //uniform + if (src.w_uniform && !skipjumpsuit) if (src.w_uniform.blood_DNA) - usr << "\red [src.name] is wearing a[src.w_uniform.blood_DNA ? " bloody " : " "] \icon[src.w_uniform] [src.w_uniform.name]!" + msg += "[t_He] [t_is] wearing \icon[src.w_uniform] [src.w_uniform.gender==PLURAL?"some":"a"] blood-stained [src.w_uniform.name]!\n" else - usr << "\blue [src.name] is wearing a \icon[src.w_uniform] [src.w_uniform.name]." + msg += "[t_He] [t_is] wearing \icon[src.w_uniform] \a [src.w_uniform].\n" - if (src.handcuffed) - usr << "\blue [src.name] is \icon[src.handcuffed] handcuffed!" + //head + if (src.head) + if (src.head.blood_DNA) + msg += "[t_He] [t_is] wearing \icon[src.head] [src.head.gender==PLURAL?"some":"a"] blood-stained [src.head.name] on [t_his] head!\n" + else + msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head.\n" + //suit/armour if (src.wear_suit) if (src.wear_suit.blood_DNA) - usr << "\red [src.name] has a[src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name] on!" + msg += "[t_He] [t_is] wearing \icon[src.wear_suit] [src.wear_suit.gender==PLURAL?"some":"a"] blood-stained [src.wear_suit.name]!\n" else - usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on." + msg += "[t_He] [t_is] wearing \icon[src.wear_suit] \a [src.wear_suit].\n" - if (src.l_ear) - usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear." + //suit/armour storage + if(src.s_store && !skipsuitstorage) + if(src.s_store.blood_DNA) + msg += "[t_He] [t_is] carrying \icon[src.s_store] [src.s_store.gender==PLURAL?"some":"a"] blood-stained [src.s_store.name] on [t_his] [src.wear_suit.name]!\n" + else + msg += "[t_He] [t_is] carrying \icon[src.s_store] \a [src.s_store] on [t_his] [src.wear_suit.name].\n" - if (src.r_ear) - usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear." - - if (src.wear_mask) - if (src.wear_mask.blood_DNA) - usr << "\red [src.name] has a[src.wear_mask.blood_DNA ? " bloody " : " "] \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face!" + //back + if (src.back) + if (src.back.blood_DNA) + msg += "[t_He] [t_has] \icon[src.back] [src.back.gender==PLURAL?"some":"a"] blood-stained [src.back] on [t_his] back.\n" else - usr << "\blue [src.name] has a \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face." + msg += "[t_He] [t_has] \icon[src.back] \a [src.back] on [t_his] back.\n" + //left hand if (src.l_hand) if (src.l_hand.blood_DNA) - usr << "\red [src.name] has a[src.l_hand.blood_DNA ? " bloody " : " "] \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand!" + msg += "[t_He] [t_is] holding \icon[src.l_hand] [src.l_hand.gender==PLURAL?"some":"a"] blood-stained [src.l_hand.name] in [t_his] left hand!\n" else - usr << "\blue [src.name] has a \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand." + msg += "[t_He] [t_is] holding \icon[src.l_hand] \a [src.l_hand] in [t_his] left hand.\n" + //right hand if (src.r_hand) if (src.r_hand.blood_DNA) - usr << "\red [src.name] has a[src.r_hand.blood_DNA ? " bloody " : " "] \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand!" + msg += "[t_He] [t_is] holding \icon[src.r_hand] [src.r_hand.gender==PLURAL?"some":"a"] blood-stained [src.r_hand.name] in [t_his] right hand!\n" else - usr << "\blue [src.name] has a \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand." + msg += "[t_He] [t_is] holding \icon[src.r_hand] \a [src.r_hand] in [t_his] right hand.\n" + //gloves + if (src.gloves && !skipgloves) + if (src.gloves.blood_DNA) + msg += "[t_He] [t_has] \icon[src.gloves] [src.gloves.gender==PLURAL?"some":"a"] blood-stained [src.gloves.name] on [t_his] hands!\n" + else + msg += "[t_He] [t_has] \icon[src.gloves] \a [src.gloves] on [t_his] hands.\n" + else if (src.blood_DNA) + msg += "[t_He] [t_has] blood-stained hands!\n" + + //handcuffed? + if (src.handcuffed) + msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n" + + //belt if (src.belt) if (src.belt.blood_DNA) - usr << "\red [src.name] has a[src.belt.blood_DNA ? " bloody " : " "] \icon[src.belt] [src.belt.name] on [t_his] belt!" + msg += "[t_He] [t_has] \icon[src.belt] [src.belt.gender==PLURAL?"some":"a"] blood-stained [src.belt.name] about [t_his] waist!\n" else - usr << "\blue [src.name] has a \icon[src.belt] [src.belt.name] on [t_his] belt." - if(src.s_store) - if(src.s_store.blood_DNA) - usr << "\red [src.name] has a[src.s_store.blood_DNA ? " bloody " : " "] \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]!" + msg += "[t_He] [t_has] \icon[src.belt] \a [src.belt] about [t_his] waist.\n" + + //shoes + if (src.shoes && !skipshoes) + if(src.shoes.blood_DNA) + msg += "[t_He] [t_is] wearing \icon[src.shoes] [src.shoes.gender==PLURAL?"some":"a"] blood-stained [src.shoes.name] on [t_his] feet!\n" else - usr << "\blue [src.name] has a \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]." - if (src.shoes) - usr << "[src.shoes.blood_DNA ? "\red" : "\blue"][src.name] has a[src.shoes.blood_DNA ? " bloody " : " "] \icon[src.shoes] [src.shoes.name] on [t_his] feet." + msg += "[t_He] [t_is] wearing \icon[src.shoes] \a [src.shoes] on [t_his] feet.\n" - - if (src.gloves) - if (src.gloves.blood_DNA) - usr << "\red [src.name] has bloody \icon[src.gloves] [src.gloves.name] on [t_his] hands!" + //mask + if (src.wear_mask && !skipmask) + if (src.wear_mask.blood_DNA) + msg += "[t_He] [t_has] \icon[src.wear_mask] [src.wear_mask.gender==PLURAL?"some":"a"] blood-stained [src.wear_mask.name] on [t_his] face!\n" else - usr << "\blue [src.name] has \icon[src.gloves] [src.gloves.name] on [t_his] hands." - else if (src.blood_DNA) - usr << "\red [src.name] has bloody hands!" + msg += "[t_He] [t_has] \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n" - if (src.back) - usr << "\blue [src.name] has a \icon[src.back] [src.back.name] on [t_his] back." + //eyes + if (src.glasses && !skipeyes) + if (src.glasses.blood_DNA) + msg += "[t_He] [t_has] \icon[src.glasses] [src.glasses.gender==PLURAL?"some":"a"] blood-stained [src.glasses] covering [t_his] eyes!\n" + else + msg += "[t_He] [t_has] \icon[src.glasses] \a [src.glasses] covering [t_his] eyes.\n" + if (src.l_ear && !skipears) + msg += "[t_He] [t_has] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear.\n" + + if (src.r_ear && !skipears) + msg += "[t_He] [t_has] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear.\n" + + //ID if (src.wear_id) var/id - var/photo = 0 - if(istype(src:wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = src:wear_id + if(istype(src.wear_id, /obj/item/device/pda)) + var/obj/item/device/pda/pda = src.wear_id id = pda.owner + else if(istype(src.wear_id, /obj/item/weapon/card/id)) //just in case something other than a PDA/ID card somehow gets in the ID slot :[ + var/obj/item/weapon/card/id/idcard = src.wear_id + id = idcard.registered_name + if (id && (id != src.real_name) && (get_dist(src, usr) <= 1) && prob(10)) + msg += "[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id] yet something doesn't seem right...\n" else - id = src.wear_id.registered_name - if (src.wear_id.PHOTO) - photo = 1 - if (id != src.real_name && in_range(src, usr) && prob(10)) - if (photo) - usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!" - else - usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!" - else - if (photo) - usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo." - else - usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]." - + msg += "[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id].\n" + //Jitters if (src.is_jittery) - switch(src.jitteriness) - if(300 to INFINITY) - usr << "\red [src] is violently convulsing." - if(200 to 300) - usr << "\red [src] looks extremely jittery." - if(100 to 200) - usr << "\red [src] is twitching ever so slightly." + if(src.jitteriness >= 300) + msg += "[t_He] [t_is] convulsing violently!\n" + else if(src.jitteriness >= 200) + msg += "[t_He] [t_is] extremely jittery.\n" + else if(src.jitteriness >= 100) + msg += "[t_He] [t_is] twitching ever so slightly.\n" if (src.suiciding) - switch(src.suiciding) - if(1) - usr << "\red [src.name] appears to have bitten [t_his] tongue off!" + msg += "[t_He] [t_has] bitten off [t_his] own tongue and [t_has] suffered major bloodloss!\n" var/distance = get_dist(usr,src) if(istype(usr, /mob/dead/observer) || usr.stat == 2) // ghosts can see anything distance = 1 if (src.stat == 1 || stat == 2) - usr << "\red [name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep." - if(health < 0 && distance <= 3) - usr << "\red [name] does not appear to be breathing." - if(ishuman(src) && usr.stat == 0 && src.stat == 1 && distance <= 1) + msg += "[name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep.\n" + if((!isbreathing || holdbreath) && distance <= 3) + msg += "[name] does not appear to be breathing.\n" + if(istype(usr, /mob/living/carbon/human) && usr.stat == 0 && src.stat == 1 && distance <= 1) for(var/mob/O in viewers(usr.loc, null)) O.show_message("[usr] checks [src]'s pulse.", 1) - sleep(15) - usr << "\blue [name] has a pulse!" + spawn(15) + usr << "\blue [name] has a pulse!" if (src.stat == 2 || (changeling && changeling.changeling_fakedeath == 1)) if(distance <= 1) - if(ishuman(usr) && usr.stat == 0) - for(var/mob/O in viewers(usr.loc, null) ) + if(istype(usr, /mob/living/carbon/human) && usr.stat == 0) + for(var/mob/O in viewers(usr.loc, null)) O.show_message("[usr] checks [src]'s pulse.", 1) - sleep(15) - usr << "\red [name] has no pulse!" - else - if (src.getBruteLoss()) - if (src.getBruteLoss() < 30) - usr << "\red [src.name] looks slightly injured!" - else - usr << "\red [src.name] looks severely injured!" + spawn(15) + usr << "\red [name] has no pulse!" - if (src.cloneloss) - if (src.cloneloss < 30) - usr << "\red [src.name] looks slightly... unfinished?" - else - usr << "\red [src.name] looks very... unfinished?" +/* if (src.getBruteLoss()) + if (src.getBruteLoss() < 30) + usr << "\red [src.name] looks slightly injured!" + else + usr << "\red [src.name] looks severely injured!"*/ - if (src.getFireLoss()) - if (src.getFireLoss() < 30) - usr << "\red [src.name] looks slightly burned!" - else - usr << "\red [src.name] looks severely burned!" + if (src.cloneloss) + if (src.cloneloss < 30) + msg += "[src.name] looks slightly... unfinished?\n" + else + msg += "[src.name] looks very... unfinished?\n" - if (src.nutrition < 100) - usr << "\red [src.name] looks like flesh and bones." - else if (src.nutrition >= 500) - if (usr.nutrition < 100) - usr << "\red [src.name] looks very round and delicious. Like a little piggy. A tasty piggy." - else - usr << "\blue [src.name] looks quite chubby." +/* if (src.getFireLoss()) + if (src.getFireLoss() < 30) + usr << "\red [src.name] looks slightly burned!" + else + usr << "\red [src.name] looks severely burned!"*/ + msg += "" + if (src.nutrition < 100) + msg += "[t_He] [t_is] severely malnourished.\n" + else if (src.nutrition >= 500) + if (usr.nutrition < 100) + msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n" + else + msg += "[t_He] [t_is] quite chubby.\n" - else if (src.brainloss >= 60) - usr << "\red [src.name] has a stupid expression on [t_his] face." - if (!src.client) - usr << "\red [src.name] doesn't seem as though they want to talk." + msg += "" + + if (src.getBrainLoss() >= 60 && !stat) + msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" + + if (!src.client) + msg += "[t_He] [t_has] a vacant, braindead stare...\n" + + var/list/wound_descriptions = list() + var/list/wound_flavor_text = list() for(var/named in organs) var/datum/organ/external/temp = organs[named] - if(temp.destroyed) - usr << "\red [src.name] is missing [t_his] [temp.display_name]." - if(temp.wounds) - for(var/datum/organ/external/wound/w in temp.wounds) - var/size = w.wound_size - var/sizetext - switch(size) + if(temp) + if(temp.destroyed) + wound_flavor_text["[temp.display_name]"] = "[src.name] is missing [t_his] [temp.display_name].\n" + continue + if(temp.wounds) + var/list/wounds = list(list(),list(),list(),list(),list(),list()) + for(var/datum/organ/wound/w in temp.wounds) + switch(w.healing_state) + if(0) + var/list/cut = wounds[1] + cut += w + wounds[1] = cut + if(1) + var/list/cut = wounds[2] + cut += w + wounds[2] = cut + if(2) + var/list/cut = wounds[3] + cut += w + wounds[3] = cut + if(3) + var/list/cut = wounds[4] + cut += w + wounds[4] = cut + if(4) + var/list/cut = wounds[5] + cut += w + wounds[5] = cut + if(5) + var/list/cut = wounds[6] + cut += w + wounds[6] = cut + wound_descriptions["[temp.display_name]"] = wounds + else + wound_flavor_text["[temp.display_name]"] = "" + //Now that we have a big list of all the wounds, on all the limbs. + var/list/is_bleeding = list() + for(var/named in wound_descriptions) + var/list/wound_states = wound_descriptions[named] + var/list/flavor_text = list() + for(var/i = 1, i <= 6, i++) + var/list/wound_state = wound_states[i] //All wounds at this level of healing. + var/list/tally = list("cut" = 0, "deep cut" = 0, "flesh wound" = 0, "gaping wound" = 0, "big gaping wound" = 0, "massive wound" = 0,\ + "tiny bruise" = 0, "small bruise" = 0, "moderate bruise" = 0, "large bruise" = 0, "huge bruise" = 0, "monumental bruise" = 0,\ + "small burn" = 0, "moderate burn" = 0, "large burn" = 0, "severe burn" = 0, "deep burn" = 0, "carbonised area" = 0) //How many wounds of what size. + for(var/datum/organ/wound/w in wound_state) + if(w.bleeding && !is_bleeding[named]) is_bleeding[named] = 1 + switch(w.wound_size) if(1) - sizetext = "cut" + switch(w.wound_type) + if(0) + tally["cut"] += 1 + if(1) + tally["tiny bruise"] += 1 + if(2) + tally["small burn"] += 1 if(2) - sizetext = "deep cut" + switch(w.wound_type) + if(0) + tally["deep cut"] += 1 + if(1) + tally["small bruise"] += 1 + if(2) + tally["moderate burn"] += 1 if(3) - sizetext = "flesh wound" + switch(w.wound_type) + if(0) + tally["flesh wound"] += 1 + if(1) + tally["moderate bruise"] += 1 + if(2) + tally["large burn"] += 1 if(4) - sizetext = "gaping wound" + switch(w.wound_type) + if(0) + tally["gaping wound"] += 1 + if(1) + tally["large bruise"] += 1 + if(2) + tally["severe burn"] += 1 if(5) - sizetext = "big gaping wound" + switch(w.wound_type) + if(0) + tally["big gaping wound"] += 1 + if(1) + tally["huge bruise"] += 1 + if(2) + tally["deep burn"] += 1 if(6) - sizetext = "massive wound" - if(w.bleeding) - usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]." + switch(w.wound_type) + if(0) + tally["massive wound"] += 1 + if(1) + tally["monumental bruise"] += 1 + if(2) + tally["carbonised area"] += 1 + for(var/tallied in tally) + if(!tally[tallied]) continue + //if(flavor_text_string && tally[tallied]) + // for( + // flavor_text_string += pick(list(", as well as", ", in addition to")) //add more later. + var/tallied_rename = list("cut" = "cut","deep cut" = "deep cut", "flesh wound" = "flesh wound",\ + "gaping wound" = "gaping wound", "big gaping wound" = "big gaping wound", "massive wound" = "massive wound",\ + "tiny bruise" = "tiny bruise", "small bruise" = "small bruise", "moderate bruise" = "moderate bruise",\ + "large bruise" = "large bruise", "huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\ + "small burn" = "small burn", "moderate burn" = "moderate burn", "large burn" = "large burn",\ + "severe burn" = "severe burn", "deep burn" = "deep burn", "carbonised area" = "carbonised area") + switch(i) + if(2) //Healing wounds. + if(tallied in list("cut","tiny bruise","small burn")) + continue + tallied_rename = list("deep cut" = "clotted cut", "flesh wound" = "small bandaged wound",\ + "gaping wound" = "bandaged wound", "big gaping wound" = "gauze wrapped wound",\ + "massive wound" = "massive blood soaked bandage", "small bruise" = "small bruise",\ + "moderate bruise" = "moderate bruise", "large bruise" = "large bruise",\ + "huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\ + "moderate burn" = "moderate salved burn", "large burn" = "large salved burn",\ + "severe burn" = "severe salved burn", "deep burn" = "deep salved burn",\ + "carbonised area" = "treated carbonised area") + if(3) + if(tallied in list("cut","tiny bruise","small burn")) + continue + tallied_rename = list("deep cut" = "fading cut", "flesh wound" = "small healing wound",\ + "gaping wound" = "healing wound", "big gaping wound" = "big healing wound",\ + "massive wound" = "massive healing wound", "small bruise" = "tiny bruise",\ + "moderate bruise" = "small bruise", "large bruise" = "moderate bruise",\ + "huge bruise" = "large bruise", "monumental bruise" = "huge bruise",\ + "moderate burn" = "healing moderate burn", "large burn" = "healing large burn",\ + "severe burn" = "healing severe burn", "deep burn" = "healing deep burn",\ + "carbonised area" = "slowly healing carbonised area") + if(4) + if(tallied in list("cut","deep cut","tiny bruise", "small bruise","small burn", "moderate burn")) + continue + tallied_rename = list("flesh wound" = "small red scar", "gaping wound" = "angry straight scar",\ + "big gaping wound" = "jagged angry scar", "massive wound" = "gigantic angry scar",\ + "moderate bruise" = "tiny bruise", "large bruise" = "small bruise",\ + "huge bruise" = "moderate bruise", "monumental bruise" = "large bruise",\ + "large burn" = "large burn scar", "severe burn" = "severe burn scar",\ + "deep burn" = "deep burn scar", "carbonised area" = "healing carbonised area") + if(5) + if(tallied in list("cut","deep cut","tiny bruise", "small bruise", "moderate bruise","small burn", "moderate burn")) + continue + tallied_rename = list("flesh wound" = "small scar", "gaping wound" = "straight scar",\ + "big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\ + "large bruise" = "tiny bruise",\ + "huge bruise" = "small bruise", "monumental bruise" = "moderate bruise",\ + "large burn" = "large burn scar", "severe burn" = "severe burn scar",\ + "deep burn" = "deep burn scar", "carbonised area" = "large scarred area") + if(6) + if(tallied in list("cut","deep cut","flesh wound","tiny bruise", "small bruise", "moderate bruise", "large bruise", "huge bruise","small burn", "moderate burn")) + continue + tallied_rename = list("gaping wound" = "straight scar",\ + "big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\ + "monumental bruise" = "tiny bruise",\ + "large burn" = "large burn scar", "severe burn" = "severe burn scar",\ + "deep burn" = "deep burn scar", "carbonised area" = "large scarred area") + var/list/no_exclude = list("gaping wound", "big gaping wound", "massive wound", "large bruise",\ + "huge bruise", "massive bruise", "severe burn", "large burn", "deep burn", "carbonised area") + switch(tally[tallied]) + if(1) + if(!flavor_text.len) + flavor_text += "[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]" + else + flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]" + if(2) + if(!flavor_text.len) + flavor_text += "[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s" + else + flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s" + if(3 to 5) + if(!flavor_text.len) + flavor_text += "[src] has several [tallied_rename[tallied]]s" + else + flavor_text += " several [tallied_rename[tallied]]s" + if(6 to INFINITY) + if(!flavor_text.len) + flavor_text += "[src] has a bunch of [tallied_rename[tallied]]s" + else + flavor_text += " a ton of [tallied_rename[tallied]]s" + if(flavor_text.len) + var/flavor_text_string = "" + for(var/text = 1, text <= flavor_text.len, text++) + if(text == flavor_text.len && flavor_text.len > 1) + flavor_text_string += ", and" + else if(flavor_text.len > 1) + flavor_text_string += "," + flavor_text_string += flavor_text[text] + flavor_text_string += " on [t_his] [named].
" + wound_flavor_text["[named]"] = flavor_text_string + if(wound_flavor_text["head"] && !skipmask && !(wear_mask && istype(wear_mask, /obj/item/clothing/mask/gas))) + msg += wound_flavor_text["head"] + else if(is_bleeding["head"]) + msg += "[src] has blood running down [t_his] face!\n" + if(wound_flavor_text["chest"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["chest"] + else if(is_bleeding["chest"]) + msg += "[src] has blood soaking through from under [t_his] clothing!\n" + if(wound_flavor_text["left arm"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["left arm"] + else if(is_bleeding["left arm"]) + msg += "[src] has blood soaking through from under [t_his] clothing!\n" + if(wound_flavor_text["left hand"] && !gloves && !skipgloves) + msg += wound_flavor_text["left hand"] + else if(is_bleeding["left hand"]) + msg += "[src] has blood running from under [t_his] gloves!\n" + if(wound_flavor_text["right arm"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["right arm"] + else if(is_bleeding["right arm"]) + msg += "[src] has blood soaking through from under [t_his] clothing!\n" + if(wound_flavor_text["right hand"] && !gloves && !skipgloves) + msg += wound_flavor_text["right hand"] + else if(is_bleeding["right hand"]) + msg += "[src] has blood running from under [t_his] gloves!\n" + if(wound_flavor_text["groin"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["groin"] + else if(is_bleeding["groin"]) + msg += "[src] has blood soaking through from under [t_his] clothing!\n" + if(wound_flavor_text["left leg"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["left leg"] + else if(is_bleeding["left leg"]) + msg += "[src] has blood soaking through from under [t_his] clothing!\n" + if(wound_flavor_text["left foot"]&& !shoes && !skipshoes) + msg += wound_flavor_text["left foot"] + else if(is_bleeding["left foot"]) + msg += "[src] has blood running from [t_his] shoes!\n" + if(wound_flavor_text["right leg"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["right leg"] + else if(is_bleeding["right leg"]) + msg += "[src] has blood soaking through from under [t_his] clothing!\n" + if(wound_flavor_text["right foot"]&& !shoes && !skipshoes) + msg += wound_flavor_text["right foot"] + else if(is_bleeding["right foot"]) + msg += "[src] has blood running from [t_his] shoes!\n" - print_flavor_text() - usr << "\blue *---------*" \ No newline at end of file +// if(w.bleeding) +// usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]." +// continue + + msg += print_flavor_text() + + msg += "\blue *---------*" + usr << msg diff --git a/code/defines/atom.dm b/code/defines/atom.dm index ca3ebde1f3e..7a249386de6 100644 --- a/code/defines/atom.dm +++ b/code/defines/atom.dm @@ -2,6 +2,7 @@ layer = 2 var/level = 2 var/flags = FPRINT + var/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc. var/list/fingerprints var/list/fingerprintshidden var/fingerprintslast = null diff --git a/code/defines/obj/decal.dm b/code/defines/obj/decal.dm index 4ec6f400cb6..03bf518d7b4 100644 --- a/code/defines/obj/decal.dm +++ b/code/defines/obj/decal.dm @@ -62,6 +62,16 @@ D.cure(0) ..() +/obj/effect/decal/cleanable/blood/drip + name = "drips of blood" + desc = "It's red." + density = 0 + anchored = 1 + layer = 2 + icon = 'drip.dmi' + icon_state = "1" + track_amt = 0 + /obj/effect/decal/cleanable/mucus name = "Mucus" desc = "Disgusting mucus." diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 338065b34b9..3f933a749f5 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -397,8 +397,8 @@ name = "medical pack" singular_name = "medical pack" icon = 'items.dmi' - amount = 5 - max_amount = 5 + amount = 10 //To compensate for wounds + max_amount = 10 w_class = 1 throw_speed = 4 throw_range = 20 @@ -406,11 +406,11 @@ var/heal_burn = 0 /obj/item/stack/medical/bruise_pack - name = "bruise pack" - singular_name = "bruise pack" - desc = "A pack designed to treat blunt-force trauma." + name = "\improper Roll of Gauze" + singular_name = "\improper Roll of Gauze" + desc = "A roll of gauze for sealing up wounds." icon_state = "brutepack" - heal_brute = 40 + heal_brute = 1 origin_tech = "biotech=1" /obj/item/stack/medical/bruise_pack/tajaran @@ -419,7 +419,7 @@ desc = "A soft leaf that is rubbed on bruises." icon = 'harvest.dmi' icon_state = "cabbage" - heal_brute = 30 + heal_brute = 1 /obj/item/stack/medical/ointment name = "ointment" @@ -427,7 +427,7 @@ gender = PLURAL singular_name = "ointment" icon_state = "ointment" - heal_burn = 40 + heal_burn = 1 origin_tech = "biotech=1" /obj/item/stack/medical/ointment/tajaran @@ -436,14 +436,14 @@ desc = "A cold leaf that is rubbed on burns." icon = 'harvest.dmi' icon_state = "ambrosiavulgaris" - heal_burn = 30 + heal_burn = 1 /obj/item/stack/medical/advanced/bruise_pack name = "advanced trauma kit" singular_name = "advanced trauma kit" desc = "An advanced trauma kit for severe injuries." icon_state = "traumakit" - heal_brute = 40 + heal_brute = 1 origin_tech = "biotech=1" amount = 10 max_amount = 10 @@ -453,7 +453,7 @@ singular_name = "advanced burn kit" desc = "An advanced treatment kit for severe burns." icon_state = "burnkit" - heal_burn = 40 + heal_burn = 1 origin_tech = "biotech=1" amount = 10 max_amount = 10 @@ -1882,4 +1882,4 @@ desc = "spooky" gender = PLURAL icon = 'wizard.dmi' - icon_state = "ectoplasm" + icon_state = "ectoplasm" \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index f3c08a7b67d..8d626ed3a2a 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -27,6 +27,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) + flags_inv = HIDEJUMPSUIT /obj/item/clothing/head/magus name = "magus helm" @@ -45,4 +46,5 @@ flags = FPRINT | TABLEPASS | ONESIZEFITSALL body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) - armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) \ No newline at end of file + armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT \ No newline at end of file diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index 08ed0cc18e2..e1986cc9323 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -120,15 +120,16 @@ var/list/nonhuman_positions = list( /proc/GetRank(var/job) switch(job) - if("Bartender","Chef","Lawyer","Librarian","Janitor","Assistant","Unassigned", "Counselor") + if("Bartender","Chef","Lawyer","Librarian","Janitor","Assistant","Unassigned") return 0 - if("Chaplain","Botanist","Hydroponicist","Medical Doctor","Atmospheric Technician","Geneticist", "Virologist", "Surgeon", "Emergency Medical Technician") + if("Chaplain","Botanist","Hydroponicist","Medical Doctor","Atmospheric Technician","Geneticist", "Virologist", "Surgeon", "Emergency Medical Technician", "Counselor") return 1 - if("Quartermaster","Cargo Technician","Chemist", "Station Engineer","Roboticist", "Security Officer", "Forensic Technician","Detective", "Scientist","Shaft Miner", "Xenobiologist", "Plasma Researcher") + if("Quartermaster","Cargo Technician","Chemist", "Station Engineer","Roboticist", "Security Officer", "Forensic Technician","Detective", "Scientist","Shaft Miner", "Xenobiologist", "Plasma Researcher","Chief Medical Officer") return 2 - if("Research Director","Chief Medical Officer","Head of Security","Chief Engineer","Warden") + if("Research Director","Head of Security","Chief Engineer","Warden") return 3 if("Captain","Head of Personnel","Wizard","MODE") return 4 else - world << "\"[job]\" NOT GIVEN RANK, REPORT JOBS.DM ERROR TO A CODER" + message_admins("\"[job]\" NOT GIVEN RANK, REPORT JOBS.DM ERROR TO A CODER") + return 2 \ No newline at end of file diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index ba7db34baad..d3a150d9ed2 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -338,7 +338,7 @@ //Can't clone without someone to clone. Or a pod. Or if the pod is busy. Or full of gibs. if ((!selected) || (!src.pod1) || (src.pod1.occupant) || (src.pod1.mess) || !config.revival_cloning) src.temp = "Unable to initiate cloning cycle." // most helpful error message in THE HISTORY OF THE WORLD - else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"],C.fields["changeling"])) + else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"],C.fields["changeling"],C.fields["original"])) src.temp = "Cloning cycle activated." geneticsrecords.Remove(C) del(C) @@ -385,6 +385,7 @@ R.fields["UI"] = subject.dna.uni_identity R.fields["SE"] = subject.dna.struc_enzymes R.fields["changeling"] = subject.changeling + R.fields["original"] = subject.original_name // Preferences stuff R.fields["interface"] = subject.UI @@ -500,7 +501,7 @@ //Clonepod //Start growing a human clone in the pod! -/obj/machinery/clonepod/proc/growclone(mob/ghost as mob, var/clonename, var/ui, var/se, var/mindref, var/mrace, var/UI, var/datum/changeling/changelingClone) +/obj/machinery/clonepod/proc/growclone(mob/ghost as mob, var/clonename, var/ui, var/se, var/mindref, var/mrace, var/UI, var/datum/changeling/changelingClone, var/original_name) if(((!ghost) || (!ghost.client)) || src.mess || src.attempting) return 0 @@ -534,6 +535,7 @@ src.occupant.real_name = clonename else src.occupant.real_name = "clone" //No null names!! + src.occupant.original_name = original_name var/datum/mind/clonemind = (locate(mindref) in ticker.minds) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 5c124657907..ea37af8fc56 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -221,7 +221,7 @@ A.yo = U.y - T.y A.xo = U.x - T.x spawn( 0 ) - A.process() + A.fired() return @@ -591,6 +591,6 @@ A.current = curloc A.yo = targloc.y - curloc.y A.xo = targloc.x - curloc.x - A.process() + A.fired() sleep(2) return diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm index 686d4749161..4cd9c6a796c 100644 --- a/code/game/objects/devices/scanners.dm +++ b/code/game/objects/devices/scanners.dm @@ -308,13 +308,24 @@ proc/analyze_health_less_info(mob/living/carbon/M as mob, mob/user as mob) user.show_message(text("\red Significant brain damage detected. Subject may have had a concussion."), 1) if (M.virus2 || M.reagents.reagent_list.len > 0) user.show_message(text("\red Unknown substance detected in blood."), 1) - if(istype(M,/mob/living/carbon/human)) + if(ishuman(M)) var/mob/living/carbon/human/H = M for(var/name in H.organs) var/datum/organ/external/e = H.organs[name] if(e.broken) user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1) break + if(ishuman(M)) + if(M:vessel) + var/blood_volume = round(M:vessel.get_reagent_amount("blood")) + var/blood_percent = blood_volume / 560 + blood_percent *= 100 + if(blood_volume <= 448) + user.show_message("\red Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl") + else if(blood_volume <= 336) + user.show_message("\red Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl") + else + user.show_message("\blue Blood Level Normal: [blood_percent]% [blood_volume]cl") return /obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2f722028f6c..0afdfc6d502 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -474,7 +474,8 @@ istype(W, /obj/item/weapon/kitchen/utensil/knife) || \ istype(W, /obj/item/weapon/shard) || \ istype(W, /obj/item/weapon/reagent_containers/syringe) || \ - istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" \ + istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" || \ + istype(W,/obj/item/projectile)\ ) /proc/is_cut(obj/item/W as obj) @@ -488,7 +489,8 @@ istype(W, /obj/item/weapon/butch) || \ istype(W, /obj/item/weapon/scalpel) || \ istype(W, /obj/item/weapon/kitchen/utensil/knife) || \ - istype(W, /obj/item/weapon/shard) \ + istype(W, /obj/item/weapon/shard) || \ + istype(W,/obj/item/projectile) \ ) /proc/is_burn(obj/item/W as obj) @@ -496,7 +498,8 @@ istype(W, /obj/item/weapon/weldingtool) && W:welding || \ istype(W, /obj/item/weapon/zippo) && W:lit || \ istype(W, /obj/item/weapon/match) && W:lit || \ - istype(W, /obj/item/clothing/mask/cigarette) && W:lit \ + istype(W, /obj/item/clothing/mask/cigarette) && W:lit || \ + istype(W,/obj/item/projectile/beam)\ ) /obj/item/weapon/paper/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) diff --git a/code/game/objects/items/clothing.dm b/code/game/objects/items/clothing.dm index 98a37628b5d..8b5925f1859 100644 --- a/code/game/objects/items/clothing.dm +++ b/code/game/objects/items/clothing.dm @@ -258,12 +258,14 @@ THERMAL GLASSES src.up = !src.up src.see_face = !src.see_face src.flags |= HEADCOVERSEYES + flags_inv |= HIDEMASK|HIDEEARS|HIDEEYES icon_state = "welding" usr << "You flip the mask down to protect your eyes." else src.up = !src.up src.see_face = !src.see_face src.flags &= ~HEADCOVERSEYES + flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES) icon_state = "weldingup" usr << "You push the mask up out of your face." usr.update_clothing() @@ -416,4 +418,4 @@ THERMAL GLASSES src.flags &= ~HEADCOVERSEYES icon_state = "engspace_helmet_clear" usr << "You toggle the reflective tint off." - usr.update_clothing() + usr.update_clothing() diff --git a/code/game/objects/items/helper_procs.dm b/code/game/objects/items/helper_procs.dm index 334ec2e5e22..8d5d9aa71f3 100644 --- a/code/game/objects/items/helper_procs.dm +++ b/code/game/objects/items/helper_procs.dm @@ -1,4 +1,4 @@ -/proc/parse_zone(zone) +/*/proc/parse_zone(zone) if(zone == "r_hand") return "right hand" else if (zone == "l_hand") return "left hand" else if (zone == "l_arm") return "left arm" @@ -7,7 +7,7 @@ else if (zone == "r_leg") return "right leg" else if (zone == "l_foot") return "left foot" else if (zone == "r_foot") return "right foot" - else return zone + else return zone*/ /proc/text2dir(direction) switch(uppertext(direction)) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 7770fcad70a..7747ea5c531 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -246,6 +246,8 @@ the implant may become unstable and either pre-maturely inject the subject or si return hear(var/msg) + var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") + msg = sanitize_simple(msg, replacechars) if(findtext(msg,phrase)) if(istype(loc, /mob/)) var/mob/T = loc @@ -258,6 +260,8 @@ the implant may become unstable and either pre-maturely inject the subject or si implanted(mob/source as mob) phrase = input("Choose activation phrase:") as text + var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") + phrase = sanitize_simple(phrase, replacechars) usr.mind.store_memory("Explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate.", 0, 0) usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate." diff --git a/code/game/objects/items/weapons/medical.dm b/code/game/objects/items/weapons/medical.dm index 25ebeda3703..07c90d3bdb3 100644 --- a/code/game/objects/items/weapons/medical.dm +++ b/code/game/objects/items/weapons/medical.dm @@ -15,15 +15,6 @@ MEDICAL t_him = "her" user << "\red \The [M] is dead, you cannot help [t_him]!" return - if (M.health < 50) - var/t_him = "it" - if (M.gender == MALE) - t_him = "him" - else if (M.gender == FEMALE) - t_him = "her" - user << "\red \The [M] is wounded badly, this item cannot help [t_him]!" - return - if (!istype(M)) user << "\red \The [src] cannot be applied to [M]!" @@ -35,25 +26,8 @@ MEDICAL user << "\red You don't have the dexterity to do this!" return 1 - if (user) - if (M != user) - 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) - t_himself = "himself" - else if (user.gender == FEMALE) - t_himself = "herself" - - 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/stoppedblood = 0 + if(ishuman(M)) var/mob/living/carbon/human/H = M var/datum/organ/external/affecting = H.get_organ("chest") @@ -63,39 +37,85 @@ MEDICAL else if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0) affecting = H.get_organ("head") + if(affecting.destroyed && !affecting.gauzed) + H.visible_message("\red You do your best to stop the bleeding from [H]'s stump.", "\red [user] does their best to stem [H]'s bleeding from [H.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.") + affecting.gauzed = 1 + use(1) + return - if (affecting.heal_damage(src.heal_brute, src.heal_burn)) - H.UpdateDamageIcon() - - if(H.bloodloss > 0 && heal_brute > 0) // fix wounds too if bruise pack - var/stoped = 0 - for(var/datum/organ/external/wound/W in affecting.wounds) - if(W.bleeding) - W.stopbleeding() - stoped = 0 + for(var/datum/organ/wound/W in affecting.wounds) + if(W.bleeding || !W.healing_state) + if(heal_brute && W.wound_type == 2) + continue + if(heal_burn && W.wound_type < 2) + continue + if(stoppedblood) + stoppedblood++ break - if(!stoped) - // user << "There is no bleeding wound at [t]" //code no longer in a dedicated obj, thus this doesn't really matter - return - if (user) - if (M != user) - for (var/mob/O in viewers(H, null)) - O.show_message("\red [H] has been bandaged with [src] by [user]", 1) + if(W.wound_size > 3) + W.bleeding = 0 else - var/t_himself = "itself" - if (user.gender == MALE) - t_himself = "himself" - else if (user.gender == FEMALE) - t_himself = "herself" - for (var/mob/O in viewers(H, null)) - O.show_message("\red [H] bandaged [t_himself] with [src]", 1) + W.stopbleeding() + stoppedblood = 1 - M.updatehealth() + if (user && stoppedblood) + if (M != user) + H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts with [src]", "\red You hear something like gauze being ripped.") + else + H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] your cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] their own cuts with [src]", "\red You hear something like gauze being ripped.") + else if(user) + user << "\red Nothing to patch up!" + return else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) use(1) +// if (M.health < 50 && !stoppedblood) +// var/t_him = "it" +// if (M.gender == MALE) +// t_him = "him" +// else if (M.gender == FEMALE) +// t_him = "her" +// user << "\red \The [M] is wounded badly, this item cannot help [t_him]!" +// return + +// if (user) +// if (M != user) +// 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) +// t_himself = "himself" +// else if (user.gender == FEMALE) +// t_himself = "herself" + +// 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 +// var/datum/organ/external/affecting = H.get_organ("chest") + +// if(istype(user, /mob/living/carbon/human)) +// var/mob/living/carbon/human/user2 = user +// affecting = H.get_organ(check_zone(user2.zone_sel.selecting)) +// else +// if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0) +// affecting = H.get_organ("head") +// +// if (affecting.heal_damage(src.heal_brute, src.heal_burn)) +// H.UpdateDamageIcon() +// M.updatehealth() + + + + /obj/item/stack/medical/advanced/attack(mob/living/carbon/M as mob, mob/user as mob) if (M.stat == 2) var/t_him = "it" @@ -105,15 +125,6 @@ MEDICAL t_him = "her" user << "\red \The [M] is dead, you cannot help [t_him]!" return - if (M.health < 0) - var/t_him = "it" - if (M.gender == MALE) - t_him = "him" - else if (M.gender == FEMALE) - t_him = "her" - user << "\red \The [M] is wounded badly, this item cannot help [t_him]!" - return - if (!istype(M)) user << "\red \The [src] cannot be applied to [M]!" @@ -125,25 +136,8 @@ MEDICAL user << "\red You don't have the dexterity to do this!" return 1 - if (user) - if (M != user) - 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) - t_himself = "himself" - else if (user.gender == FEMALE) - t_himself = "herself" - - 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/stoppedblood = 0 + if(ishuman(M)) var/mob/living/carbon/human/H = M var/datum/organ/external/affecting = H.get_organ("chest") @@ -153,34 +147,32 @@ MEDICAL else if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0) affecting = H.get_organ("head") + if(affecting.destroyed && !affecting.gauzed) + H.visible_message("\red You do your best to stop the bleeding from [H]'s stump.", "\red [user] does their best to stem [H]'s bleeding from [H.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.") + affecting.gauzed = 1 + use(1) + return - if (affecting.heal_damage(src.heal_brute, src.heal_burn)) - H.UpdateDamageIcon() - - if(H.bloodloss > 0 && heal_brute > 0) // fix wounds too if bruise pack - var/stoped = 0 - for(var/datum/organ/external/wound/W in affecting.wounds) - if(W.bleeding) - W.stopbleeding() - stoped = 0 + for(var/datum/organ/wound/W in affecting.wounds) + if(W.bleeding || !W.healing_state) + if(heal_brute && W.wound_type == 2) + continue + if(heal_burn && W.wound_type < 2) + continue + if(stoppedblood) + stoppedblood++ break - if(!stoped) - // user << "There is no bleeding wound at [t]" //code no longer in a dedicated obj, thus this doesn't really matter - return - if (user) - if (M != user) - for (var/mob/O in viewers(H, null)) - O.show_message("\red [H] has been bandaged with [src] by [user]", 1) - else - var/t_himself = "itself" - if (user.gender == MALE) - t_himself = "himself" - else if (user.gender == FEMALE) - t_himself = "herself" - for (var/mob/O in viewers(H, null)) - O.show_message("\red [H] bandaged [t_himself] with [src]", 1) + W.stopbleeding() + stoppedblood = 1 - M.updatehealth() + if (user && stoppedblood) + if (M != user) + H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts with [src]", "\red You hear something like gauze being ripped.") + else + H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] your cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] their own cuts with [src]", "\red You hear something like gauze being ripped.") + else if(user) + user << "\red Nothing to patch up!" + return else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index c00997e3504..f6185bd6837 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -1565,7 +1565,6 @@ CIRCULAR SAW e.brute_dam = 0.0 e.burn_dam = 0.0 e.bandaged = 0.0 - e.wound_size = 0.0 e.max_damage = initial(e.max_damage) e.bleeding = 0 e.open = 0 diff --git a/code/game/objects/radio/headset.dm b/code/game/objects/radio/headset.dm index dfd8fd08690..0f7fea4fc16 100644 --- a/code/game/objects/radio/headset.dm +++ b/code/game/objects/radio/headset.dm @@ -171,9 +171,11 @@ if(keyslot1) user.put_in_hands(keyslot1) + keyslot1 = null if(keyslot2) user.put_in_hands(keyslot2) + keyslot2 = null recalculateChannels() user << "You pop out the encryption keys in the headset!" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 38735065726..363d95d88f2 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -503,7 +503,6 @@ Traitors and the like can also be revived with the previous role mostly intact. e.brute_dam = 0.0 e.burn_dam = 0.0 e.bandaged = 0.0 - e.wound_size = 0.0 e.max_damage = initial(e.max_damage) e.bleeding = 0 e.open = 0 @@ -511,6 +510,15 @@ Traitors and the like can also be revived with the previous role mostly intact. e.destroyed = 0 e.perma_injury = 0 e.update_icon() + for(var/datum/organ/wound/W in e.wounds) + if(W.bleeding) + W.stopbleeding() + H.vessel = new/datum/reagents(560) + H.vessel.my_atom = H + H.vessel.add_reagent("blood",560) + spawn(1) + H.fixblood() + H.pale = 0 H.update_body() H.update_face() H.UpdateDamageIcon() diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index 1216c05cc18..edf0996deed 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -96,7 +96,7 @@ datum blood - data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null,"antibodies"=0) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null,"antibodies"=0) name = "Blood" id = "blood" reagent_state = LIQUID @@ -105,7 +105,7 @@ datum if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type)) M.adjustToxLoss(rand(1.5,3)) M.adjustOxyLoss(rand(1.5,3)) - ..() + ..() return reaction_mob(var/mob/M, var/method=TOUCH, var/volume) diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index 23bcf7c88aa..bd370351a33 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -962,55 +962,60 @@ if(istype(target, /mob/living/carbon))//maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea. var/amount = src.reagents.maximum_volume - src.reagents.total_volume var/mob/living/carbon/T = target - var/datum/reagent/B = new /datum/reagent/blood if(!T.dna) usr << "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)" return if(T.mutations2 & NOCLONE) //target done been et, no more blood in him user << "\red You are unable to locate any blood." return - B.holder = src - B.volume = amount - //set reagent data - B.data["donor"] = T - /* - if(T.virus && T.virus.spread_type != SPECIAL) - B.data["virus"] = new T.virus.type(0) - */ + if(ishuman(T)) + if(T:vessel.get_reagent_amount("blood") < amount) + return + T:vessel.trans_to(src, amount) + else + var/datum/reagent/B = new /datum/reagent/blood + B.holder = src + B.volume = amount + //set reagent data + B.data["donor"] = T + /* + if(T.virus && T.virus.spread_type != SPECIAL) + B.data["virus"] = new T.virus.type(0) + */ - for(var/datum/disease/D in T.viruses) - if(!B.data["viruses"]) - B.data["viruses"] = list() + for(var/datum/disease/D in T.viruses) + if(!B.data["viruses"]) + B.data["viruses"] = list() - B.data["viruses"] += new D.type + B.data["viruses"] += new D.type - // not sure why it was checking if(B.data["virus2"]), but it seemed wrong - if(T.virus2) - B.data["virus2"] = T.virus2.getcopy() + // not sure why it was checking if(B.data["virus2"]), but it seemed wrong + if(T.virus2) + B.data["virus2"] = T.virus2.getcopy() - B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0) - if(T.resistances&&T.resistances.len) - B.data["resistances"] = T.resistances.Copy() - if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation... - B.data["blood_type"] = copytext(T.dna.b_type,1,0) - var/list/temp_chem = list() - for(var/datum/reagent/R in target.reagents.reagent_list) - temp_chem += R.name - temp_chem[R.name] = R.volume - B.data["trace_chem"] = list2params(temp_chem) - B.data["antibodies"] = T.antibodies - //debug - //for(var/D in B.data) - // world << "Data [D] = [B.data[D]]" - //debug + B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0) + if(T.resistances&&T.resistances.len) + B.data["resistances"] = T.resistances.Copy() + if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation... + B.data["blood_type"] = copytext(T.dna.b_type,1,0) + var/list/temp_chem = list() + for(var/datum/reagent/R in target.reagents.reagent_list) + temp_chem += R.name + temp_chem[R.name] = R.volume + B.data["trace_chem"] = list2params(temp_chem) + B.data["antibodies"] = T.antibodies + //debug + //for(var/D in B.data) + // world << "Data [D] = [B.data[D]]" + //debug - src.reagents.reagent_list += B - src.reagents.update_total() - src.on_reagent_change() - src.reagents.handle_reactions() + src.reagents.reagent_list += B + src.reagents.update_total() + src.on_reagent_change() + src.reagents.handle_reactions() user << "\blue You take a blood sample from [target]" for(var/mob/O in viewers(4, user)) O.show_message("\red [user] takes a blood sample from [target].", 1) @@ -1065,7 +1070,17 @@ if(ismob(target) && target == user) src.reagents.reaction(target, INGEST) spawn(5) - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + var/datum/reagent/blood/B + for(var/datum/reagent/blood/d in src.reagents.reagent_list) + B = d + break + var/trans + if(B && ishuman(target)) + var/mob/living/carbon/human/H = target + H.vessel.add_reagent("blood",5,B) + src.reagents.remove_reagent("blood",5) + else + trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units." if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT) mode = SYRINGE_DRAW diff --git a/code/defines/obj/clothing/costume.dm b/code/modules/clothing/costume.dm similarity index 97% rename from code/defines/obj/clothing/costume.dm rename to code/modules/clothing/costume.dm index b073230443f..2c589dc2def 100644 --- a/code/defines/obj/clothing/costume.dm +++ b/code/modules/clothing/costume.dm @@ -1,168 +1,168 @@ -//Costume spawner - -/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears - - var/list/options = typesof(/obj/effect/landmark/costume) - var/PICK= options[rand(1,options.len)] - new PICK(src.loc) - del(src) - -//SUBCLASSES. Spawn a bunch of items and disappear likewise -/obj/effect/landmark/costume/chicken/New() - new /obj/item/clothing/suit/chickensuit(src.loc) - del(src) - -/obj/effect/landmark/costume/justice/New() - new /obj/item/clothing/suit/justice(src.loc) - var/CHOICE = pick( /obj/item/clothing/head/justice , /obj/item/clothing/head/justice/blue , /obj/item/clothing/head/justice/yellow , /obj/item/clothing/head/justice/green , /obj/item/clothing/head/justice/pink ) - new CHOICE(src.loc) - del(src) - -/obj/effect/landmark/costume/madscientist/New() - new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) - new /obj/item/clothing/head/flatcap(src.loc) - new /obj/item/clothing/suit/storage/labcoat/mad(src.loc) - new /obj/item/clothing/glasses/gglasses(src.loc) - del(src) - -/obj/effect/landmark/costume/elpresidente/New() - new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) - new /obj/item/clothing/head/flatcap(src.loc) - new /obj/item/clothing/mask/cigarette/cigar/havanian(src.loc) - new /obj/item/clothing/shoes/jackboots(src.loc) - del(src) - -/obj/effect/landmark/costume/nyangirl/New() - new /obj/item/clothing/under/schoolgirl(src.loc) - new /obj/item/clothing/head/kitty(src.loc) - del(src) - -/obj/effect/landmark/costume/maid/New() - new /obj/item/clothing/under/blackskirt(src.loc) - var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears ) - new CHOICE(src.loc) - new /obj/item/clothing/glasses/blindfold(src.loc) - del(src) - -/obj/effect/landmark/costume/butler/New() - new /obj/item/clothing/suit/storage/wcoat(src.loc) - new /obj/item/clothing/under/suit_jacket(src.loc) - new /obj/item/clothing/head/that(src.loc) - del(src) - -/obj/effect/landmark/costume/scratch/New() - new /obj/item/clothing/gloves/white(src.loc) - new /obj/item/clothing/shoes/white(src.loc) - new /obj/item/clothing/under/scratch(src.loc) -// if (prob(30)) -// new /obj/item/clothing/head/helmet/cueball(src.loc) - del(src) - -/obj/effect/landmark/costume/highlander/New() - new /obj/item/clothing/under/kilt(src.loc) - new /obj/item/clothing/head/beret(src.loc) - del(src) - -/obj/effect/landmark/costume/prig/New() - new /obj/item/clothing/suit/storage/wcoat(src.loc) - new /obj/item/clothing/glasses/monocle(src.loc) - var/CHOICE= pick( /obj/item/clothing/head/bowlerhat, /obj/item/clothing/head/that) - new CHOICE(src.loc) - new /obj/item/clothing/shoes/black(src.loc) - new /obj/item/weapon/cane(src.loc) - new /obj/item/clothing/under/sl_suit(src.loc) - new /obj/item/clothing/mask/gas/fakemoustache(src.loc) - del(src) - -/obj/effect/landmark/costume/plaguedoctor/New() - new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc) - new /obj/item/clothing/head/plaguedoctorhat(src.loc) - del(src) - -/obj/effect/landmark/costume/nightowl/New() - new /obj/item/clothing/under/owl(src.loc) - new /obj/item/clothing/mask/owl_mask(src.loc) - del(src) - -/obj/effect/landmark/costume/waiter/New() - new /obj/item/clothing/under/waiter(src.loc) - var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears) - new CHOICE(src.loc) - new /obj/item/clothing/suit/storage/apron(src.loc) - del(src) - -/obj/effect/landmark/costume/pirate/New() - new /obj/item/clothing/under/pirate(src.loc) - new /obj/item/clothing/suit/pirate(src.loc) - var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana ) - new CHOICE(src.loc) - new /obj/item/clothing/glasses/eyepatch(src.loc) - del(src) - -/obj/effect/landmark/costume/commie/New() - new /obj/item/clothing/under/soviet(src.loc) - new /obj/item/clothing/head/ushanka(src.loc) - del(src) -/* -/obj/effect/landmark/costume/nurse/New() - new /obj/item/clothing/under/rank/nursesuit(src.loc) - new /obj/item/clothing/head/nursehat(src.loc) - new /obj/item/clothing/glasses/regular(src.loc) - new /obj/item/clothing/gloves/latex(src.loc) - new /obj/item/clothing/mask/surgical(src.loc) - del(src)*/ - - -/obj/effect/landmark/costume/imperium_monk/New() - new /obj/item/clothing/suit/imperium_monk(src.loc) - if (prob(25)) - new /obj/item/clothing/mask/gas/cyborg(src.loc) - del(src) - -/obj/effect/landmark/costume/holiday_priest/New() - new /obj/item/clothing/suit/holidaypriest(src.loc) - del(src) - -/* -/obj/effect/landmark/costume/spiderman/New() - new /obj/item/clothing/under/spiderman(src.loc) - new /obj/item/clothing/mask/spiderman(src.loc) - del(src)*/ - -/obj/effect/landmark/costume/marisawizard/New() - new /obj/item/clothing/head/wizard/marisa(src.loc) - new/obj/item/clothing/suit/wizrobe/marisa(src.loc) - del(src) - -/obj/effect/landmark/costume/fakewizard/New() - new /obj/item/clothing/suit/wizrobe/fake(src.loc) - new /obj/item/clothing/head/wizard/fake(src.loc) - del(src) - -/obj/effect/landmark/costume/sexyclown/New() - new /obj/item/clothing/mask/gas/sexyclown(src.loc) - new /obj/item/clothing/under/sexyclown(src.loc) - del(src) - -/obj/effect/landmark/costume/sexymime/New() - new /obj/item/clothing/mask/gas/sexymime(src.loc) - new /obj/item/clothing/under/sexymime(src.loc) - del(src) - - -/* -/obj/effect/landmark/costume/cyborg/New() - new /obj/item/clothing/mask/gas/cyborg(src.loc) - new /obj/item/clothing/shoes/cyborg(src.loc) - new /obj/item/clothing/suit/cyborg_suit(src.loc) - new /obj/item/clothing/gloves/cyborg(src.loc) - - var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id(src.loc) - var/name = "Cyborg" - name += " [pick(rand(1, 999))]" - W.name = "Fake Cyborg Card" - W.access = list(access_theatre) - W.assignment = "Kill all humans! Beep. Boop." - W.registered = name - del(src) +//Costume spawner + +/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears + + var/list/options = typesof(/obj/effect/landmark/costume) + var/PICK= options[rand(1,options.len)] + new PICK(src.loc) + del(src) + +//SUBCLASSES. Spawn a bunch of items and disappear likewise +/obj/effect/landmark/costume/chicken/New() + new /obj/item/clothing/suit/chickensuit(src.loc) + del(src) + +/obj/effect/landmark/costume/justice/New() + new /obj/item/clothing/suit/justice(src.loc) + var/CHOICE = pick( /obj/item/clothing/head/justice , /obj/item/clothing/head/justice/blue , /obj/item/clothing/head/justice/yellow , /obj/item/clothing/head/justice/green , /obj/item/clothing/head/justice/pink ) + new CHOICE(src.loc) + del(src) + +/obj/effect/landmark/costume/madscientist/New() + new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) + new /obj/item/clothing/head/flatcap(src.loc) + new /obj/item/clothing/suit/storage/labcoat/mad(src.loc) + new /obj/item/clothing/glasses/gglasses(src.loc) + del(src) + +/obj/effect/landmark/costume/elpresidente/New() + new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) + new /obj/item/clothing/head/flatcap(src.loc) + new /obj/item/clothing/mask/cigarette/cigar/havanian(src.loc) + new /obj/item/clothing/shoes/jackboots(src.loc) + del(src) + +/obj/effect/landmark/costume/nyangirl/New() + new /obj/item/clothing/under/schoolgirl(src.loc) + new /obj/item/clothing/head/kitty(src.loc) + del(src) + +/obj/effect/landmark/costume/maid/New() + new /obj/item/clothing/under/blackskirt(src.loc) + var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears ) + new CHOICE(src.loc) + new /obj/item/clothing/glasses/blindfold(src.loc) + del(src) + +/obj/effect/landmark/costume/butler/New() + new /obj/item/clothing/suit/storage/wcoat(src.loc) + new /obj/item/clothing/under/suit_jacket(src.loc) + new /obj/item/clothing/head/that(src.loc) + del(src) + +/obj/effect/landmark/costume/scratch/New() + new /obj/item/clothing/gloves/white(src.loc) + new /obj/item/clothing/shoes/white(src.loc) + new /obj/item/clothing/under/scratch(src.loc) +// if (prob(30)) +// new /obj/item/clothing/head/helmet/cueball(src.loc) + del(src) + +/obj/effect/landmark/costume/highlander/New() + new /obj/item/clothing/under/kilt(src.loc) + new /obj/item/clothing/head/beret(src.loc) + del(src) + +/obj/effect/landmark/costume/prig/New() + new /obj/item/clothing/suit/storage/wcoat(src.loc) + new /obj/item/clothing/glasses/monocle(src.loc) + var/CHOICE= pick( /obj/item/clothing/head/bowlerhat, /obj/item/clothing/head/that) + new CHOICE(src.loc) + new /obj/item/clothing/shoes/black(src.loc) + new /obj/item/weapon/cane(src.loc) + new /obj/item/clothing/under/sl_suit(src.loc) + new /obj/item/clothing/mask/gas/fakemoustache(src.loc) + del(src) + +/obj/effect/landmark/costume/plaguedoctor/New() + new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc) + new /obj/item/clothing/head/plaguedoctorhat(src.loc) + del(src) + +/obj/effect/landmark/costume/nightowl/New() + new /obj/item/clothing/under/owl(src.loc) + new /obj/item/clothing/mask/owl_mask(src.loc) + del(src) + +/obj/effect/landmark/costume/waiter/New() + new /obj/item/clothing/under/waiter(src.loc) + var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears) + new CHOICE(src.loc) + new /obj/item/clothing/suit/storage/apron(src.loc) + del(src) + +/obj/effect/landmark/costume/pirate/New() + new /obj/item/clothing/under/pirate(src.loc) + new /obj/item/clothing/suit/pirate(src.loc) + var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana ) + new CHOICE(src.loc) + new /obj/item/clothing/glasses/eyepatch(src.loc) + del(src) + +/obj/effect/landmark/costume/commie/New() + new /obj/item/clothing/under/soviet(src.loc) + new /obj/item/clothing/head/ushanka(src.loc) + del(src) +/* +/obj/effect/landmark/costume/nurse/New() + new /obj/item/clothing/under/rank/nursesuit(src.loc) + new /obj/item/clothing/head/nursehat(src.loc) + new /obj/item/clothing/glasses/regular(src.loc) + new /obj/item/clothing/gloves/latex(src.loc) + new /obj/item/clothing/mask/surgical(src.loc) + del(src)*/ + + +/obj/effect/landmark/costume/imperium_monk/New() + new /obj/item/clothing/suit/imperium_monk(src.loc) + if (prob(25)) + new /obj/item/clothing/mask/gas/cyborg(src.loc) + del(src) + +/obj/effect/landmark/costume/holiday_priest/New() + new /obj/item/clothing/suit/holidaypriest(src.loc) + del(src) + +/* +/obj/effect/landmark/costume/spiderman/New() + new /obj/item/clothing/under/spiderman(src.loc) + new /obj/item/clothing/mask/spiderman(src.loc) + del(src)*/ + +/obj/effect/landmark/costume/marisawizard/New() + new /obj/item/clothing/head/wizard/marisa(src.loc) + new/obj/item/clothing/suit/wizrobe/marisa(src.loc) + del(src) + +/obj/effect/landmark/costume/fakewizard/New() + new /obj/item/clothing/suit/wizrobe/fake(src.loc) + new /obj/item/clothing/head/wizard/fake(src.loc) + del(src) + +/obj/effect/landmark/costume/sexyclown/New() + new /obj/item/clothing/mask/gas/sexyclown(src.loc) + new /obj/item/clothing/under/sexyclown(src.loc) + del(src) + +/obj/effect/landmark/costume/sexymime/New() + new /obj/item/clothing/mask/gas/sexymime(src.loc) + new /obj/item/clothing/under/sexymime(src.loc) + del(src) + + +/* +/obj/effect/landmark/costume/cyborg/New() + new /obj/item/clothing/mask/gas/cyborg(src.loc) + new /obj/item/clothing/shoes/cyborg(src.loc) + new /obj/item/clothing/suit/cyborg_suit(src.loc) + new /obj/item/clothing/gloves/cyborg(src.loc) + + var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id(src.loc) + var/name = "Cyborg" + name += " [pick(rand(1, 999))]" + W.name = "Fake Cyborg Card" + W.access = list(access_theatre) + W.assignment = "Kill all humans! Beep. Boop." + W.registered = name + del(src) */ \ No newline at end of file diff --git a/code/defines/obj/clothing/ears.dm b/code/modules/clothing/ears.dm similarity index 93% rename from code/defines/obj/clothing/ears.dm rename to code/modules/clothing/ears.dm index c89edc1cd22..05493ff2e10 100644 --- a/code/defines/obj/clothing/ears.dm +++ b/code/modules/clothing/ears.dm @@ -1,62 +1,62 @@ -// EARS - -/obj/item/clothing/ears - name = "ears" - w_class = 1.0 - throwforce = 2 - var/twoeared = 0 - -/obj/item/clothing/ears/attack_hand(mob/user as mob) - if (!user) return - - if (src.loc != user || !istype(user,/mob/living/carbon/human)) - ..() - return - var/mob/living/carbon/human/H = user - if(H.l_ear != src && H.r_ear != src) - ..() - return - - if(!canremove) - return - - var/obj/item/clothing/ears/O - if(twoeared) - O = (H.l_ear == src ? H.r_ear : H.l_ear) - user.u_equip(O) - if(!istype(src,/obj/item/clothing/ears/offear)) - del(O) - O = src - else - O = src - - user.u_equip(src) - - if (O) - user.put_in_hand(O) - O.add_fingerprint(user) - - if(istype(src,/obj/item/clothing/ears/offear)) - del(src) - -/obj/item/clothing/ears/offear - name = "Other ear" - w_class = 5.0 - icon = 'screen1_old.dmi' - icon_state = "block" - twoeared = 1 - - New(var/obj/O) - name = O.name - desc = O.desc - icon = O.icon - icon_state = O.icon_state - dir = O.dir - -/obj/item/clothing/ears/earmuffs - name = "earmuffs" - desc = "Protects your hearing from loud noises, and quiet ones as well." - icon_state = "earmuffs" - protective_temperature = 500 - item_state = "earmuffs" +// EARS + +/obj/item/clothing/ears + name = "ears" + w_class = 1.0 + throwforce = 2 + var/twoeared = 0 + +/obj/item/clothing/ears/attack_hand(mob/user as mob) + if (!user) return + + if (src.loc != user || !istype(user,/mob/living/carbon/human)) + ..() + return + var/mob/living/carbon/human/H = user + if(H.l_ear != src && H.r_ear != src) + ..() + return + + if(!canremove) + return + + var/obj/item/clothing/ears/O + if(twoeared) + O = (H.l_ear == src ? H.r_ear : H.l_ear) + user.u_equip(O) + if(!istype(src,/obj/item/clothing/ears/offear)) + del(O) + O = src + else + O = src + + user.u_equip(src) + + if (O) + user.put_in_hand(O) + O.add_fingerprint(user) + + if(istype(src,/obj/item/clothing/ears/offear)) + del(src) + +/obj/item/clothing/ears/offear + name = "Other ear" + w_class = 5.0 + icon = 'screen1_old.dmi' + icon_state = "block" + twoeared = 1 + + New(var/obj/O) + name = O.name + desc = O.desc + icon = O.icon + icon_state = O.icon_state + dir = O.dir + +/obj/item/clothing/ears/earmuffs + name = "earmuffs" + desc = "Protects your hearing from loud noises, and quiet ones as well." + icon_state = "earmuffs" + protective_temperature = 500 + item_state = "earmuffs" twoeared = 1 \ No newline at end of file diff --git a/code/defines/obj/clothing/gimmick.dm b/code/modules/clothing/gimmick.dm similarity index 96% rename from code/defines/obj/clothing/gimmick.dm rename to code/modules/clothing/gimmick.dm index ffd02dd845a..28d2ce1bf53 100644 --- a/code/defines/obj/clothing/gimmick.dm +++ b/code/modules/clothing/gimmick.dm @@ -1,679 +1,679 @@ -/obj/item/clothing/head/rabbitears - name = "Rabbit Ears" - desc = "Wearing these makes you looks useless, and only good for your sex appeal." - icon_state = "bunny" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/head/kitty - name = "Kitty Ears" - desc = "A pair of kitty ears. Meow!" - icon_state = "kitty" - flags = FPRINT | TABLEPASS - var/icon/mob - var/icon/mob2 - - update_icon(var/mob/living/carbon/human/user) - if(!istype(user)) return - mob = new/icon("icon" = 'head.dmi', "icon_state" = "kitty") - mob2 = new/icon("icon" = 'head.dmi', "icon_state" = "kitty2") - mob.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) - mob2.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) - - var/icon/earbit = new/icon("icon" = 'head.dmi', "icon_state" = "kittyinner") - var/icon/earbit2 = new/icon("icon" = 'head.dmi', "icon_state" = "kittyinner2") - mob.Blend(earbit, ICON_OVERLAY) - mob2.Blend(earbit2, ICON_OVERLAY) - -/obj/item/clothing/shoes/red - name = "red shoes" - desc = "Stylish red shoes." - icon_state = "red" - color = "red" - -/obj/item/clothing/shoes/rainbow - name = "rainbow shoes" - desc = "Very gay shoes." - icon_state = "rain_bow" - color = "rainbow" - -/obj/item/clothing/mask/owl_mask - name = "Owl mask" - desc = "Twoooo!" - icon_state = "owl" - -/obj/item/clothing/under/owl - name = "Owl uniform" - desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!" - icon_state = "owl" - color = "owl" - -/obj/item/clothing/gloves/cyborg - desc = "beep boop borp" - name = "cyborg gloves" - icon_state = "black" - item_state = "r_hands" - siemens_coefficient = 1 - -/obj/item/clothing/mask/gas/cyborg - name = "cyborg visor" - desc = "Beep boop" - icon_state = "death" - -/obj/item/clothing/shoes/cyborg - name = "cyborg boots" - desc = "Shoes for a cyborg costume" - icon_state = "boots" - -/obj/item/clothing/suit/cyborg_suit - name = "cyborg suit" - desc = "Suit for a cyborg costume." - icon_state = "death" - item_state = "death" - flags = FPRINT | TABLEPASS | CONDUCT - fire_resist = T0C+5200 - -/*/obj/item/clothing/under/nazi1 - name = "Nazi uniform" - desc = "SIEG HEIL!" - icon_state = "nazi" - color = "nazi1"*/ //no direction sprites - -/obj/item/clothing/suit/greatcoat - name = "great coat" - desc = "A Nazi great coat." - icon_state = "nazi" - item_state = "nazi" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/under/johnny - name = "Johnny~~" - desc = "Johnny~~" - icon_state = "johnny" - color = "johnny" - -/obj/item/clothing/suit/johnny_coat - name = "Johnny~~" - desc = "Johnny~~" - icon_state = "johnny" - item_state = "johnny" - flags = FPRINT | TABLEPASS - - -/obj/item/clothing/under/rainbow - name = "rainbow" - desc = "rainbow" - icon_state = "rainbow" - item_state = "rainbow" - color = "rainbow" - -/obj/item/clothing/under/cloud - name = "cloud" - desc = "cloud" - icon_state = "cloud" - color = "cloud" - -/*/obj/item/clothing/under/yay - name = "yay" - desc = "Yay!" - icon_state = "yay" - color = "yay"*/ // no sprite --errorage - -// UNUSED COLORS - -/obj/item/clothing/under/psyche - name = "psychedelic" - desc = "Groovy!" - icon_state = "psyche" - color = "psyche" - -/* -/obj/item/clothing/under/maroon - name = "maroon" - desc = "maroon" - icon_state = "maroon" - color = "maroon"*/ // no sprite -- errorage - -/obj/item/clothing/under/lightblue - name = "lightblue" - desc = "lightblue" - icon_state = "lightblue" - color = "lightblue" - -/obj/item/clothing/under/aqua - name = "aqua" - desc = "aqua" - icon_state = "aqua" - color = "aqua" - -/obj/item/clothing/under/purple - name = "purple" - desc = "purple" - icon_state = "purple" - item_state = "p_suit" - color = "purple" - -/obj/item/clothing/under/lightpurple - name = "lightpurple" - desc = "lightpurple" - icon_state = "lightpurple" - color = "lightpurple" - -/obj/item/clothing/under/lightgreen - name = "lightgreen" - desc = "lightgreen" - icon_state = "lightgreen" - color = "lightgreen" - -/obj/item/clothing/under/lightblue - name = "lightblue" - desc = "lightblue" - icon_state = "lightblue" - color = "lightblue" - -/obj/item/clothing/under/lightbrown - name = "lightbrown" - desc = "lightbrown" - icon_state = "lightbrown" - color = "lightbrown" - -/obj/item/clothing/under/brown - name = "brown" - desc = "brown" - icon_state = "brown" - color = "brown" - -/obj/item/clothing/under/yellowgreen - name = "yellowgreen" - desc = "yellowgreen" - icon_state = "yellowgreen" - color = "yellowgreen" - -/obj/item/clothing/under/darkblue - name = "darkblue" - desc = "darkblue" - icon_state = "darkblue" - color = "darkblue" - -/obj/item/clothing/under/lightred - name = "lightred" - desc = "lightred" - icon_state = "lightred" - color = "lightred" - -/obj/item/clothing/under/darkred - name = "darkred" - desc = "darkred" - icon_state = "darkred" - color = "darkred" - -// STEAMPUNK STATION - -/obj/item/clothing/glasses/monocle - name = "monocle" - desc = "Such a dapper eyepiece!" - icon_state = "monocle" - item_state = "headset" // lol - -/obj/item/clothing/under/gimmick/rank/captain/suit - name = "Captain's Suit" - desc = "A green suit and yellow necktie. Exemplifies authority." - icon_state = "green_suit" - item_state = "dg_suit" - color = "green_suit" - -/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit - name = "Head of Personnel's Suit" - desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble." - icon_state = "teal_suit" - item_state = "g_suit" - color = "teal_suit" - -/obj/item/clothing/under/suit_jacket - name = "Black Suit" - desc = "A black suit and red tie. Very formal." - icon_state = "black_suit" - item_state = "bl_suit" - color = "black_suit" - -/obj/item/clothing/under/suit_jacket/really_black - name = "Executive Suit" - desc = "A formal black suit and red tie, intended for the station's finest." - icon_state = "really_black_suit" - item_state = "bl_suit" - color = "black_suit" - -/obj/item/clothing/under/suit_jacket/red - name = "Red Suit" - desc = "A red suit and blue tie. Somewhat formal." - icon_state = "red_suit" - item_state = "r_suit" - color = "red_suit" - -/obj/item/clothing/under/blackskirt - name = "Black skirt" - desc = "A black skirt, very fancy!" - icon_state = "blackskirt" - color = "blackskirt" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - -/obj/item/clothing/under/schoolgirl - name = "schoolgirl uniform" - desc = "It's just like one of my Japanese animes!" - icon_state = "schoolgirl" - item_state = "schoolgirl" - color = "schoolgirl" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - -/obj/item/clothing/under/gimmick/rank/police - name = "Police Uniform" - desc = "Move along, nothing to see here." - icon_state = "police" - item_state = "b_suit" - color = "police" - -/obj/item/clothing/head/flatcap - name = "flat cap" - desc = "A working man's cap." - icon_state = "flat_cap" - item_state = "detective" - -/obj/item/clothing/under/overalls - name = "Laborer's Overalls" - desc = "A set of durable overalls for getting the job done." - icon_state = "overalls" - item_state = "lb_suit" - color = "overalls" - -/obj/item/weapon/melee/classic_baton - name = "police baton" - desc = "A wooden truncheon for beating criminal scum." - icon = 'weapons.dmi' - icon_state = "baton" - item_state = "classic_baton" - flags = FPRINT | ONBELT | TABLEPASS - force = 10 - -/obj/item/clothing/under/pirate - name = "Pirate Outfit" - desc = "Yarr." - icon_state = "pirate" - item_state = "pirate" - color = "pirate" - -/obj/item/clothing/head/pirate - name = "pirate hat" - desc = "Yarr." - icon_state = "pirate" - item_state = "pirate" - -/obj/item/clothing/head/hgpiratecap - name = "pirate hat" - desc = "Yarr." - icon_state = "hgpiratecap" - item_state = "hgpiratecap" - -/obj/item/clothing/suit/pirate - name = "pirate coat" - desc = "Yarr." - icon_state = "pirate" - item_state = "pirate" - flags = FPRINT | TABLEPASS - - -/obj/item/clothing/suit/hgpirate - name = "pirate captain coat" - desc = "Yarr." - icon_state = "hgpirate" - item_state = "hgpirate" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/glasses/eyepatch - name = "eyepatch" - desc = "Yarr." - icon_state = "eyepatch" - item_state = "eyepatch" - -/obj/item/clothing/head/bandana - name = "pirate bandana" - desc = "Yarr." - icon_state = "bandana" - item_state = "bandana" - -/obj/item/clothing/under/soviet - name = "soviet uniform" - desc = "For the Motherland!" - icon_state = "soviet" - item_state = "soviet" - color = "soviet" - -/obj/item/clothing/under/redcoat - name = "redcoat uniform" - desc = "Looks old." - icon_state = "redcoat" - item_state = "redcoat" - color = "redcoat" - -/obj/item/clothing/head/ushanka - name = "ushanka" - desc = "Perfect for winter in Siberia, da?" - icon_state = "ushankadown" - item_state = "ushankadown" - -/obj/item/clothing/head/collectable //Hat Station 13 - name = "Collectable Hat" - desc = "A rare collectable hat." - -/obj/item/clothing/head/collectable/petehat - name = "Ultra Rare! Pete's Hat!" - desc = "It smells faintly of plasma" - icon_state = "petehat" - -/obj/item/clothing/head/collectable/metroid - name = "Collectable Metroid Cap!" - desc = "It just latches right in place!" - icon_state = "metroid" - -/obj/item/clothing/head/collectable/xenom - name = "Collectable Xenomorph Helmet!" - desc = "Hiss hiss hiss!" - icon_state = "xenom" - -/obj/item/clothing/head/collectable/chef - name = "Collectable Chef's Hat" - desc = "A rare Chef's Hat meant for hat collectors!" - icon_state = "chef" - item_state = "chef" - -/obj/item/clothing/head/collectable/paper - name = "Collectable Paper Hat" - desc = "What looks like an ordinary paper hat, is actually a rare and valuable collector's edition paper hat. Keep away from water, fire and Librarians." - icon_state = "paper" - -/obj/item/clothing/head/collectable/tophat - name = "Collectable Top Hat" - desc = "A top hat worn by only the most prestigious hat collectors." - icon_state = "tophat" - item_state = "that" - -/obj/item/clothing/head/collectable/captain - name = "Collectable Captain's Hat" - desc = "A Collectable Hat that'll make you look just like a real comdom!" - icon_state = "captain" - item_state = "caphat" - -/obj/item/clothing/head/collectable/police - name = "Collectable Police Officer's Hat" - desc = "A Collectable Police Officer's Hat. This hat emphasizes that you are THE LAW." - icon_state = "policehelm" - -/obj/item/clothing/head/collectable/beret - name = "Collectable Beret" - desc = "A Collectable red beret. It smells faintly of garlic." - icon_state = "beret" - -/obj/item/clothing/head/collectable/welding - name = "Collectable Welding Helmet" - desc = "A Collectable Welding Helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this Helmet is done so at the owner's own risk!" - icon_state = "welding" - item_state = "welding" - -/obj/item/clothing/head/collectable/slime - name = "Collectable Slime Hat" - desc = "Just like a real Brain Slug!" - icon_state = "headslime" - item_state = "headslime" - -/obj/item/clothing/head/collectable/flatcap - name = "Collectable Flat Cap" - desc = "A Collectible farmer's Flat Cap!" - icon_state = "flat_cap" - item_state = "detective" - -/obj/item/clothing/head/collectable/pirate - name = "Collectable Pirate Hat" - desc = "You'd make a great Dread Syndie Roberts!" - icon_state = "pirate" - item_state = "pirate" - -/obj/item/clothing/head/collectable/kitty - name = "Collectable Kitty Ears" - desc = "The fur feels.....a bit too realistic." - icon_state = "kitty" - item_state = "kitty" - -/obj/item/clothing/head/collectable/rabbitears - name = "Collectable Rabbit Ears" - desc = "Not as lucky as the feet!" - icon_state = "bunny" - item_state = "bunny" - -/obj/item/clothing/head/collectable/wizard - name = "Collectable Wizard's Hat" - desc = "NOTE:Any magical powers gained from wearing this hat are purely coincidental." - icon_state = "wizard" - -/obj/item/clothing/head/collectable/hardhat - name = "Collectable Hard Hat" - desc = "WARNING! Offers no real protection, or luminosity, but it is damn fancy!" - icon_state = "hardhat0_yellow" - item_state = "hardhat0_yellow" - -/obj/item/clothing/head/collectable/HoS - name = "Collectable HoS Hat" - desc = "Now you can beat prisoners, set silly sentences and arrest for no reason too!" - icon_state = "hoscap" - -/obj/item/clothing/head/collectable/thunderdome - name = "Collectable Thunderdome helmet" - desc = "Go Red! I mean Green! I mean Red! No Green!" - icon_state = "thunderdome" - item_state = "thunderdome" - -/obj/item/clothing/head/collectable/swat - name = "Collectable SWAT Helmet" - desc = "Now you can be in the Deathsquad too!" - icon_state = "swat" - item_state = "swat" - -//obj/item/clothing/head/collectable - - - -/* no left/right sprites -/obj/item/clothing/under/mario - name = "Mario costume" - desc = "Worn by Italian plumbers everywhere. Probably." - icon_state = "mario" - item_state = "mario" - color = "mario" - -/obj/item/clothing/under/luigi - name = "Mario costume" - desc = "Player two. Couldn't you get the first controller?" - icon_state = "luigi" - item_state = "luigi" - color = "luigi" -*/ - -/obj/item/clothing/under/kilt - name = "kilt" - desc = "Includes shoes and plaid." - icon_state = "kilt" - item_state = "kilt" - color = "kilt" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET - -/obj/item/clothing/under/sexymime - name = "Sexy mime outfit" - desc = "The only time when you DON'T enjoy looking at someone's rack." - icon_state = "sexymime" - item_state = "sexymime" - color = "sexymime" - body_parts_covered = UPPER_TORSO|LOWER_TORSO - -/obj/item/clothing/head/bowler - name = "bowler-hat" - desc = "Gentleman, elite aboard!" - icon_state = "bowler" - item_state = "bowler" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/head/justice - name = "Justice Hat" - desc = "Fight for what's righteous!" - icon_state = "justicered" - item_state = "justicered" - flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR - -/obj/item/clothing/head/justice/blue - icon_state = "justiceblue" - item_state = "justiceblue" - -/obj/item/clothing/head/justice/yellow - icon_state = "justiceyellow" - item_state = "justiceyellow" - -/obj/item/clothing/head/justice/green - icon_state = "justicegreen" - item_state = "justicegreen" - -/obj/item/clothing/head/justice/pink - icon_state = "justicepink" - item_state = "justicepink" - -obj/item/clothing/suit/justice - name = "Justice Suit" - desc = "This pretty much looks ridiculous." - icon_state = "justice" - item_state = "justice" - flags = FPRINT | TABLEPASS - -//stylish new hats - -/obj/item/clothing/head/bowlerhat - name = "Bowler hat" - icon_state = "bowler_hat" - item_state = "bowler_hat" - desc = "For the gentleman of distinction." - flags = FPRINT|TABLEPASS - -/obj/item/clothing/head/beaverhat - name = "Beaver hat" - icon_state = "beaver_hat" - item_state = "beaver_hat" - desc = "Soft felt make this hat both comfortable and elegant." - flags = FPRINT|TABLEPASS - -/obj/item/clothing/head/boaterhat - name = "Boater hat" - icon_state = "boater_hat" - item_state = "boater_hat" - desc = "The ultimate in summer fashion." - flags = FPRINT|TABLEPASS - -/obj/item/clothing/head/fedora - name = "Fedora" - icon_state = "fedora" - item_state = "fedora" - desc = "A sharp, stylish hat." - flags = FPRINT|TABLEPASS - -/obj/item/clothing/head/feathertrilby - name = "Feather trilby" - icon_state = "feather_trilby" - item_state = "feather_trilby" - desc = "A sharp, stylish hat with a feather." - flags = FPRINT|TABLEPASS - -//pyjamas - -/obj/item/clothing/under/bluepyjamas - name = "Blue pyjamas" - desc = "Slightly old-fashioned sleepwear." - icon_state = "blue_pyjamas" - item_state = "blue_pyjamas" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - -/obj/item/clothing/under/redpyjamas - name = "Red pyjamas" - desc = "Slightly old-fashioned sleepwear." - icon_state = "red_pyjamas" - item_state = "red_pyjamas" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - -//scarves (fit in in mask slot) - -/obj/item/clothing/mask/bluescarf - name = "Blue neck scarf" - desc = "A blue neck scarf." - icon_state = "blueneckscarf" - item_state = "blueneckscarf" - flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH - w_class = 2 - gas_transfer_coefficient = 0.90 - -/obj/item/clothing/mask/redscarf - name = "Red scarf" - desc = "A red and white checkered neck scarf." - icon_state = "redwhite_scarf" - item_state = "redwhite_scarf" - flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH - w_class = 2 - gas_transfer_coefficient = 0.90 - -/obj/item/clothing/mask/greenscarf - name = "Green scarf" - desc = "A green neck scarf." - icon_state = "green_scarf" - item_state = "green_scarf" - flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH - w_class = 2 - gas_transfer_coefficient = 0.90 - -/obj/item/clothing/mask/ninjascarf - name = "Ninja scarf" - desc = "A stealthy, dark scarf." - icon_state = "ninja_scarf" - item_state = "ninja_scarf" - flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH - w_class = 2 - gas_transfer_coefficient = 0.90 - -//shoes - -/obj/item/clothing/shoes/laceups - name = "Laceup shoes" - desc = "Stylish black leather." - icon_state = "laceups" - item_state = "laceups" - color = "black" - -//suits - -/obj/item/clothing/suit/leathercoat - name = "Leather Coat" - desc = "A long, thick black leather coat." - icon_state = "leathercoat" - item_state = "leathercoat" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/suit/browncoat - name = "Brown Leather Coat" - desc = "A long, brown leather coat." - icon_state = "browncoat" - item_state = "browncoat" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/suit/neocoat - name = "Black coat" - desc = "A flowing, black coat." - icon_state = "neocoat" - item_state = "neocoat" - flags = FPRINT | TABLEPASS - -/obj/item/clothing/suit/creamsuit - name = "Cream suit" - desc = "A cream coloured, genteel suit." - icon_state = "creamsuit" - item_state = "creamsuit" - flags = FPRINT | TABLEPASS +/obj/item/clothing/head/rabbitears + name = "Rabbit Ears" + desc = "Wearing these makes you looks useless, and only good for your sex appeal." + icon_state = "bunny" + flags = FPRINT | TABLEPASS + +/obj/item/clothing/head/kitty + name = "Kitty Ears" + desc = "A pair of kitty ears. Meow!" + icon_state = "kitty" + flags = FPRINT | TABLEPASS + var/icon/mob + var/icon/mob2 + + update_icon(var/mob/living/carbon/human/user) + if(!istype(user)) return + mob = new/icon("icon" = 'head.dmi', "icon_state" = "kitty") + mob2 = new/icon("icon" = 'head.dmi', "icon_state" = "kitty2") + mob.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) + mob2.Blend(rgb(user.r_hair, user.g_hair, user.b_hair), ICON_ADD) + + var/icon/earbit = new/icon("icon" = 'head.dmi', "icon_state" = "kittyinner") + var/icon/earbit2 = new/icon("icon" = 'head.dmi', "icon_state" = "kittyinner2") + mob.Blend(earbit, ICON_OVERLAY) + mob2.Blend(earbit2, ICON_OVERLAY) + +/obj/item/clothing/shoes/red + name = "red shoes" + desc = "Stylish red shoes." + icon_state = "red" + color = "red" + +/obj/item/clothing/shoes/rainbow + name = "rainbow shoes" + desc = "Very gay shoes." + icon_state = "rain_bow" + color = "rainbow" + +/obj/item/clothing/mask/owl_mask + name = "Owl mask" + desc = "Twoooo!" + icon_state = "owl" + +/obj/item/clothing/under/owl + name = "Owl uniform" + desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!" + icon_state = "owl" + color = "owl" + +/obj/item/clothing/gloves/cyborg + desc = "beep boop borp" + name = "cyborg gloves" + icon_state = "black" + item_state = "r_hands" + siemens_coefficient = 1 + +/obj/item/clothing/mask/gas/cyborg + name = "cyborg visor" + desc = "Beep boop" + icon_state = "death" + +/obj/item/clothing/shoes/cyborg + name = "cyborg boots" + desc = "Shoes for a cyborg costume" + icon_state = "boots" + +/obj/item/clothing/suit/cyborg_suit + name = "cyborg suit" + desc = "Suit for a cyborg costume." + icon_state = "death" + item_state = "death" + flags = FPRINT | TABLEPASS | CONDUCT + fire_resist = T0C+5200 + +/*/obj/item/clothing/under/nazi1 + name = "Nazi uniform" + desc = "SIEG HEIL!" + icon_state = "nazi" + color = "nazi1"*/ //no direction sprites + +/obj/item/clothing/suit/greatcoat + name = "great coat" + desc = "A Nazi great coat." + icon_state = "nazi" + item_state = "nazi" + flags = FPRINT | TABLEPASS + +/obj/item/clothing/under/johnny + name = "Johnny~~" + desc = "Johnny~~" + icon_state = "johnny" + color = "johnny" + +/obj/item/clothing/suit/johnny_coat + name = "Johnny~~" + desc = "Johnny~~" + icon_state = "johnny" + item_state = "johnny" + flags = FPRINT | TABLEPASS + + +/obj/item/clothing/under/rainbow + name = "rainbow" + desc = "rainbow" + icon_state = "rainbow" + item_state = "rainbow" + color = "rainbow" + +/obj/item/clothing/under/cloud + name = "cloud" + desc = "cloud" + icon_state = "cloud" + color = "cloud" + +/*/obj/item/clothing/under/yay + name = "yay" + desc = "Yay!" + icon_state = "yay" + color = "yay"*/ // no sprite --errorage + +// UNUSED COLORS + +/obj/item/clothing/under/psyche + name = "psychedelic" + desc = "Groovy!" + icon_state = "psyche" + color = "psyche" + +/* +/obj/item/clothing/under/maroon + name = "maroon" + desc = "maroon" + icon_state = "maroon" + color = "maroon"*/ // no sprite -- errorage + +/obj/item/clothing/under/lightblue + name = "lightblue" + desc = "lightblue" + icon_state = "lightblue" + color = "lightblue" + +/obj/item/clothing/under/aqua + name = "aqua" + desc = "aqua" + icon_state = "aqua" + color = "aqua" + +/obj/item/clothing/under/purple + name = "purple" + desc = "purple" + icon_state = "purple" + item_state = "p_suit" + color = "purple" + +/obj/item/clothing/under/lightpurple + name = "lightpurple" + desc = "lightpurple" + icon_state = "lightpurple" + color = "lightpurple" + +/obj/item/clothing/under/lightgreen + name = "lightgreen" + desc = "lightgreen" + icon_state = "lightgreen" + color = "lightgreen" + +/obj/item/clothing/under/lightblue + name = "lightblue" + desc = "lightblue" + icon_state = "lightblue" + color = "lightblue" + +/obj/item/clothing/under/lightbrown + name = "lightbrown" + desc = "lightbrown" + icon_state = "lightbrown" + color = "lightbrown" + +/obj/item/clothing/under/brown + name = "brown" + desc = "brown" + icon_state = "brown" + color = "brown" + +/obj/item/clothing/under/yellowgreen + name = "yellowgreen" + desc = "yellowgreen" + icon_state = "yellowgreen" + color = "yellowgreen" + +/obj/item/clothing/under/darkblue + name = "darkblue" + desc = "darkblue" + icon_state = "darkblue" + color = "darkblue" + +/obj/item/clothing/under/lightred + name = "lightred" + desc = "lightred" + icon_state = "lightred" + color = "lightred" + +/obj/item/clothing/under/darkred + name = "darkred" + desc = "darkred" + icon_state = "darkred" + color = "darkred" + +// STEAMPUNK STATION + +/obj/item/clothing/glasses/monocle + name = "monocle" + desc = "Such a dapper eyepiece!" + icon_state = "monocle" + item_state = "headset" // lol + +/obj/item/clothing/under/gimmick/rank/captain/suit + name = "Captain's Suit" + desc = "A green suit and yellow necktie. Exemplifies authority." + icon_state = "green_suit" + item_state = "dg_suit" + color = "green_suit" + +/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit + name = "Head of Personnel's Suit" + desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble." + icon_state = "teal_suit" + item_state = "g_suit" + color = "teal_suit" + +/obj/item/clothing/under/suit_jacket + name = "Black Suit" + desc = "A black suit and red tie. Very formal." + icon_state = "black_suit" + item_state = "bl_suit" + color = "black_suit" + +/obj/item/clothing/under/suit_jacket/really_black + name = "Executive Suit" + desc = "A formal black suit and red tie, intended for the station's finest." + icon_state = "really_black_suit" + item_state = "bl_suit" + color = "black_suit" + +/obj/item/clothing/under/suit_jacket/red + name = "Red Suit" + desc = "A red suit and blue tie. Somewhat formal." + icon_state = "red_suit" + item_state = "r_suit" + color = "red_suit" + +/obj/item/clothing/under/blackskirt + name = "Black skirt" + desc = "A black skirt, very fancy!" + icon_state = "blackskirt" + color = "blackskirt" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/under/schoolgirl + name = "schoolgirl uniform" + desc = "It's just like one of my Japanese animes!" + icon_state = "schoolgirl" + item_state = "schoolgirl" + color = "schoolgirl" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/under/gimmick/rank/police + name = "Police Uniform" + desc = "Move along, nothing to see here." + icon_state = "police" + item_state = "b_suit" + color = "police" + +/obj/item/clothing/head/flatcap + name = "flat cap" + desc = "A working man's cap." + icon_state = "flat_cap" + item_state = "detective" + +/obj/item/clothing/under/overalls + name = "Laborer's Overalls" + desc = "A set of durable overalls for getting the job done." + icon_state = "overalls" + item_state = "lb_suit" + color = "overalls" + +/obj/item/weapon/melee/classic_baton + name = "police baton" + desc = "A wooden truncheon for beating criminal scum." + icon = 'weapons.dmi' + icon_state = "baton" + item_state = "classic_baton" + flags = FPRINT | ONBELT | TABLEPASS + force = 10 + +/obj/item/clothing/under/pirate + name = "Pirate Outfit" + desc = "Yarr." + icon_state = "pirate" + item_state = "pirate" + color = "pirate" + +/obj/item/clothing/head/pirate + name = "pirate hat" + desc = "Yarr." + icon_state = "pirate" + item_state = "pirate" + +/obj/item/clothing/head/hgpiratecap + name = "pirate hat" + desc = "Yarr." + icon_state = "hgpiratecap" + item_state = "hgpiratecap" + +/obj/item/clothing/suit/pirate + name = "pirate coat" + desc = "Yarr." + icon_state = "pirate" + item_state = "pirate" + flags = FPRINT | TABLEPASS + + +/obj/item/clothing/suit/hgpirate + name = "pirate captain coat" + desc = "Yarr." + icon_state = "hgpirate" + item_state = "hgpirate" + flags = FPRINT | TABLEPASS + +/obj/item/clothing/glasses/eyepatch + name = "eyepatch" + desc = "Yarr." + icon_state = "eyepatch" + item_state = "eyepatch" + +/obj/item/clothing/head/bandana + name = "pirate bandana" + desc = "Yarr." + icon_state = "bandana" + item_state = "bandana" + +/obj/item/clothing/under/soviet + name = "soviet uniform" + desc = "For the Motherland!" + icon_state = "soviet" + item_state = "soviet" + color = "soviet" + +/obj/item/clothing/under/redcoat + name = "redcoat uniform" + desc = "Looks old." + icon_state = "redcoat" + item_state = "redcoat" + color = "redcoat" + +/obj/item/clothing/head/ushanka + name = "ushanka" + desc = "Perfect for winter in Siberia, da?" + icon_state = "ushankadown" + item_state = "ushankadown" + +/obj/item/clothing/head/collectable //Hat Station 13 + name = "Collectable Hat" + desc = "A rare collectable hat." + +/obj/item/clothing/head/collectable/petehat + name = "Ultra Rare! Pete's Hat!" + desc = "It smells faintly of plasma" + icon_state = "petehat" + +/obj/item/clothing/head/collectable/metroid + name = "Collectable Metroid Cap!" + desc = "It just latches right in place!" + icon_state = "metroid" + +/obj/item/clothing/head/collectable/xenom + name = "Collectable Xenomorph Helmet!" + desc = "Hiss hiss hiss!" + icon_state = "xenom" + +/obj/item/clothing/head/collectable/chef + name = "Collectable Chef's Hat" + desc = "A rare Chef's Hat meant for hat collectors!" + icon_state = "chef" + item_state = "chef" + +/obj/item/clothing/head/collectable/paper + name = "Collectable Paper Hat" + desc = "What looks like an ordinary paper hat, is actually a rare and valuable collector's edition paper hat. Keep away from water, fire and Librarians." + icon_state = "paper" + +/obj/item/clothing/head/collectable/tophat + name = "Collectable Top Hat" + desc = "A top hat worn by only the most prestigious hat collectors." + icon_state = "tophat" + item_state = "that" + +/obj/item/clothing/head/collectable/captain + name = "Collectable Captain's Hat" + desc = "A Collectable Hat that'll make you look just like a real comdom!" + icon_state = "captain" + item_state = "caphat" + +/obj/item/clothing/head/collectable/police + name = "Collectable Police Officer's Hat" + desc = "A Collectable Police Officer's Hat. This hat emphasizes that you are THE LAW." + icon_state = "policehelm" + +/obj/item/clothing/head/collectable/beret + name = "Collectable Beret" + desc = "A Collectable red beret. It smells faintly of garlic." + icon_state = "beret" + +/obj/item/clothing/head/collectable/welding + name = "Collectable Welding Helmet" + desc = "A Collectable Welding Helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this Helmet is done so at the owner's own risk!" + icon_state = "welding" + item_state = "welding" + +/obj/item/clothing/head/collectable/slime + name = "Collectable Slime Hat" + desc = "Just like a real Brain Slug!" + icon_state = "headslime" + item_state = "headslime" + +/obj/item/clothing/head/collectable/flatcap + name = "Collectable Flat Cap" + desc = "A Collectible farmer's Flat Cap!" + icon_state = "flat_cap" + item_state = "detective" + +/obj/item/clothing/head/collectable/pirate + name = "Collectable Pirate Hat" + desc = "You'd make a great Dread Syndie Roberts!" + icon_state = "pirate" + item_state = "pirate" + +/obj/item/clothing/head/collectable/kitty + name = "Collectable Kitty Ears" + desc = "The fur feels.....a bit too realistic." + icon_state = "kitty" + item_state = "kitty" + +/obj/item/clothing/head/collectable/rabbitears + name = "Collectable Rabbit Ears" + desc = "Not as lucky as the feet!" + icon_state = "bunny" + item_state = "bunny" + +/obj/item/clothing/head/collectable/wizard + name = "Collectable Wizard's Hat" + desc = "NOTE:Any magical powers gained from wearing this hat are purely coincidental." + icon_state = "wizard" + +/obj/item/clothing/head/collectable/hardhat + name = "Collectable Hard Hat" + desc = "WARNING! Offers no real protection, or luminosity, but it is damn fancy!" + icon_state = "hardhat0_yellow" + item_state = "hardhat0_yellow" + +/obj/item/clothing/head/collectable/HoS + name = "Collectable HoS Hat" + desc = "Now you can beat prisoners, set silly sentences and arrest for no reason too!" + icon_state = "hoscap" + +/obj/item/clothing/head/collectable/thunderdome + name = "Collectable Thunderdome helmet" + desc = "Go Red! I mean Green! I mean Red! No Green!" + icon_state = "thunderdome" + item_state = "thunderdome" + +/obj/item/clothing/head/collectable/swat + name = "Collectable SWAT Helmet" + desc = "Now you can be in the Deathsquad too!" + icon_state = "swat" + item_state = "swat" + +//obj/item/clothing/head/collectable + + + +/* no left/right sprites +/obj/item/clothing/under/mario + name = "Mario costume" + desc = "Worn by Italian plumbers everywhere. Probably." + icon_state = "mario" + item_state = "mario" + color = "mario" + +/obj/item/clothing/under/luigi + name = "Mario costume" + desc = "Player two. Couldn't you get the first controller?" + icon_state = "luigi" + item_state = "luigi" + color = "luigi" +*/ + +/obj/item/clothing/under/kilt + name = "kilt" + desc = "Includes shoes and plaid." + icon_state = "kilt" + item_state = "kilt" + color = "kilt" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET + +/obj/item/clothing/under/sexymime + name = "Sexy mime outfit" + desc = "The only time when you DON'T enjoy looking at someone's rack." + icon_state = "sexymime" + item_state = "sexymime" + color = "sexymime" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + +/obj/item/clothing/head/bowler + name = "bowler-hat" + desc = "Gentleman, elite aboard!" + icon_state = "bowler" + item_state = "bowler" + flags = FPRINT | TABLEPASS + +/obj/item/clothing/head/justice + name = "Justice Hat" + desc = "Fight for what's righteous!" + icon_state = "justicered" + item_state = "justicered" + flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + +/obj/item/clothing/head/justice/blue + icon_state = "justiceblue" + item_state = "justiceblue" + +/obj/item/clothing/head/justice/yellow + icon_state = "justiceyellow" + item_state = "justiceyellow" + +/obj/item/clothing/head/justice/green + icon_state = "justicegreen" + item_state = "justicegreen" + +/obj/item/clothing/head/justice/pink + icon_state = "justicepink" + item_state = "justicepink" + +obj/item/clothing/suit/justice + name = "Justice Suit" + desc = "This pretty much looks ridiculous." + icon_state = "justice" + item_state = "justice" + flags = FPRINT | TABLEPASS + +//stylish new hats + +/obj/item/clothing/head/bowlerhat + name = "Bowler hat" + icon_state = "bowler_hat" + item_state = "bowler_hat" + desc = "For the gentleman of distinction." + flags = FPRINT|TABLEPASS + +/obj/item/clothing/head/beaverhat + name = "Beaver hat" + icon_state = "beaver_hat" + item_state = "beaver_hat" + desc = "Soft felt make this hat both comfortable and elegant." + flags = FPRINT|TABLEPASS + +/obj/item/clothing/head/boaterhat + name = "Boater hat" + icon_state = "boater_hat" + item_state = "boater_hat" + desc = "The ultimate in summer fashion." + flags = FPRINT|TABLEPASS + +/obj/item/clothing/head/fedora + name = "Fedora" + icon_state = "fedora" + item_state = "fedora" + desc = "A sharp, stylish hat." + flags = FPRINT|TABLEPASS + +/obj/item/clothing/head/feathertrilby + name = "Feather trilby" + icon_state = "feather_trilby" + item_state = "feather_trilby" + desc = "A sharp, stylish hat with a feather." + flags = FPRINT|TABLEPASS + +//pyjamas + +/obj/item/clothing/under/bluepyjamas + name = "Blue pyjamas" + desc = "Slightly old-fashioned sleepwear." + icon_state = "blue_pyjamas" + item_state = "blue_pyjamas" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + +/obj/item/clothing/under/redpyjamas + name = "Red pyjamas" + desc = "Slightly old-fashioned sleepwear." + icon_state = "red_pyjamas" + item_state = "red_pyjamas" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + +//scarves (fit in in mask slot) + +/obj/item/clothing/mask/bluescarf + name = "Blue neck scarf" + desc = "A blue neck scarf." + icon_state = "blueneckscarf" + item_state = "blueneckscarf" + flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH + w_class = 2 + gas_transfer_coefficient = 0.90 + +/obj/item/clothing/mask/redscarf + name = "Red scarf" + desc = "A red and white checkered neck scarf." + icon_state = "redwhite_scarf" + item_state = "redwhite_scarf" + flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH + w_class = 2 + gas_transfer_coefficient = 0.90 + +/obj/item/clothing/mask/greenscarf + name = "Green scarf" + desc = "A green neck scarf." + icon_state = "green_scarf" + item_state = "green_scarf" + flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH + w_class = 2 + gas_transfer_coefficient = 0.90 + +/obj/item/clothing/mask/ninjascarf + name = "Ninja scarf" + desc = "A stealthy, dark scarf." + icon_state = "ninja_scarf" + item_state = "ninja_scarf" + flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH + w_class = 2 + gas_transfer_coefficient = 0.90 + +//shoes + +/obj/item/clothing/shoes/laceups + name = "Laceup shoes" + desc = "Stylish black leather." + icon_state = "laceups" + item_state = "laceups" + color = "black" + +//suits + +/obj/item/clothing/suit/leathercoat + name = "Leather Coat" + desc = "A long, thick black leather coat." + icon_state = "leathercoat" + item_state = "leathercoat" + flags = FPRINT | TABLEPASS + +/obj/item/clothing/suit/browncoat + name = "Brown Leather Coat" + desc = "A long, brown leather coat." + icon_state = "browncoat" + item_state = "browncoat" + flags = FPRINT | TABLEPASS + +/obj/item/clothing/suit/neocoat + name = "Black coat" + desc = "A flowing, black coat." + icon_state = "neocoat" + item_state = "neocoat" + flags = FPRINT | TABLEPASS + +/obj/item/clothing/suit/creamsuit + name = "Cream suit" + desc = "A cream coloured, genteel suit." + icon_state = "creamsuit" + item_state = "creamsuit" + flags = FPRINT | TABLEPASS diff --git a/code/defines/obj/clothing/gloves.dm b/code/modules/clothing/gloves.dm similarity index 96% rename from code/defines/obj/clothing/gloves.dm rename to code/modules/clothing/gloves.dm index af29b55661e..153b1945fb8 100644 --- a/code/defines/obj/clothing/gloves.dm +++ b/code/modules/clothing/gloves.dm @@ -1,226 +1,226 @@ -// NO GLOVES NO LOVES - -/obj/item/clothing/gloves - name = "gloves" - w_class = 2.0 - icon = 'gloves.dmi' - protective_temperature = 400 - heat_transfer_coefficient = 0.25 - siemens_coefficient = 0.50 - var/siemens_coefficient_archived = 0 - var/wired = 0 - var/obj/item/weapon/cell/cell = 0 - body_parts_covered = HANDS - -/obj/item/clothing/gloves/white - name = "White Gloves" - desc = "These look pretty fancy." - icon_state = "latex" - item_state = "lgloves" - color="mime" - - redcoat - color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way. - -/obj/item/clothing/gloves/black - desc = "These gloves are fire-resistant." - name = "Black Gloves" - icon_state = "black" - item_state = "bgloves" - color="brown" - protective_temperature = 1500 - heat_transfer_coefficient = 0.01 - - hos - color = "hosred" //Exists for washing machines. Is not different from black gloves in any way. - - ce - color = "chief" //Exists for washing machines. Is not different from black gloves in any way. - -/obj/item/clothing/gloves/detective - desc = "Made of well worn leather. These gloves are comfortable, useful, and stylish!" - name = "The Detective's Gloves" - icon_state = "black" - item_state = "bgloves" - color="brown" - siemens_coefficient = 0.30 - protective_temperature = 1100 - -/obj/item/clothing/gloves/hos - desc = "These gloves belong to the man in charge of the guns." - name = "Head of Security's Gloves" - icon_state = "black" - item_state = "bgloves" - color="brown" - siemens_coefficient = 0.30 - protective_temperature = 1100 - -/obj/item/clothing/gloves/cyborg - desc = "Beep. Boop. Beep." - name = "cyborg gloves" - icon_state = "black" - item_state = "r_hands" - siemens_coefficient = 1.0 - -/obj/item/clothing/gloves/latex - name = "Latex Gloves" - desc = "Sterile latex gloves." - icon_state = "latex" - item_state = "lgloves" - siemens_coefficient = 0.30 - permeability_coefficient = 0.01 - protective_temperature = 310 - heat_transfer_coefficient = 0.90 - color="white" - - cmo - color = "medical" //Exists for washing machines. Is not different from latex gloves in any way. - -/obj/item/clothing/gloves/swat - desc = "These tactical gloves are somewhat fire and impact-resistant." - name = "SWAT Gloves" - icon_state = "black" - item_state = "swat_gl" - siemens_coefficient = 0 - permeability_coefficient = 0.05 - protective_temperature = 1100 - heat_transfer_coefficient = 0.01 - -/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves - desc = "These tactical gloves are somewhat fire and impact resistant." - name = "combat gloves" - icon_state = "black" - item_state = "swat_gl" - siemens_coefficient = 0 - permeability_coefficient = 0.05 - protective_temperature = 1100 - heat_transfer_coefficient = 0.01 - -/obj/item/clothing/gloves/space_ninja - desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance." - name = "ninja gloves" - icon_state = "s-ninja" - item_state = "s-ninja" - siemens_coefficient = 0 - protective_temperature = 1100 - heat_transfer_coefficient = 0.05 - var/draining = 0 - var/candrain = 0 - var/mindrain = 200 - var/maxdrain = 400 - -//BEEP BEEP IT'S THE COMMENT BRIGADE -Pete (gloves overhaul) -/* -/obj/item/clothing/gloves/stungloves/ - name = "Stungloves" - desc = "These gloves are electrically charged." - icon_state = "yellow" - item_state = "ygloves" - siemens_coefficient = 0.30 - elecgen = 1 - uses = 10 -*/ - -/obj/item/clothing/gloves/yellow - desc = "These gloves will protect the wearer from electric shock." - name = "insulated gloves" - icon_state = "yellow" - item_state = "ygloves" - siemens_coefficient = 0 - permeability_coefficient = 0.05 - protective_temperature = 1000 - heat_transfer_coefficient = 0.01 - color="yellow" - -/obj/item/clothing/gloves/captain - desc = "Regal blue gloves, with a nice gold trim. Swanky." - name = "Captain Gloves" - icon_state = "captain" - item_state = "egloves" - color = "captain" - -/obj/item/clothing/gloves/botanic_leather - desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." - name = "botanic leather gloves" - icon_state = "leather" - item_state = "ggloves" - siemens_coefficient = 0.50 - permeability_coefficient = 0.9 - protective_temperature = 400 - heat_transfer_coefficient = 0.70 - -/obj/item/clothing/gloves/orange - name = "Orange Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "orange" - item_state = "orangegloves" - color="orange" - -/obj/item/clothing/gloves/red - desc = "Heavily padded heavy-duty red gloves." - name = "red gloves" - icon_state = "red" - item_state = "redgloves" - siemens_coefficient = 0.30 - protective_temperature = 1100 - -/obj/item/clothing/gloves/rainbow - name = "Rainbow Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "rainbow" - item_state = "rainbowgloves" - color = "rainbow" - - clown - color = "clown" - -/obj/item/clothing/gloves/blue - name = "Blue Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "blue" - item_state = "bluegloves" - color="blue" - -/obj/item/clothing/gloves/purple - name = "Purple Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "purple" - item_state = "purplegloves" - color="purple" - -/obj/item/clothing/gloves/green - name = "Green Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "green" - item_state = "greengloves" - color="green" - -/obj/item/clothing/gloves/grey - name = "Grey Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "gray" - item_state = "graygloves" - color="grey" - - rd - color = "director" //Exists for washing machines. Is not different from gray gloves in any way. - - hop - color = "hop" //Exists for washing machines. Is not different from gray gloves in any way. - -/obj/item/clothing/gloves/light_brown - name = "Light Brown Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "lightbrown" - item_state = "lightbrowngloves" - color="light brown" - -/obj/item/clothing/gloves/brown - name = "Brown Gloves" - desc = "A pair of gloves. They don't look special in any way." - icon_state = "brown" - item_state = "browngloves" - color="brown" - - cargo +// NO GLOVES NO LOVES + +/obj/item/clothing/gloves + name = "gloves" + w_class = 2.0 + icon = 'gloves.dmi' + protective_temperature = 400 + heat_transfer_coefficient = 0.25 + siemens_coefficient = 0.50 + var/siemens_coefficient_archived = 0 + var/wired = 0 + var/obj/item/weapon/cell/cell = 0 + body_parts_covered = HANDS + +/obj/item/clothing/gloves/white + name = "White Gloves" + desc = "These look pretty fancy." + icon_state = "latex" + item_state = "lgloves" + color="mime" + + redcoat + color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way. + +/obj/item/clothing/gloves/black + desc = "These gloves are fire-resistant." + name = "Black Gloves" + icon_state = "black" + item_state = "bgloves" + color="brown" + protective_temperature = 1500 + heat_transfer_coefficient = 0.01 + + hos + color = "hosred" //Exists for washing machines. Is not different from black gloves in any way. + + ce + color = "chief" //Exists for washing machines. Is not different from black gloves in any way. + +/obj/item/clothing/gloves/detective + desc = "Made of well worn leather. These gloves are comfortable, useful, and stylish!" + name = "The Detective's Gloves" + icon_state = "black" + item_state = "bgloves" + color="brown" + siemens_coefficient = 0.30 + protective_temperature = 1100 + +/obj/item/clothing/gloves/hos + desc = "These gloves belong to the man in charge of the guns." + name = "Head of Security's Gloves" + icon_state = "black" + item_state = "bgloves" + color="brown" + siemens_coefficient = 0.30 + protective_temperature = 1100 + +/obj/item/clothing/gloves/cyborg + desc = "Beep. Boop. Beep." + name = "cyborg gloves" + icon_state = "black" + item_state = "r_hands" + siemens_coefficient = 1.0 + +/obj/item/clothing/gloves/latex + name = "Latex Gloves" + desc = "Sterile latex gloves." + icon_state = "latex" + item_state = "lgloves" + siemens_coefficient = 0.30 + permeability_coefficient = 0.01 + protective_temperature = 310 + heat_transfer_coefficient = 0.90 + color="white" + + cmo + color = "medical" //Exists for washing machines. Is not different from latex gloves in any way. + +/obj/item/clothing/gloves/swat + desc = "These tactical gloves are somewhat fire and impact-resistant." + name = "SWAT Gloves" + icon_state = "black" + item_state = "swat_gl" + siemens_coefficient = 0 + permeability_coefficient = 0.05 + protective_temperature = 1100 + heat_transfer_coefficient = 0.01 + +/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves + desc = "These tactical gloves are somewhat fire and impact resistant." + name = "combat gloves" + icon_state = "black" + item_state = "swat_gl" + siemens_coefficient = 0 + permeability_coefficient = 0.05 + protective_temperature = 1100 + heat_transfer_coefficient = 0.01 + +/obj/item/clothing/gloves/space_ninja + desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance." + name = "ninja gloves" + icon_state = "s-ninja" + item_state = "s-ninja" + siemens_coefficient = 0 + protective_temperature = 1100 + heat_transfer_coefficient = 0.05 + var/draining = 0 + var/candrain = 0 + var/mindrain = 200 + var/maxdrain = 400 + +//BEEP BEEP IT'S THE COMMENT BRIGADE -Pete (gloves overhaul) +/* +/obj/item/clothing/gloves/stungloves/ + name = "Stungloves" + desc = "These gloves are electrically charged." + icon_state = "yellow" + item_state = "ygloves" + siemens_coefficient = 0.30 + elecgen = 1 + uses = 10 +*/ + +/obj/item/clothing/gloves/yellow + desc = "These gloves will protect the wearer from electric shock." + name = "insulated gloves" + icon_state = "yellow" + item_state = "ygloves" + siemens_coefficient = 0 + permeability_coefficient = 0.05 + protective_temperature = 1000 + heat_transfer_coefficient = 0.01 + color="yellow" + +/obj/item/clothing/gloves/captain + desc = "Regal blue gloves, with a nice gold trim. Swanky." + name = "Captain Gloves" + icon_state = "captain" + item_state = "egloves" + color = "captain" + +/obj/item/clothing/gloves/botanic_leather + desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." + name = "botanic leather gloves" + icon_state = "leather" + item_state = "ggloves" + siemens_coefficient = 0.50 + permeability_coefficient = 0.9 + protective_temperature = 400 + heat_transfer_coefficient = 0.70 + +/obj/item/clothing/gloves/orange + name = "Orange Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "orange" + item_state = "orangegloves" + color="orange" + +/obj/item/clothing/gloves/red + desc = "Heavily padded heavy-duty red gloves." + name = "red gloves" + icon_state = "red" + item_state = "redgloves" + siemens_coefficient = 0.30 + protective_temperature = 1100 + +/obj/item/clothing/gloves/rainbow + name = "Rainbow Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "rainbow" + item_state = "rainbowgloves" + color = "rainbow" + + clown + color = "clown" + +/obj/item/clothing/gloves/blue + name = "Blue Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "blue" + item_state = "bluegloves" + color="blue" + +/obj/item/clothing/gloves/purple + name = "Purple Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "purple" + item_state = "purplegloves" + color="purple" + +/obj/item/clothing/gloves/green + name = "Green Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "green" + item_state = "greengloves" + color="green" + +/obj/item/clothing/gloves/grey + name = "Grey Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "gray" + item_state = "graygloves" + color="grey" + + rd + color = "director" //Exists for washing machines. Is not different from gray gloves in any way. + + hop + color = "hop" //Exists for washing machines. Is not different from gray gloves in any way. + +/obj/item/clothing/gloves/light_brown + name = "Light Brown Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "lightbrown" + item_state = "lightbrowngloves" + color="light brown" + +/obj/item/clothing/gloves/brown + name = "Brown Gloves" + desc = "A pair of gloves. They don't look special in any way." + icon_state = "brown" + item_state = "browngloves" + color="brown" + + cargo color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way. \ No newline at end of file diff --git a/code/modules/clothing/hardhat.dm b/code/modules/clothing/head/hardhat.dm similarity index 95% rename from code/modules/clothing/hardhat.dm rename to code/modules/clothing/head/hardhat.dm index c5a60e08ae3..c0f955315f6 100644 --- a/code/modules/clothing/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -1,30 +1,31 @@ -/obj/item/clothing/head/helmet/hardhat - name = "hard hat" - desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight." - icon_state = "hardhat0_yellow" - flags = FPRINT | TABLEPASS | SUITSPACE - item_state = "hardhat0_yellow" - var/brightness_on = 4 //luminosity when on - var/on = 0 - color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite) - armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) - -/obj/item/clothing/head/helmet/hardhat/orange - icon_state = "hardhat0_orange" - item_state = "hardhat0_orange" - color = "orange" - -/obj/item/clothing/head/helmet/hardhat/red - icon_state = "hardhat0_red" - item_state = "hardhat0_red" - color = "red" - -/obj/item/clothing/head/helmet/hardhat/white - icon_state = "hardhat0_white" - item_state = "hardhat0_white" - color = "white" - -/obj/item/clothing/head/helmet/hardhat/dblue - icon_state = "hardhat0_dblue" - item_state = "hardhat0_dblue" +/obj/item/clothing/head/helmet/hardhat + name = "hard hat" + desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight." + icon_state = "hardhat0_yellow" + flags = FPRINT | TABLEPASS | SUITSPACE + item_state = "hardhat0_yellow" + var/brightness_on = 4 //luminosity when on + var/on = 0 + color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite) + armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) + flags_inv = 0 + +/obj/item/clothing/head/helmet/hardhat/orange + icon_state = "hardhat0_orange" + item_state = "hardhat0_orange" + color = "orange" + +/obj/item/clothing/head/helmet/hardhat/red + icon_state = "hardhat0_red" + item_state = "hardhat0_red" + color = "red" + +/obj/item/clothing/head/helmet/hardhat/white + icon_state = "hardhat0_white" + item_state = "hardhat0_white" + color = "white" + +/obj/item/clothing/head/helmet/hardhat/dblue + icon_state = "hardhat0_dblue" + item_state = "hardhat0_dblue" color = "dblue" \ No newline at end of file diff --git a/code/defines/obj/clothing/head.dm b/code/modules/clothing/head/hats.dm similarity index 60% rename from code/defines/obj/clothing/head.dm rename to code/modules/clothing/head/hats.dm index b232c1bdb0d..915b5b02e71 100644 --- a/code/defines/obj/clothing/head.dm +++ b/code/modules/clothing/head/hats.dm @@ -1,190 +1,126 @@ -// HATS. OH MY WHAT A FINE CHAPEAU, GOOD SIR. -/obj/item/clothing/head - name = "head" - icon = 'hats.dmi' - body_parts_covered = HEAD - var/list/allowed = list() - -/obj/item/clothing/head/cakehat - name = "cakehat" - desc = "It is a cakehat!" - icon_state = "cake0" - var/onfire = 0.0 - var/status = 0 - flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES - var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage - -/obj/item/clothing/head/caphat - name = "Captain's hat" - icon_state = "captain" - desc = "It's good being the king." - flags = FPRINT|TABLEPASS - item_state = "caphat" - -/obj/item/clothing/head/centhat - name = "Cent. Comm. hat" - icon_state = "centcom" - desc = "It's even better to be the emperor." - flags = FPRINT|TABLEPASS - item_state = "centhat" - -/obj/item/clothing/head/deathsquad/beret - name = "officer's beret" - desc = "An armored beret commonly used by special operations officers." - icon_state = "beret_badge" - flags = FPRINT|TABLEPASS - armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) - - -/obj/item/clothing/head/powdered_wig - name = "powdered wig" - desc = "A powdered wig." - icon_state = "pwig" - item_state = "pwig" - -/obj/item/clothing/head/that - name = "Top hat" - desc = "An amish looking hat." - icon_state = "tophat" - item_state = "that" - flags = FPRINT|TABLEPASS - - -/obj/item/clothing/head/chefhat - name = "Chef's Hat" - icon_state = "chef" - item_state = "chef" - desc = "The commander in chef's head wear." - flags = FPRINT | TABLEPASS - -/obj/item/clothing/head/redcoat - name = "Redcoat hat" - icon_state = "redcoat" - desc = "I guess it's a redhead." - flags = FPRINT | TABLEPASS - -/obj/item/clothing/head/mailman - name = "Mailman Hat" - icon_state = "mailman" - desc = "Right-on-time mail service head wear." - flags = FPRINT | TABLEPASS - -/obj/item/clothing/head/plaguedoctorhat - name = "Plague doctor's hat" - desc = "Once used by Plague doctors. Now useless." - icon_state = "plaguedoctor" - flags = FPRINT | TABLEPASS - permeability_coefficient = 0.01 - -/obj/item/clothing/head/beret - name = "beret" - desc = "A beret. A mime's favorite headwear." - icon_state = "beret" - flags = FPRINT | TABLEPASS - - -// CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN. - -/obj/item/clothing/head/helmet/cueball - name = "cueball helmet" - desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?" - icon_state = "cueball" - flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR - item_state="cueball" - -/obj/item/clothing/head/secsoft - name = "Soft Cap" - desc = "A baseball hat in tasteful red." - icon_state = "secsoft" - flags = FPRINT|TABLEPASS|HEADCOVERSEYES - item_state = "helmet" - -/obj/item/clothing/head/syndicatefake - name = "red space helmet replica" - icon_state = "syndicate" - item_state = "syndicate" - desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" - see_face = 0.0 - flags = FPRINT | TABLEPASS | BLOCKHAIR - -/obj/item/clothing/head/helmet/swat - name = "swat helmet" - desc = "Used by highly trained Swat Members." - icon_state = "swat" - flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR - item_state = "swat" - armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) - -/obj/item/clothing/head/helmet/thunderdome - name = "Thunderdome helmet" - desc = "Let the battle commence!" - icon_state = "thunderdome" - flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR - item_state = "thunderdome" - armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) - - - -/obj/item/clothing/head/helmet/welding - name = "welding helmet" - desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye." - icon_state = "welding" - flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH - see_face = 0.0 - item_state = "welding" - protective_temperature = 1300 - m_amt = 3000 - g_amt = 1000 - var/up = 0 - armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 5, rad = 10) - - - -/obj/item/clothing/head/helmet/that - name = "Sturdy Top hat" - desc = "An amish looking, armored top hat." - icon_state = "tophat" - item_state = "that" - flags = FPRINT|TABLEPASS - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) - -/obj/item/clothing/head/helmet/greenbandana - name = "Green Bandana" - desc = "A green bandana with some fine nanotech lining." - icon_state = "greenbandana" - item_state = "greenbandana" - flags = FPRINT|TABLEPASS - armor = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 15, bio = 15, rad = 15) - -/obj/item/clothing/head/helmet/riot - name = "Riot Helmet" - desc = "A helmet specifically designed to protect against close range attacks." - icon_state = "riot" - item_state = "helmet" - flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES - armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) - -/obj/item/clothing/head/helmet/cap - name = "Captain's cap" - desc = "For irresponsible Captains." - icon_state = "capcap" - flags = FPRINT|TABLEPASS|SUITSPACE - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) - -/obj/item/clothing/head/chaplain_hood - name = "Chaplain's hood" - desc = "A hood that covers the head. Keeps you warm during the space winters." - icon_state = "chaplain_hood" - flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR - -/obj/item/clothing/head/hasturhood - name = "Hastur's Hood" - desc = "This hood is unspeakably stylish" - icon_state = "hasturhood" - flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR - -/obj/item/clothing/head/nursehat - name = "Nurse Hat" - desc = "For quick identification of trained medical personnel." - icon_state = "nursehat" - flags = FPRINT|TABLEPASS +// HATS. OH MY WHAT A FINE CHAPEAU, GOOD SIR. +/obj/item/clothing/head + name = "head" + icon = 'hats.dmi' + body_parts_covered = HEAD + var/list/allowed = list() + +/obj/item/clothing/head/cakehat + name = "cakehat" + desc = "It is a cakehat!" + icon_state = "cake0" + var/onfire = 0.0 + var/status = 0 + flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES + var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage + +/obj/item/clothing/head/caphat + name = "Captain's hat" + icon_state = "captain" + desc = "It's good being the king." + flags = FPRINT|TABLEPASS + item_state = "caphat" + +/obj/item/clothing/head/centhat + name = "Cent. Comm. hat" + icon_state = "centcom" + desc = "It's even better to be the emperor." + flags = FPRINT|TABLEPASS + item_state = "centhat" + +/obj/item/clothing/head/deathsquad/beret + name = "officer's beret" + desc = "An armored beret commonly used by special operations officers." + icon_state = "beret_badge" + flags = FPRINT|TABLEPASS + armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) + + +/obj/item/clothing/head/powdered_wig + name = "powdered wig" + desc = "A powdered wig." + icon_state = "pwig" + item_state = "pwig" + +/obj/item/clothing/head/that + name = "Top hat" + desc = "An amish looking hat." + icon_state = "tophat" + item_state = "that" + flags = FPRINT|TABLEPASS + + +/obj/item/clothing/head/chefhat + name = "Chef's Hat" + icon_state = "chef" + item_state = "chef" + desc = "The commander in chef's head wear." + flags = FPRINT | TABLEPASS + +/obj/item/clothing/head/redcoat + name = "Redcoat hat" + icon_state = "redcoat" + desc = "I guess it's a redhead." + flags = FPRINT | TABLEPASS + +/obj/item/clothing/head/mailman + name = "Mailman Hat" + icon_state = "mailman" + desc = "Right-on-time mail service head wear." + flags = FPRINT | TABLEPASS + +/obj/item/clothing/head/plaguedoctorhat + name = "Plague doctor's hat" + desc = "Once used by Plague doctors. Now useless." + icon_state = "plaguedoctor" + flags = FPRINT | TABLEPASS + permeability_coefficient = 0.01 + +/obj/item/clothing/head/beret + name = "beret" + desc = "A beret. A mime's favorite headwear." + icon_state = "beret" + flags = FPRINT | TABLEPASS + + +// CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN. + +/obj/item/clothing/head/helmet/cueball + name = "cueball helmet" + desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?" + icon_state = "cueball" + flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + item_state="cueball" + +/obj/item/clothing/head/secsoft + name = "Soft Cap" + desc = "A baseball hat in tasteful red." + icon_state = "secsoft" + flags = FPRINT|TABLEPASS|HEADCOVERSEYES + item_state = "helmet" + +/obj/item/clothing/head/syndicatefake + name = "red space helmet replica" + icon_state = "syndicate" + item_state = "syndicate" + desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" + see_face = 0.0 + flags = FPRINT | TABLEPASS | BLOCKHAIR + +/obj/item/clothing/head/chaplain_hood + name = "Chaplain's hood" + desc = "A hood that covers the head. Keeps you warm during the space winters." + icon_state = "chaplain_hood" + flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR + +/obj/item/clothing/head/hasturhood + name = "Hastur's Hood" + desc = "This hood is unspeakably stylish" + icon_state = "hasturhood" + flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR + +/obj/item/clothing/head/nursehat + name = "Nurse Hat" + desc = "For quick identification of trained medical personnel." + icon_state = "nursehat" + flags = FPRINT|TABLEPASS diff --git a/code/modules/clothing/head/helmets.dm b/code/modules/clothing/head/helmets.dm new file mode 100644 index 00000000000..069d8dba8ed --- /dev/null +++ b/code/modules/clothing/head/helmets.dm @@ -0,0 +1,81 @@ +/obj/item/clothing/head/helmet + name = "helmet" + desc = "Standard Security gear. Protects the head from impacts." + icon_state = "helmet" + flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES + item_state = "helmet" + armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0) + protective_temperature = 500 + heat_transfer_coefficient = 0.10 + flags_inv = HIDEEARS|HIDEEYES + +/obj/item/clothing/head/helmet/warden + name = "Warden Hat" + desc = "A special helmet issued to the Warden of a securiy force. Protects the head from impacts." + icon_state = "policehelm" + flags_inv = 0 + +/obj/item/clothing/head/helmet/swat + name = "swat helmet" + desc = "Used by highly trained Swat Members." + icon_state = "swat" + flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR + item_state = "swat" + armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) + +/obj/item/clothing/head/helmet/thunderdome + name = "Thunderdome helmet" + desc = "Let the battle commence!" + icon_state = "thunderdome" + flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR + item_state = "thunderdome" + armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) + +/obj/item/clothing/head/helmet/welding + name = "welding helmet" + desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye." + icon_state = "welding" + flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH + see_face = 0.0 + item_state = "welding" + protective_temperature = 1300 + m_amt = 3000 + g_amt = 1000 + var/up = 0 + armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 5, rad = 10) + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES + +/obj/item/clothing/head/helmet/that + name = "Sturdy Top hat" + desc = "An amish looking, armored top hat." + icon_state = "tophat" + item_state = "that" + flags = FPRINT|TABLEPASS + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) + flags_inv = 0 + +/obj/item/clothing/head/helmet/greenbandana + name = "Green Bandana" + desc = "A green bandana with some fine nanotech lining." + icon_state = "greenbandana" + item_state = "greenbandana" + flags = FPRINT|TABLEPASS + armor = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 15, bio = 15, rad = 15) + flags_inv = 0 + +/obj/item/clothing/head/helmet/riot + name = "Riot Helmet" + desc = "A helmet specifically designed to protect against close range attacks." + icon_state = "riot" + item_state = "helmet" + flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES + armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) + flags_inv = HIDEEARS + +/obj/item/clothing/head/helmet/cap + name = "Captain's cap" + desc = "For irresponsible Captains." + icon_state = "capcap" + flags = FPRINT|TABLEPASS|SUITSPACE + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) + flags_inv = 0 diff --git a/code/defines/obj/clothing/jumpsuit.dm b/code/modules/clothing/jumpsuit.dm similarity index 100% rename from code/defines/obj/clothing/jumpsuit.dm rename to code/modules/clothing/jumpsuit.dm diff --git a/code/defines/obj/clothing/mask.dm b/code/modules/clothing/mask.dm similarity index 96% rename from code/defines/obj/clothing/mask.dm rename to code/modules/clothing/mask.dm index 5dba832c354..5873d125701 100644 --- a/code/defines/obj/clothing/mask.dm +++ b/code/modules/clothing/mask.dm @@ -1,149 +1,149 @@ -// MASK WAS THAT MOVIE WITH THAT GUY WITH THE MESSED UP FACE. WHAT'S HIS NAME . . . JIM CARREY, I THINK. - -/obj/item/clothing/mask - name = "mask" - icon = 'masks.dmi' - body_parts_covered = HEAD - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) - - -/obj/item/clothing/mask/breath - desc = "A close-fitting mask that can be connected to an air supply." - name = "Breath Mask" - icon_state = "breath" - item_state = "breath" - flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH | HALFMASK - w_class = 2 - protective_temperature = 420 - heat_transfer_coefficient = 0.90 - gas_transfer_coefficient = 0.10 - permeability_coefficient = 0.50 - -/obj/item/clothing/mask/medical - desc = "A close-fitting sterile mask that can be connected to an air supply." - name = "Medical Mask" - icon_state = "medical" - item_state = "medical" - flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH - w_class = 3 - protective_temperature = 420 - gas_transfer_coefficient = 0.10 - permeability_coefficient = 0.10 - -/obj/item/clothing/mask/spiderman - desc = "A mask of Deadpool!" - name = "Deadpool mask" - icon_state = "spiderman" - item_state = "spiderman" - flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH|BLOCKHAIR - w_class = 3 - protective_temperature = 420 - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.01 - -/obj/item/clothing/mask/muzzle - name = "muzzle" - desc = "To stop that awful noise." - icon_state = "muzzle" - item_state = "muzzle" - flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH - w_class = 2 - gas_transfer_coefficient = 0.90 - -/obj/item/clothing/mask/surgical - name = "Sterile Mask" - desc = "A sterile mask designed to help prevent the spread of diseases." - icon_state = "sterile" - item_state = "sterile" - w_class = 1 - flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH - gas_transfer_coefficient = 0.90 - permeability_coefficient = 0.05 - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0) - -/obj/item/clothing/mask/gas - name = "gas mask" - desc = "A face-covering mask that can be connected to an air supply." - icon_state = "gas_mask" - flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES - w_class = 3.0 - see_face = 0.0 - item_state = "gas_mask" - protective_temperature = 500 - heat_transfer_coefficient = 0.01 - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.01 - -/obj/item/clothing/mask/gas/plaguedoctor - name = "Plague doctor mask" - desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply." - icon_state = "plaguedoctor" - item_state = "gas_mask" - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0) - -/obj/item/clothing/mask/gas/emergency - name = "emergency gas mask" - desc = "A face-covering mask that can be connected to an air supply. For use in emergencies." - icon_state = "gas_alt" - item_state = "gas_alt" - -/obj/item/clothing/mask/gas/swat - name = "SWAT Mask" - desc = "A close-fitting tactical mask that can be connected to an air supply." - icon_state = "swat" - -/obj/item/clothing/mask/gas/syndicate - name = "syndicate mask" - desc = "A close-fitting tactical mask that can be connected to an air supply." - icon_state = "swat" - -/obj/item/clothing/mask/gas/voice - name = "gas mask" - //desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics." - icon_state = "gas_mask" - var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson - var/voice = "Unknown" - var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N - origin_tech = "syndicate=4" - -/obj/item/clothing/mask/gas/voice/space_ninja - name = "ninja mask" - desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." - icon_state = "s-ninja" - item_state = "s-ninja_mask" - vchange = 1 - -/obj/item/clothing/mask/gas/clown_hat - name = "clown wig and mask" - desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." - icon_state = "clown" - item_state = "clown_hat" - -/obj/item/clothing/mask/gas/sexyclown - name = "sexy clown mask" - desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." - icon_state = "sexyclown" - item_state = "sexyclown" - -/obj/item/clothing/mask/gas/mime - name = "mime mask" - desc = "The traditional mime's mask. It has an eerie facial posture." - icon_state = "mime" - item_state = "mime" - -/obj/item/clothing/mask/gas/monkeymask - name = "monkey mask" - desc = "A mask used when acting as a monkey." - icon_state = "monkeymask" - item_state = "monkeymask" - -/obj/item/clothing/mask/gas/sexymime - name = "sexy mime mask" - desc = "A traditional female mime's mask." - icon_state = "sexymime" - item_state = "sexymime" - -/obj/item/clothing/mask/gas/fakemoustache - name = "fake moustache" - desc = "Warning: moustache is fake." +// MASK WAS THAT MOVIE WITH THAT GUY WITH THE MESSED UP FACE. WHAT'S HIS NAME . . . JIM CARREY, I THINK. + +/obj/item/clothing/mask + name = "mask" + icon = 'masks.dmi' + body_parts_covered = HEAD + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) + + +/obj/item/clothing/mask/breath + desc = "A close-fitting mask that can be connected to an air supply." + name = "Breath Mask" + icon_state = "breath" + item_state = "breath" + flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH | HALFMASK + w_class = 2 + protective_temperature = 420 + heat_transfer_coefficient = 0.90 + gas_transfer_coefficient = 0.10 + permeability_coefficient = 0.50 + +/obj/item/clothing/mask/medical + desc = "A close-fitting sterile mask that can be connected to an air supply." + name = "Medical Mask" + icon_state = "medical" + item_state = "medical" + flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH + w_class = 3 + protective_temperature = 420 + gas_transfer_coefficient = 0.10 + permeability_coefficient = 0.10 + +/obj/item/clothing/mask/spiderman + desc = "A mask of Deadpool!" + name = "Deadpool mask" + icon_state = "spiderman" + item_state = "spiderman" + flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH|BLOCKHAIR + w_class = 3 + protective_temperature = 420 + gas_transfer_coefficient = 0.01 + permeability_coefficient = 0.01 + +/obj/item/clothing/mask/muzzle + name = "muzzle" + desc = "To stop that awful noise." + icon_state = "muzzle" + item_state = "muzzle" + flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH + w_class = 2 + gas_transfer_coefficient = 0.90 + +/obj/item/clothing/mask/surgical + name = "Sterile Mask" + desc = "A sterile mask designed to help prevent the spread of diseases." + icon_state = "sterile" + item_state = "sterile" + w_class = 1 + flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH + gas_transfer_coefficient = 0.90 + permeability_coefficient = 0.05 + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0) + +/obj/item/clothing/mask/gas + name = "gas mask" + desc = "A face-covering mask that can be connected to an air supply." + icon_state = "gas_mask" + flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES + w_class = 3.0 + see_face = 0.0 + item_state = "gas_mask" + protective_temperature = 500 + heat_transfer_coefficient = 0.01 + gas_transfer_coefficient = 0.01 + permeability_coefficient = 0.01 + +/obj/item/clothing/mask/gas/plaguedoctor + name = "Plague doctor mask" + desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply." + icon_state = "plaguedoctor" + item_state = "gas_mask" + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0) + +/obj/item/clothing/mask/gas/emergency + name = "emergency gas mask" + desc = "A face-covering mask that can be connected to an air supply. For use in emergencies." + icon_state = "gas_alt" + item_state = "gas_alt" + +/obj/item/clothing/mask/gas/swat + name = "SWAT Mask" + desc = "A close-fitting tactical mask that can be connected to an air supply." + icon_state = "swat" + +/obj/item/clothing/mask/gas/syndicate + name = "syndicate mask" + desc = "A close-fitting tactical mask that can be connected to an air supply." + icon_state = "swat" + +/obj/item/clothing/mask/gas/voice + name = "gas mask" + //desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics." + icon_state = "gas_mask" + var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson + var/voice = "Unknown" + var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N + origin_tech = "syndicate=4" + +/obj/item/clothing/mask/gas/voice/space_ninja + name = "ninja mask" + desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." + icon_state = "s-ninja" + item_state = "s-ninja_mask" + vchange = 1 + +/obj/item/clothing/mask/gas/clown_hat + name = "clown wig and mask" + desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." + icon_state = "clown" + item_state = "clown_hat" + +/obj/item/clothing/mask/gas/sexyclown + name = "sexy clown mask" + desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." + icon_state = "sexyclown" + item_state = "sexyclown" + +/obj/item/clothing/mask/gas/mime + name = "mime mask" + desc = "The traditional mime's mask. It has an eerie facial posture." + icon_state = "mime" + item_state = "mime" + +/obj/item/clothing/mask/gas/monkeymask + name = "monkey mask" + desc = "A mask used when acting as a monkey." + icon_state = "monkeymask" + item_state = "monkeymask" + +/obj/item/clothing/mask/gas/sexymime + name = "sexy mime mask" + desc = "A traditional female mime's mask." + icon_state = "sexymime" + item_state = "sexymime" + +/obj/item/clothing/mask/gas/fakemoustache + name = "fake moustache" + desc = "Warning: moustache is fake." icon_state = "fake-moustache" \ No newline at end of file diff --git a/code/defines/obj/clothing/shoes.dm b/code/modules/clothing/shoes.dm similarity index 96% rename from code/defines/obj/clothing/shoes.dm rename to code/modules/clothing/shoes.dm index eb873472f7a..d83cecfa01b 100644 --- a/code/defines/obj/clothing/shoes.dm +++ b/code/modules/clothing/shoes.dm @@ -1,162 +1,162 @@ -// OMG SHOES - -/obj/item/clothing/shoes - name = "shoes" - icon = 'shoes.dmi' - desc = "Comfortable-looking shoes." - - body_parts_covered = FEET - - protective_temperature = 500 - heat_transfer_coefficient = 0.10 - permeability_coefficient = 0.50 - slowdown = SHOES_SLOWDOWN - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) - - -/obj/item/clothing/shoes/syndigaloshes - desc = "A pair of brown shoes. They seem to have extra grip." - name = "Brown Shoes" - icon_state = "brown" - item_state = "brown" - permeability_coefficient = 0.05 - flags = NOSLIP - origin_tech = "syndicate=3" - var/list/clothing_choices = list() - -/obj/item/clothing/shoes/syndigaloshes/all - -/obj/item/clothing/shoes/black - name = "Black Shoes" - icon_state = "black" - color = "black" - desc = "A pair of black shoes." - - redcoat - color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way. - -/obj/item/clothing/shoes/brown - name = "Brown Shoes" - desc = "A pair of brown shoes." - icon_state = "brown" - color = "brown" - - captain - color = "captain" //Exists for washing machines. Is not different from brown shoes in any way. - hop - color = "hop" //Exists for washing machines. Is not different from brown shoes in any way. - ce - color = "chief" //Exists for washing machines. Is not different from brown shoes in any way. - rd - color = "director" //Exists for washing machines. Is not different from brown shoes in any way. - cmo - color = "medical" //Exists for washing machines. Is not different from brown shoes in any way. - cmo - color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way. - -/obj/item/clothing/shoes/blue - name = "Blue Shoes" - icon_state = "blue" - color = "blue" - -/obj/item/clothing/shoes/green - name = "Green Shoes" - icon_state = "green" - color = "green" - -/obj/item/clothing/shoes/yellow - name = "Yellow Shoes" - icon_state = "yellow" - color = "yellow" - -/obj/item/clothing/shoes/mime - name = "Mime Shoes" - icon_state = "mime" - color = "mime" - -/obj/item/clothing/shoes/purple - name = "Purple Shoes" - icon_state = "purple" - color = "purple" - -/obj/item/clothing/shoes/brown - name = "Brown Shoes" - icon_state = "brown" - color = "brown" - -/obj/item/clothing/shoes/orange - name = "Orange Shoes" - icon_state = "orange" - var/chained = 0 - color = "orange" - -/obj/item/clothing/shoes/swat - name = "SWAT shoes" - desc = "When you want to turn up the heat." - icon_state = "swat" - armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) - flags = NOSLIP - -/obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes. - name = "combat boots" - desc = "When you REALLY want to turn up the heat" - icon_state = "swat" - armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) - flags = NOSLIP - -/obj/item/clothing/shoes/space_ninja - name = "ninja shoes" - desc = "A pair of running shoes. Excellent for running and even better for smashing skulls." - icon_state = "s-ninja" - protective_temperature = 700 - permeability_coefficient = 0.01 - flags = NOSLIP - armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - -/obj/item/clothing/shoes/white - name = "White Shoes" - icon_state = "white" - permeability_coefficient = 0.25 - color = "white" - -/obj/item/clothing/shoes/sandal - desc = "A pair of rather plain, wooden sandals." - name = "sandals" - icon_state = "wizard" - -/obj/item/clothing/shoes/sandal/marisa - desc = "A pair of magic, black shoes." - name = "Magic Shoes" - icon_state = "black" - -/obj/item/clothing/shoes/galoshes - desc = "Rubber boots" - name = "galoshes" - icon_state = "galoshes" - permeability_coefficient = 0.05 - flags = NOSLIP - slowdown = SHOES_SLOWDOWN+1 - -/obj/item/clothing/shoes/magboots - desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle." - name = "magboots" - icon_state = "magboots0" - protective_temperature = 800 - heat_transfer_coefficient = 0.01 - var/magpulse = 0 -// flags = NOSLIP //disabled by default - -/obj/item/clothing/shoes/clown_shoes - desc = "The prankster's standard-issue clowning shoes. Damn they're huge!" - name = "clown shoes" - icon_state = "clown" - item_state = "clown_shoes" - slowdown = SHOES_SLOWDOWN+1 - color = "clown" - -/obj/item/clothing/shoes/jackboots - name = "Jackboots" - desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time." - icon_state = "jackboots" - item_state = "jackboots" +// OMG SHOES + +/obj/item/clothing/shoes + name = "shoes" + icon = 'shoes.dmi' + desc = "Comfortable-looking shoes." + + body_parts_covered = FEET + + protective_temperature = 500 + heat_transfer_coefficient = 0.10 + permeability_coefficient = 0.50 + slowdown = SHOES_SLOWDOWN + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0) + + +/obj/item/clothing/shoes/syndigaloshes + desc = "A pair of brown shoes. They seem to have extra grip." + name = "Brown Shoes" + icon_state = "brown" + item_state = "brown" + permeability_coefficient = 0.05 + flags = NOSLIP + origin_tech = "syndicate=3" + var/list/clothing_choices = list() + +/obj/item/clothing/shoes/syndigaloshes/all + +/obj/item/clothing/shoes/black + name = "Black Shoes" + icon_state = "black" + color = "black" + desc = "A pair of black shoes." + + redcoat + color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way. + +/obj/item/clothing/shoes/brown + name = "Brown Shoes" + desc = "A pair of brown shoes." + icon_state = "brown" + color = "brown" + + captain + color = "captain" //Exists for washing machines. Is not different from brown shoes in any way. + hop + color = "hop" //Exists for washing machines. Is not different from brown shoes in any way. + ce + color = "chief" //Exists for washing machines. Is not different from brown shoes in any way. + rd + color = "director" //Exists for washing machines. Is not different from brown shoes in any way. + cmo + color = "medical" //Exists for washing machines. Is not different from brown shoes in any way. + cmo + color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way. + +/obj/item/clothing/shoes/blue + name = "Blue Shoes" + icon_state = "blue" + color = "blue" + +/obj/item/clothing/shoes/green + name = "Green Shoes" + icon_state = "green" + color = "green" + +/obj/item/clothing/shoes/yellow + name = "Yellow Shoes" + icon_state = "yellow" + color = "yellow" + +/obj/item/clothing/shoes/mime + name = "Mime Shoes" + icon_state = "mime" + color = "mime" + +/obj/item/clothing/shoes/purple + name = "Purple Shoes" + icon_state = "purple" + color = "purple" + +/obj/item/clothing/shoes/brown + name = "Brown Shoes" + icon_state = "brown" + color = "brown" + +/obj/item/clothing/shoes/orange + name = "Orange Shoes" + icon_state = "orange" + var/chained = 0 + color = "orange" + +/obj/item/clothing/shoes/swat + name = "SWAT shoes" + desc = "When you want to turn up the heat." + icon_state = "swat" + armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) + flags = NOSLIP + +/obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes. + name = "combat boots" + desc = "When you REALLY want to turn up the heat" + icon_state = "swat" + armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) + flags = NOSLIP + +/obj/item/clothing/shoes/space_ninja + name = "ninja shoes" + desc = "A pair of running shoes. Excellent for running and even better for smashing skulls." + icon_state = "s-ninja" + protective_temperature = 700 + permeability_coefficient = 0.01 + flags = NOSLIP + armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + +/obj/item/clothing/shoes/white + name = "White Shoes" + icon_state = "white" + permeability_coefficient = 0.25 + color = "white" + +/obj/item/clothing/shoes/sandal + desc = "A pair of rather plain, wooden sandals." + name = "sandals" + icon_state = "wizard" + +/obj/item/clothing/shoes/sandal/marisa + desc = "A pair of magic, black shoes." + name = "Magic Shoes" + icon_state = "black" + +/obj/item/clothing/shoes/galoshes + desc = "Rubber boots" + name = "galoshes" + icon_state = "galoshes" + permeability_coefficient = 0.05 + flags = NOSLIP + slowdown = SHOES_SLOWDOWN+1 + +/obj/item/clothing/shoes/magboots + desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle." + name = "magboots" + icon_state = "magboots0" + protective_temperature = 800 + heat_transfer_coefficient = 0.01 + var/magpulse = 0 +// flags = NOSLIP //disabled by default + +/obj/item/clothing/shoes/clown_shoes + desc = "The prankster's standard-issue clowning shoes. Damn they're huge!" + name = "clown shoes" + icon_state = "clown" + item_state = "clown_shoes" + slowdown = SHOES_SLOWDOWN+1 + color = "clown" + +/obj/item/clothing/shoes/jackboots + name = "Jackboots" + desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time." + icon_state = "jackboots" + item_state = "jackboots" color = "hosred" \ No newline at end of file diff --git a/code/modules/clothing/spacesuit.dm b/code/modules/clothing/spacesuit.dm index bc704bf2e30..b2236db28a0 100644 --- a/code/modules/clothing/spacesuit.dm +++ b/code/modules/clothing/spacesuit.dm @@ -13,6 +13,7 @@ Space suit parts item_state = "space" permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES /obj/item/clothing/suit/space @@ -30,4 +31,5 @@ Space suit parts allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) slowdown = 3 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT diff --git a/code/modules/clothing/spacesuits/captain.dm b/code/modules/clothing/spacesuits/captain.dm index 9569ff7b8de..720db8724c6 100644 --- a/code/modules/clothing/spacesuits/captain.dm +++ b/code/modules/clothing/spacesuits/captain.dm @@ -24,3 +24,4 @@ allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) slowdown = 1.5 armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 133d876d65e..05f5c5cf26c 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -2,23 +2,7 @@ allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/policetaperoll) body_parts_covered = UPPER_TORSO|LOWER_TORSO flags = FPRINT | TABLEPASS - - -/obj/item/clothing/head/helmet - name = "helmet" - desc = "Standard Security gear. Protects the head from impacts." - icon_state = "helmet" - flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES - item_state = "helmet" - armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0) - protective_temperature = 500 - heat_transfer_coefficient = 0.10 - - -/obj/item/clothing/head/helmet/warden - name = "Warden Hat" - desc = "A special helmet issued to the Warden of a securiy force. Protects the head from impacts." - icon_state = "policehelm" + flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/armor/vest @@ -38,6 +22,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS slowdown = 1 armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/armor/bulletproof @@ -63,6 +48,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO flags = FPRINT | TABLEPASS | ONESIZEFITSALL allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/policetaperoll) + flags_inv = 0 /obj/item/clothing/suit/armor/reactive name = "Reactive Teleport Armor" diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index ca81db8a167..95cbc7f28bf 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -5,6 +5,7 @@ permeability_coefficient = 0.01 flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 10) + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -20,6 +21,7 @@ slowdown = 1.0 allowed = list(/obj/item/weapon/tank/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/suits/bomb.dm b/code/modules/clothing/suits/bomb.dm index 9e341caec43..07329b71fbe 100644 --- a/code/modules/clothing/suits/bomb.dm +++ b/code/modules/clothing/suits/bomb.dm @@ -4,6 +4,7 @@ icon_state = "bombsuit" flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES /obj/item/clothing/suit/bomb_suit name = "bomb suit" @@ -18,6 +19,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS slowdown = 2 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) + flags_inv = HIDEJUMPSUIT /obj/item/clothing/head/bomb_hood/security diff --git a/code/modules/clothing/suits/fire.dm b/code/modules/clothing/suits/fire.dm index 9656b91e866..42dc200379a 100644 --- a/code/modules/clothing/suits/fire.dm +++ b/code/modules/clothing/suits/fire.dm @@ -11,6 +11,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher) slowdown = 1.0 + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/fire/firefighter @@ -50,3 +51,4 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) + flags_inv = HIDEJUMPSUIT diff --git a/code/modules/clothing/suits/heavy.dm b/code/modules/clothing/suits/heavy.dm index dfe197e4c6f..3ff5743048a 100644 --- a/code/modules/clothing/suits/heavy.dm +++ b/code/modules/clothing/suits/heavy.dm @@ -7,6 +7,7 @@ w_class = 4//bulky item body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/armor/heavy name = "heavy armor" @@ -17,9 +18,11 @@ gas_transfer_coefficient = 0.90 body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS slowdown = 3 + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/armor/tdome body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/armor/tdome/red name = "Thunderdome suit (red)" @@ -47,6 +50,7 @@ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/storage/officer name = "officer jacket" @@ -62,6 +66,7 @@ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0) + flags_inv = 0 /obj/item/clothing/suit/storage/armoredundersuit name = "armoured undersuit" @@ -72,5 +77,6 @@ flags = FPRINT | TABLEPASS | ONESIZEFITSALL allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/policetaperoll) armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + flags_inv = 0 diff --git a/code/modules/clothing/suits/hos.dm b/code/modules/clothing/suits/hos.dm index eb3acd33986..7c425a7afdd 100644 --- a/code/modules/clothing/suits/hos.dm +++ b/code/modules/clothing/suits/hos.dm @@ -1,10 +1,10 @@ - /obj/item/clothing/head/helmet/HoS name = "Head of Security Hat" desc = "The hat of the Head of Security. For showing the officers who's in charge." icon_state = "hoscap" flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) + flags_inv = HIDEEARS /obj/item/clothing/head/helmet/HoS/dermal name = "Dermal Armour Patch" @@ -19,6 +19,7 @@ item_state = "hos" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/armor/hos/jensen @@ -26,3 +27,4 @@ desc = "A trenchoat augmented with a special alloy for some protection and style" icon_state = "jensencoat" item_state = "jensencoat" + flags_inv = 0 diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 2d7b0996b54..dec43bde75f 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -4,6 +4,7 @@ icon_state = "straight_jacket" item_state = "straight_jacket" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/storage/wcoat @@ -66,6 +67,7 @@ w_class = 3 flags = FPRINT | TABLEPASS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy) + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/storage/captunic @@ -74,6 +76,7 @@ icon_state = "captunic" item_state = "bio_suit" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/nun @@ -82,6 +85,7 @@ icon_state = "nun" item_state = "nun" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS + flags_inv = HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/monk name = "monk's robe" @@ -104,6 +108,7 @@ icon_state = "hastur" item_state = "hastur" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/imperium_monk @@ -112,6 +117,7 @@ icon_state = "imperium_monk" item_state = "imperium_monk" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + flags_inv = HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/chickensuit @@ -120,6 +126,7 @@ icon_state = "chickensuit" item_state = "chickensuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HEAD + flags_inv = HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/monkeysuit @@ -128,6 +135,7 @@ icon_state = "monkeysuit" item_state = "monkeysuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/clothing/suit/holidaypriest @@ -136,5 +144,6 @@ icon_state = "holidaypriest" item_state = "holidaypriest" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT diff --git a/code/modules/clothing/suits/robe.dm b/code/modules/clothing/suits/robe.dm index 7f9cd4d9879..1cc084da0f6 100644 --- a/code/modules/clothing/suits/robe.dm +++ b/code/modules/clothing/suits/robe.dm @@ -37,6 +37,7 @@ body_parts_covered = FULL_BODY //It's magic, I ain't gotta explain shit. --NEO armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20) allowed = list(/obj/item/weapon/teleportation_scroll) + flags_inv = HIDEJUMPSUIT /obj/item/clothing/suit/wizrobe/red diff --git a/code/modules/clothing/uniforms/lawyer.dm b/code/modules/clothing/uniforms/lawyer.dm index 2fe4d31263e..426e3e51e1e 100644 --- a/code/modules/clothing/uniforms/lawyer.dm +++ b/code/modules/clothing/uniforms/lawyer.dm @@ -5,6 +5,7 @@ desc = "Slick threads." name = "Lawyer suit" flags = FPRINT | TABLEPASS + flags_inv = HIDEJUMPSUIT /obj/item/clothing/under/lawyer/black diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 78a3c7f2b8b..cc75597ada4 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,210 +1,475 @@ /mob/living/carbon/human/examine() - set src in view() + set src in oview() - usr << "\blue *---------*" + if(!usr || !src) return + if(((usr.disabilities & 128) || usr.blinded || usr.stat) && !(istype(usr,/mob/dead/observer/))) + usr << "Something is there but you can't see it." + return - usr << "\blue This is \icon[src.icon] [src.name]!" - - // crappy hack because you can't do \his[src] etc - var/t_his = "its" - var/t_him = "it" - if (src.gender == MALE) - t_his = "his" - t_him = "him" - else if (src.gender == FEMALE) - t_his = "her" - t_him = "her" - - if (src.w_uniform) - if (src.w_uniform.blood_DNA) - usr << "\red [src.name] is wearing a[src.w_uniform.blood_DNA ? " bloody " : " "] \icon[src.w_uniform] [src.w_uniform.name]!" - else - usr << "\blue [src.name] is wearing a \icon[src.w_uniform] [src.w_uniform.name]." - - if (src.handcuffed) - usr << "\blue [src.name] is \icon[src.handcuffed] handcuffed!" + var/skipgloves = 0 + var/skipsuitstorage = 0 + var/skipjumpsuit = 0 + var/skipshoes = 0 + var/skipmask = 0 + var/skipears = 0 + var/skipeyes = 0 + //exosuits and helmets obscure our view and stuff. if (src.wear_suit) - if (src.wear_suit.blood_DNA) - usr << "\red [src.name] has a[src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name] on!" - else - usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on." - - if (src.l_ear) - usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear." - - if (src.r_ear) - usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear." - - if (src.wear_mask) - if (src.wear_mask.blood_DNA) - usr << "\red [src.name] has a[src.wear_mask.blood_DNA ? " bloody " : " "] \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face!" - else - usr << "\blue [src.name] has a \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face." + skipgloves = src.wear_suit.flags_inv & HIDEGLOVES + skipsuitstorage = src.wear_suit.flags_inv & HIDESUITSTORAGE + skipjumpsuit = src.wear_suit.flags_inv & HIDEJUMPSUIT + skipshoes = src.wear_suit.flags_inv & HIDESHOES if (src.head) - usr << "\blue [src.name] is wearing a[src.head.blood_DNA ? " bloody " : " "] \icon[src.head] [src.head.name] on [t_his] head!" + skipmask = src.head.flags_inv & HIDEMASK + skipeyes = src.head.flags_inv & HIDEEYES + skipears = src.head.flags_inv & HIDEEARS - if (src.glasses) - usr << "\blue [src.name] is wearing a pair of [src.glasses.blood_DNA ? " bloody " : " "] \icon[src.glasses] [src.glasses.name]!" + // crappy hacks because you can't do \his[src] etc. I'm sorry this proc is so unreadable, blame the text macros :< + var/t_He = "It" //capitalised for use at the start of each line. + var/t_his = "its" + var/t_him = "it" + var/t_has = "has" + var/t_is = "is" + var/msg = "*---------*\nThis is " + if( skipjumpsuit && (wear_mask || skipmask) ) //big suits/masks make it hard to tell their gender + t_He = "They" + t_his = "their" + t_him = "them" + t_has = "have" + t_is = "are" + else + if(src.icon) + msg += "\icon[src.icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated + switch(src.gender) + if(MALE) + t_He = "He" + t_his = "his" + t_him = "him" + if(FEMALE) + t_He = "She" + t_his = "her" + t_him = "her" + msg += "\a [src]!\n" + + //uniform + if (src.w_uniform && !skipjumpsuit) + if (src.w_uniform.blood_DNA) + msg += "[t_He] [t_is] wearing \icon[src.w_uniform] [src.w_uniform.gender==PLURAL?"some":"a"] blood-stained [src.w_uniform.name]!\n" + else + msg += "[t_He] [t_is] wearing \icon[src.w_uniform] \a [src.w_uniform].\n" + + //head + if (src.head) + if (src.head.blood_DNA) + msg += "[t_He] [t_is] wearing \icon[src.head] [src.head.gender==PLURAL?"some":"a"] blood-stained [src.head.name] on [t_his] head!\n" + else + msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head.\n" + + //suit/armour + if (src.wear_suit) + if (src.wear_suit.blood_DNA) + msg += "[t_He] [t_is] wearing \icon[src.wear_suit] [src.wear_suit.gender==PLURAL?"some":"a"] blood-stained [src.wear_suit.name]!\n" + else + msg += "[t_He] [t_is] wearing \icon[src.wear_suit] \a [src.wear_suit].\n" + + //suit/armour storage + if(src.s_store && !skipsuitstorage) + if(src.s_store.blood_DNA) + msg += "[t_He] [t_is] carrying \icon[src.s_store] [src.s_store.gender==PLURAL?"some":"a"] blood-stained [src.s_store.name] on [t_his] [src.wear_suit.name]!\n" + else + msg += "[t_He] [t_is] carrying \icon[src.s_store] \a [src.s_store] on [t_his] [src.wear_suit.name].\n" + + //back + if (src.back) + if (src.back.blood_DNA) + msg += "[t_He] [t_has] \icon[src.back] [src.back.gender==PLURAL?"some":"a"] blood-stained [src.back] on [t_his] back.\n" + else + msg += "[t_He] [t_has] \icon[src.back] \a [src.back] on [t_his] back.\n" + + //left hand if (src.l_hand) if (src.l_hand.blood_DNA) - usr << "\red [src.name] has a[src.l_hand.blood_DNA ? " bloody " : " "] \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand!" + msg += "[t_He] [t_is] holding \icon[src.l_hand] [src.l_hand.gender==PLURAL?"some":"a"] blood-stained [src.l_hand.name] in [t_his] left hand!\n" else - usr << "\blue [src.name] has a \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand." + msg += "[t_He] [t_is] holding \icon[src.l_hand] \a [src.l_hand] in [t_his] left hand.\n" + //right hand if (src.r_hand) if (src.r_hand.blood_DNA) - usr << "\red [src.name] has a[src.r_hand.blood_DNA ? " bloody " : " "] \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand!" + msg += "[t_He] [t_is] holding \icon[src.r_hand] [src.r_hand.gender==PLURAL?"some":"a"] blood-stained [src.r_hand.name] in [t_his] right hand!\n" else - usr << "\blue [src.name] has a \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand." + msg += "[t_He] [t_is] holding \icon[src.r_hand] \a [src.r_hand] in [t_his] right hand.\n" + //gloves + if (src.gloves && !skipgloves) + if (src.gloves.blood_DNA) + msg += "[t_He] [t_has] \icon[src.gloves] [src.gloves.gender==PLURAL?"some":"a"] blood-stained [src.gloves.name] on [t_his] hands!\n" + else + msg += "[t_He] [t_has] \icon[src.gloves] \a [src.gloves] on [t_his] hands.\n" + else if (src.blood_DNA) + msg += "[t_He] [t_has] blood-stained hands!\n" + + //handcuffed? + if (src.handcuffed) + msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n" + + //belt if (src.belt) if (src.belt.blood_DNA) - usr << "\red [src.name] has a[src.belt.blood_DNA ? " bloody " : " "] \icon[src.belt] [src.belt.name] on [t_his] belt!" + msg += "[t_He] [t_has] \icon[src.belt] [src.belt.gender==PLURAL?"some":"a"] blood-stained [src.belt.name] about [t_his] waist!\n" else - usr << "\blue [src.name] has a \icon[src.belt] [src.belt.name] on [t_his] belt." - if(src.s_store) - if(src.s_store.blood_DNA) - usr << "\red [src.name] has a[src.s_store.blood_DNA ? " bloody " : " "] \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]!" + msg += "[t_He] [t_has] \icon[src.belt] \a [src.belt] about [t_his] waist.\n" + + //shoes + if (src.shoes && !skipshoes) + if(src.shoes.blood_DNA) + msg += "[t_He] [t_is] wearing \icon[src.shoes] [src.shoes.gender==PLURAL?"some":"a"] blood-stained [src.shoes.name] on [t_his] feet!\n" else - usr << "\blue [src.name] has a \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]." - if (src.shoes) - usr << "[src.shoes.blood_DNA ? "\red" : "\blue"] [src.name] has a[src.shoes.blood_DNA ? " bloody " : " "] \icon[src.shoes] [src.shoes.name] on [t_his] feet." + msg += "[t_He] [t_is] wearing \icon[src.shoes] \a [src.shoes] on [t_his] feet.\n" - - if (src.gloves) - if (src.gloves.blood_DNA) - usr << "\red [src.name] has bloody \icon[src.gloves] [src.gloves.name] on [t_his] hands!" + //mask + if (src.wear_mask && !skipmask) + if (src.wear_mask.blood_DNA) + msg += "[t_He] [t_has] \icon[src.wear_mask] [src.wear_mask.gender==PLURAL?"some":"a"] blood-stained [src.wear_mask.name] on [t_his] face!\n" else - usr << "\blue [src.name] has \icon[src.gloves] [src.gloves.name] on [t_his] hands." - else if (src.blood_DNA) - usr << "\red [src.name] has bloody hands!" + msg += "[t_He] [t_has] \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n" - if (src.back) - usr << "\blue [src.name] has a \icon[src.back] [src.back.name] on [t_his] back." + //eyes + if (src.glasses && !skipeyes) + if (src.glasses.blood_DNA) + msg += "[t_He] [t_has] \icon[src.glasses] [src.glasses.gender==PLURAL?"some":"a"] blood-stained [src.glasses] covering [t_his] eyes!\n" + else + msg += "[t_He] [t_has] \icon[src.glasses] \a [src.glasses] covering [t_his] eyes.\n" + if (src.l_ear && !skipears) + msg += "[t_He] [t_has] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear.\n" + + if (src.r_ear && !skipears) + msg += "[t_He] [t_has] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear.\n" + + //ID if (src.wear_id) var/id - var/photo = 0 - if(istype(src:wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = src:wear_id + if(istype(src.wear_id, /obj/item/device/pda)) + var/obj/item/device/pda/pda = src.wear_id id = pda.owner + else if(istype(src.wear_id, /obj/item/weapon/card/id)) //just in case something other than a PDA/ID card somehow gets in the ID slot :[ + var/obj/item/weapon/card/id/idcard = src.wear_id + id = idcard.registered_name + if (id && (id != src.real_name) && (get_dist(src, usr) <= 1) && prob(10)) + msg += "[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id] yet something doesn't seem right...\n" else - id = src.wear_id.registered_name - if (src.wear_id.PHOTO) - photo = 1 - if (id != src.real_name && in_range(src, usr)) - if (photo) - usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!" - else - usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!" - else - if (photo) - usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo." - else - usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]." - + msg += "[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id].\n" + //Jitters if (src.is_jittery) - switch(src.jitteriness) - if(300 to INFINITY) - usr << "\red [src] is violently convulsing." - if(200 to 300) - usr << "\red [src] looks extremely jittery." - if(100 to 200) - usr << "\red [src] is twitching ever so slightly." + if(src.jitteriness >= 300) + msg += "[t_He] [t_is] convulsing violently!\n" + else if(src.jitteriness >= 200) + msg += "[t_He] [t_is] extremely jittery.\n" + else if(src.jitteriness >= 100) + msg += "[t_He] [t_is] twitching ever so slightly.\n" if (src.suiciding) - switch(src.suiciding) - if(1) - usr << "\red [src.name] appears to have bitten [t_his] tongue off!" + msg += "[t_He] [t_has] bitten off [t_his] own tongue and [t_has] suffered major bloodloss!\n" var/distance = get_dist(usr,src) if(istype(usr, /mob/dead/observer) || usr.stat == 2) // ghosts can see anything distance = 1 if (src.stat == 1 || stat == 2) - usr << "\red [name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep." + msg += "[name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep.\n" if((!isbreathing || holdbreath) && distance <= 3) - usr << "\red [name] does not appear to be breathing." + msg += "[name] does not appear to be breathing.\n" if(istype(usr, /mob/living/carbon/human) && usr.stat == 0 && src.stat == 1 && distance <= 1) for(var/mob/O in viewers(usr.loc, null)) O.show_message("[usr] checks [src]'s pulse.", 1) - sleep(15) - usr << "\blue [name] has a pulse!" + spawn(15) + usr << "\blue [name] has a pulse!" if (src.stat == 2 || (changeling && changeling.changeling_fakedeath == 1)) if(distance <= 1) if(istype(usr, /mob/living/carbon/human) && usr.stat == 0) for(var/mob/O in viewers(usr.loc, null)) O.show_message("[usr] checks [src]'s pulse.", 1) - sleep(15) - usr << "\red [name] has no pulse!" + spawn(15) + usr << "\red [name] has no pulse!" - if (src.getBruteLoss()) +/* if (src.getBruteLoss()) if (src.getBruteLoss() < 30) usr << "\red [src.name] looks slightly injured!" else - usr << "\red [src.name] looks severely injured!" + usr << "\red [src.name] looks severely injured!"*/ - if (src.getCloneLoss()) - if (src.getCloneLoss() < 30) - usr << "\red [src.name] looks slightly... unfinished?" + if (src.cloneloss) + if (src.cloneloss < 30) + msg += "[src.name] looks slightly... unfinished?\n" else - usr << "\red [src.name] looks very... unfinished?" + msg += "[src.name] looks very... unfinished?
\n" - if (src.getFireLoss()) +/* if (src.getFireLoss()) if (src.getFireLoss() < 30) usr << "\red [src.name] looks slightly burned!" else - usr << "\red [src.name] looks severely burned!" - + usr << "\red [src.name] looks severely burned!"*/ + msg += "" if (src.nutrition < 100) - usr << "\red [src.name] looks like flesh and bones." + msg += "[t_He] [t_is] severely malnourished.\n" else if (src.nutrition >= 500) if (usr.nutrition < 100) - usr << "\red [src.name] looks very round and delicious. Like a little piggy. A tasty piggy." + msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n" else - usr << "\blue [src.name] looks quite chubby." + msg += "[t_He] [t_is] quite chubby.\n" - if(!stat) - if (src.getBrainLoss() >= 60) - usr << "\red [src.name] has a stupid expression on [t_his] face." + msg += "" + + + if (src.getBrainLoss() >= 60 && !stat) + msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" if (!src.client) - usr << "\red [src.name] doesn't seem as though they want to talk." + msg += "[t_He] [t_has] a vacant, braindead stare...\n" - spawn(10) // I think we might be overloading the clients. - for(var/named in organs) - var/datum/organ/external/temp = organs[named] - if(temp) - if(temp.destroyed) - usr << "\red [src.name] is missing [t_his] [temp.display_name]." - if(temp.wounds) - for(var/datum/organ/external/wound/w in temp.wounds) - var/size = w.wound_size - var/sizetext - switch(size) + var/list/wound_descriptions = list() + var/list/wound_flavor_text = list() + for(var/named in organs) + var/datum/organ/external/temp = organs[named] + if(temp) + if(temp.destroyed) + wound_flavor_text["[temp.display_name]"] = "[src.name] is missing [t_his] [temp.display_name].\n" + continue + if(temp.wounds) + var/list/wounds = list(list(),list(),list(),list(),list(),list()) + for(var/datum/organ/wound/w in temp.wounds) + switch(w.healing_state) + if(0) + var/list/cut = wounds[1] + cut += w + wounds[1] = cut + if(1) + var/list/cut = wounds[2] + cut += w + wounds[2] = cut + if(2) + var/list/cut = wounds[3] + cut += w + wounds[3] = cut + if(3) + var/list/cut = wounds[4] + cut += w + wounds[4] = cut + if(4) + var/list/cut = wounds[5] + cut += w + wounds[5] = cut + if(5) + var/list/cut = wounds[6] + cut += w + wounds[6] = cut + wound_descriptions["[temp.display_name]"] = wounds + else + wound_flavor_text["[temp.display_name]"] = "" + //Now that we have a big list of all the wounds, on all the limbs. + var/list/is_bleeding = list() + for(var/named in wound_descriptions) + var/list/wound_states = wound_descriptions[named] + var/list/flavor_text = list() + for(var/i = 1, i <= 6, i++) + var/list/wound_state = wound_states[i] //All wounds at this level of healing. + var/list/tally = list("cut" = 0, "deep cut" = 0, "flesh wound" = 0, "gaping wound" = 0, "big gaping wound" = 0, "massive wound" = 0,\ + "tiny bruise" = 0, "small bruise" = 0, "moderate bruise" = 0, "large bruise" = 0, "huge bruise" = 0, "monumental bruise" = 0,\ + "small burn" = 0, "moderate burn" = 0, "large burn" = 0, "severe burn" = 0, "deep burn" = 0, "carbonised area" = 0) //How many wounds of what size. + for(var/datum/organ/wound/w in wound_state) + if(w.bleeding && !is_bleeding[named]) is_bleeding[named] = 1 + switch(w.wound_size) + if(1) + switch(w.wound_type) + if(0) + tally["cut"] += 1 if(1) - sizetext = "cut" + tally["tiny bruise"] += 1 if(2) - sizetext = "deep cut" - if(3) - sizetext = "flesh wound" - if(4) - sizetext = "gaping wound" - if(5) - sizetext = "big gaping wound" - if(6) - sizetext = "massive wound" - if(w.bleeding) - usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]." + tally["small burn"] += 1 + if(2) + switch(w.wound_type) + if(0) + tally["deep cut"] += 1 + if(1) + tally["small bruise"] += 1 + if(2) + tally["moderate burn"] += 1 + if(3) + switch(w.wound_type) + if(0) + tally["flesh wound"] += 1 + if(1) + tally["moderate bruise"] += 1 + if(2) + tally["large burn"] += 1 + if(4) + switch(w.wound_type) + if(0) + tally["gaping wound"] += 1 + if(1) + tally["large bruise"] += 1 + if(2) + tally["severe burn"] += 1 + if(5) + switch(w.wound_type) + if(0) + tally["big gaping wound"] += 1 + if(1) + tally["huge bruise"] += 1 + if(2) + tally["deep burn"] += 1 + if(6) + switch(w.wound_type) + if(0) + tally["massive wound"] += 1 + if(1) + tally["monumental bruise"] += 1 + if(2) + tally["carbonised area"] += 1 + for(var/tallied in tally) + if(!tally[tallied]) + continue + //if(flavor_text_string && tally[tallied]) + // for( + // flavor_text_string += pick(list(", as well as", ", in addition to")) //add more later. + var/tallied_rename = list("cut" = "cut","deep cut" = "deep cut", "flesh wound" = "flesh wound",\ + "gaping wound" = "gaping wound", "big gaping wound" = "big gaping wound", "massive wound" = "massive wound",\ + "tiny bruise" = "tiny bruise", "small bruise" = "small bruise", "moderate bruise" = "moderate bruise",\ + "large bruise" = "large bruise", "huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\ + "small burn" = "small burn", "moderate burn" = "moderate burn", "large burn" = "large burn",\ + "severe burn" = "severe burn", "deep burn" = "deep burn", "carbonised area" = "carbonised area") + switch(i) + if(2) //Healing wounds. + if(tallied in list("cut","tiny bruise","small burn")) continue + tallied_rename = list("deep cut" = "clotted cut", "flesh wound" = "small bandaged wound",\ + "gaping wound" = "bandaged wound", "big gaping wound" = "gauze wrapped wound",\ + "massive wound" = "massive blood soaked bandage", "small bruise" = "small bruise",\ + "moderate bruise" = "moderate bruise", "large bruise" = "large bruise",\ + "huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\ + "moderate burn" = "moderate salved burn", "large burn" = "large salved burn",\ + "severe burn" = "severe salved burn", "deep burn" = "deep salved burn",\ + "carbonised area" = "treated carbonised area") + if(3) + if(tallied in list("cut","tiny bruise","small burn")) + continue + tallied_rename = list("deep cut" = "fading cut", "flesh wound" = "small healing wound",\ + "gaping wound" = "healing wound", "big gaping wound" = "big healing wound",\ + "massive wound" = "massive healing wound", "small bruise" = "tiny bruise",\ + "moderate bruise" = "small bruise", "large bruise" = "moderate bruise",\ + "huge bruise" = "large bruise", "monumental bruise" = "huge bruise",\ + "moderate burn" = "healing moderate burn", "large burn" = "healing large burn",\ + "severe burn" = "healing severe burn", "deep burn" = "healing deep burn",\ + "carbonised area" = "slowly healing carbonised area") + if(4) + if(tallied in list("cut","deep cut","tiny bruise", "small bruise","small burn", "moderate burn")) + continue + tallied_rename = list("flesh wound" = "small red scar", "gaping wound" = "angry straight scar",\ + "big gaping wound" = "jagged angry scar", "massive wound" = "gigantic angry scar",\ + "moderate bruise" = "tiny bruise", "large bruise" = "small bruise",\ + "huge bruise" = "moderate bruise", "monumental bruise" = "large bruise",\ + "large burn" = "large burn scar", "severe burn" = "severe burn scar",\ + "deep burn" = "deep burn scar", "carbonised area" = "healing carbonised area") + if(5) + if(tallied in list("cut","deep cut","tiny bruise", "small bruise", "moderate bruise","small burn", "moderate burn")) + continue + tallied_rename = list("flesh wound" = "small scar", "gaping wound" = "straight scar",\ + "big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\ + "large bruise" = "tiny bruise",\ + "huge bruise" = "small bruise", "monumental bruise" = "moderate bruise",\ + "large burn" = "large burn scar", "severe burn" = "severe burn scar",\ + "deep burn" = "deep burn scar", "carbonised area" = "large scarred area") + if(6) + if(tallied in list("cut","deep cut","flesh wound","tiny bruise", "small bruise", "moderate bruise", "large bruise", "huge bruise","small burn", "moderate burn")) + continue + tallied_rename = list("gaping wound" = "straight scar",\ + "big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\ + "monumental bruise" = "tiny bruise",\ + "large burn" = "large burn scar", "severe burn" = "severe burn scar",\ + "deep burn" = "deep burn scar", "carbonised area" = "large scarred area") + var/list/no_exclude = list("gaping wound", "big gaping wound", "massive wound", "large bruise",\ + "huge bruise", "massive bruise", "severe burn", "large burn", "deep burn", "carbonised area") + switch(tally[tallied]) + if(1) + if(!flavor_text.len) + flavor_text += "[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]" + else + flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]" + if(2) + if(!flavor_text.len) + flavor_text += "[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s" + else + flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s" + if(3 to 5) + if(!flavor_text.len) + flavor_text += "[src] has several [tallied_rename[tallied]]s" + else + flavor_text += " several [tallied_rename[tallied]]s" + if(6 to INFINITY) + if(!flavor_text.len) + flavor_text += "[src] has a bunch of [tallied_rename[tallied]]s" + else + flavor_text += " a ton of [tallied_rename[tallied]]s" + if(flavor_text.len) + var/flavor_text_string = "" + for(var/text = 1, text <= flavor_text.len, text++) + if(text == flavor_text.len && flavor_text.len > 1) + flavor_text_string += ", and" + else if(flavor_text.len > 1) + flavor_text_string += "," + flavor_text_string += flavor_text[text] + flavor_text_string += " on [t_his] [named].
" + wound_flavor_text["[named]"] = flavor_text_string + if(wound_flavor_text["head"] && !skipmask && !(wear_mask && istype(wear_mask, /obj/item/clothing/mask/gas))) + msg += wound_flavor_text["head"] + else if(is_bleeding["head"]) + msg += "[src] has blood running down [t_his] face!\n" + if(wound_flavor_text["chest"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["chest"] + else if(is_bleeding["chest"]) + msg += "[src] has blood from under [t_his] clothing!\n" + if(wound_flavor_text["left arm"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["left arm"] + if(wound_flavor_text["left hand"] && !gloves && !skipgloves) + msg += wound_flavor_text["left hand"] + else if(is_bleeding["left hand"]) + msg += "[src] has blood running from under [t_his] gloves!\n" + if(wound_flavor_text["right arm"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["right arm"] + if(wound_flavor_text["right hand"] && !gloves && !skipgloves) + msg += wound_flavor_text["right hand"] + else if(is_bleeding["right hand"]) + msg += "[src] has blood running from under [t_his] gloves!\n" + if(wound_flavor_text["groin"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["groin"] + if(wound_flavor_text["left leg"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["left leg"] + if(wound_flavor_text["left foot"]&& !shoes && !skipshoes) + msg += wound_flavor_text["left foot"] + else if(is_bleeding["left foot"]) + msg += "[src] has blood running from [t_his] shoes!\n" + if(wound_flavor_text["right leg"] && !w_uniform && !skipjumpsuit) + msg += wound_flavor_text["right leg"] + if(wound_flavor_text["right foot"]&& !shoes && !skipshoes) + msg += wound_flavor_text["right foot"] + else if(is_bleeding["right foot"]) + msg += "[src] has blood running from [t_his] shoes!\n" - print_flavor_text() - usr << "\blue *---------*" +// if(w.bleeding) +// usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]." +// continue + + msg += print_flavor_text() + + msg += "\blue *---------*" + usr << msg diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 03d4081d01d..b1116d78ff6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -54,12 +54,13 @@ var/list/body_standing = list() var/list/body_lying = list() + var/organs2 = list() var/mutantrace = null var/bloodloss = 0 - var/debug_leftarm - var/debug_lefthand + var/datum/reagents/vessel + var/pale = 0 /mob/living/carbon/human/dummy real_name = "Test Dummy" @@ -75,25 +76,26 @@ if(!dna) dna = new /datum/dna(null) - new /datum/organ/external/chest(src) - new /datum/organ/external/groin(src) - new /datum/organ/external/head(src) - new /datum/organ/external/l_arm(src) - new /datum/organ/external/r_arm(src) - new /datum/organ/external/r_leg(src) - new /datum/organ/external/l_leg(src) + organs2 += new /datum/organ/external/chest(src) + organs2 += new /datum/organ/external/groin(src) + organs2 += new /datum/organ/external/head(src) + organs2 += new /datum/organ/external/l_arm(src) + organs2 += new /datum/organ/external/r_arm(src) + organs2 += new /datum/organ/external/r_leg(src) + organs2 += new /datum/organ/external/l_leg(src) var/datum/organ/external/part = new /datum/organ/external/l_hand(src) part.parent = organs["l_arm"] + organs2 += part part = new /datum/organ/external/l_foot(src) part.parent = organs["l_leg"] + organs2 += part part = new /datum/organ/external/r_hand(src) part.parent = organs["r_arm"] + organs2 += part part = new /datum/organ/external/r_foot(src) part.parent = organs["r_leg"] - - debug_leftarm = organs["l_arm"] - debug_lefthand = organs["l_hand"] + organs2 += part var/g = "m" if (gender == MALE) @@ -113,12 +115,47 @@ update_clothing() src << "\blue Your icons have been generated!" + vessel = new/datum/reagents(560) + vessel.my_atom = src + vessel.add_reagent("blood",560) + spawn(1) fixblood() + ..() /*var/known_languages = list() known_languages.Add("english")*/ // organStructure = new /obj/effect/organstructure/human(src) +/mob/living/carbon/human/proc/fixblood() + for(var/datum/reagent/blood/B in vessel.reagent_list) + if(B.id == "blood") + B.data = list("donor"=src,"viruses"=null,"blood_DNA"=dna.unique_enzymes,"blood_type"=dna.b_type,"resistances"=null,"trace_chem"=null,"virus2"=(virus2 ? virus2.getcopy() : null),"antibodies"=0) + +/mob/living/carbon/human/proc/drip(var/amt as num) + if(!amt) + return + var/turf/T = get_turf(src) + var/list/obj/effect/decal/cleanable/blood/drip/nums = list() + var/amm = 0.1 * amt + vessel.remove_reagent("blood",amm) + var/list/hax = list("1","2","3","4","5") + for(var/obj/effect/decal/cleanable/blood/drip/G in T) + nums += G + hax.Remove(G.icon_state) + if(nums.len >= 3) + var/obj/effect/decal/cleanable/blood/drip/D = pick(nums) + D.blood_DNA.len++ + D.blood_DNA[D.blood_DNA.len] = list(dna.unique_enzymes,dna.b_type) + if(virus2) + D.virus2 += virus2.getcopy() + return + var/obj/effect/decal/cleanable/blood/drip/this = new(T) + this.icon_state = pick(hax) + this.blood_DNA = list(list(dna.unique_enzymes,dna.b_type)) + this.blood_owner = src + if(virus2) + this.virus2 = virus2.getcopy() + /mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes) if ((!( yes ) || now_pushing)) return @@ -1392,6 +1429,9 @@ else stand_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) lying_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) + if(pale) + stand_icon.Blend(rgb(100,100,100)) + lying_icon.Blend(rgb(100,100,100)) if (underwear > 0) //if(!obese) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index ff2ebe92727..d5806a36423 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -90,9 +90,13 @@ emp_act if(!I || !user) return 0 var/datum/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting)) - var/hit_area = parse_zone(affecting.name) + var/hit_area = affecting.display_name - visible_message("\red [src] has been attacked in the [hit_area] with [I.name] by [user]!") + if(!affecting.destroyed) + visible_message("\red [src] has been attacked in the [hit_area] with [I.name] by [user]!") + else + user << "What [affecting]?" + return if((user != src) && check_shields(I.force, "the [I.name]")) return 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index afe1fe7f287..c200eb9e79d 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -186,7 +186,7 @@ // a.hallucinate(src) if(!handling_hal && hallucination > 20) spawn handle_hallucinations() //The not boring kind! - hallucination -= 2 + hallucination = max(hallucination - 2, 0) //if(health < 0) // for(var/obj/a in hallucinations) // del a @@ -766,6 +766,7 @@ handle_chemicals_in_body() if(reagents && stat != 2) reagents.metabolize(src) + if(vessel && stat != 2) vessel.metabolize(src) if(mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing @@ -861,6 +862,39 @@ emote("collapse") paralysis = 10 + if(stat < 2) + var/blood_volume = round(vessel.get_reagent_amount("blood")) + if(bloodloss) + drip(bloodloss) + if(!blood_volume) + bloodloss = 0 + else if(blood_volume > 448) + if(pale) + pale = 0 + update_body() + else if(blood_volume <= 448 && blood_volume > 336) + if(!pale) + pale = 1 + update_body() + var/word = pick("dizzy","woosey","faint") + src << "\red You feel [word]" + if(prob(1)) + var/word = pick("dizzy","woosey","faint") + src << "\red You feel [word]" + else if(blood_volume <= 336 && blood_volume > 244) + if(!pale) + pale = 1 + update_body() + eye_blurry += 6 + if(prob(15)) + paralysis += rand(1,3) + else if(blood_volume <= 244 && blood_volume > 122) + if(toxloss <= 100) + toxloss = 100 + else if(blood_volume <= 122) + death() + //src.unlock_medal("We're all sold out on blood", 0, "You bled to death..", "easy") + updatehealth() // health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) @@ -937,20 +971,21 @@ src << "\red Your face has become disfigured." face_op_stage = 0.0 warn_flavor_changed() + var/blood_max = 0 for(var/name in organs) var/datum/organ/external/temp = organs[name] if(!temp.bleeding) continue - else - if(prob(35)) - bloodloss += rand(1,10) + // else + // if(prob(35)) + // bloodloss += rand(1,10) if(temp.wounds) - for(var/datum/organ/external/wound/W in temp.wounds) - if(!temp.bleeding) - continue - else - if(prob(25)) - bloodloss++ + for(var/datum/organ/wound/W in temp.wounds) + if(W.wound_size && W.bleeding) + blood_max += W.wound_size + if(temp.destroyed && !temp.gauzed) + blood_max += 10 //Yer missing a fucking limb. + bloodloss = min(bloodloss+1,sqrt(blood_max)) if (eye_blind) eye_blind-- blinded = 1 @@ -1435,4 +1470,4 @@ snippets plcheck = t_plasma oxcheck = t_oxygen G.turf_add(T, G.total_moles()) -*/ \ No newline at end of file +*/ diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9f9ede58b22..b455df66060 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -175,8 +175,9 @@ affecting.heal_damage(1000, 1000) //fixes getting hit after ingestion, killing you when game updates organ health affecting.broken = 0 affecting.destroyed = 0 - for(var/datum/organ/external/wound/W in affecting.wounds) + for(var/datum/organ/wound/W in affecting.wounds) W.stopbleeding() + del(W) H.UpdateDamageIcon() H.update_body() //src.fireloss = 0 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index c00e769dd3c..8798f9bf339 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -56,6 +56,6 @@ P.on_hit(src,2) return 2 if(!P.nodamage) - apply_damage((P.damage/(absorb+1)), P.damage_type, used_weapon = P.name) + apply_damage((P.damage/(absorb+1)), P.damage_type, def_zone, sharp = 1, used_weapon = P.name) P.on_hit(src, absorb) return absorb \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f2afcbcd81e..c398c38dadd 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -389,6 +389,9 @@ memory() /mob/proc/update_flavor_text() + set src in usr + if(usr != src) + usr << "No." var/msg = input(usr,"Set the flavor text in your 'examine' verb. Don't metagame!","Flavor Text",html_decode(flavor_text)) as message|null if(msg != null) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 01464f1d570..4f81cb084c4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -121,8 +121,8 @@ proc/isorgan(A) zone = "head" if("mouth") zone = "head" - if("groin") - zone = "chest" +// if("groin") +// zone = "chest" return zone @@ -139,7 +139,7 @@ proc/isorgan(A) if(4 to 6) return "l_arm" if(7 to 9) return "r_arm" - if(prob(probability * 0.75)) return zone + if(prob(probability)) return zone return "chest" diff --git a/code/modules/mob/organ/organ.dm b/code/modules/mob/organ/organ.dm index 892d32419b7..5e4977c652f 100644 --- a/code/modules/mob/organ/organ.dm +++ b/code/modules/mob/organ/organ.dm @@ -45,7 +45,6 @@ burn_dam = 0 bandaged = 0 max_damage = 0 - wound_size = 0 max_size = 0 obj/item/weapon/implant/implant = null @@ -56,7 +55,8 @@ perma_dmg = 0 broken = 0 destroyed = 0 - destspawn + destspawn = 0 //Has it spawned the broken limb? + gauzed = 0 //Has the missing limb been patched? min_broken_damage = 30 datum/organ/external/parent damage_msg = "\red You feel a intense pain" @@ -81,22 +81,28 @@ if(owner) owner.pain(display_name, (brute+burn)*3, 1) if(sharp) - var/chance = rand(1,5) - var/nux = brute * chance + var/nux = brute * rand(10,15) if(brute_dam >= max_damage) if(prob(5 * brute)) - for(var/mob/M in viewers(owner)) - M.show_message("\red [owner.name]'s [display_name] flies off.") +// for(var/mob/M in viewers(owner)) +// M.show_message("\red [owner.name]'s [display_name] flies off.") destroyed = 1 droplimb() return else if(prob(nux)) - createwound(rand(1,5)) + createwound(max(1,min(6,round(brute/10) + rand(-1,1))),0,brute) owner << "You feel something wet on your [display_name]" - if((src.brute_dam + src.burn_dam + brute + burn) < src.max_damage) - src.brute_dam += brute - src.burn_dam += burn + if((brute_dam + burn_dam + brute + burn) < max_damage) + if(brute) + brute_dam += brute + if(prob(brute) && brute > 20 && !sharp) + createwound(rand(4,6),0,brute) + else if(!sharp) + createwound(max(1,min(6,round(brute/10) + rand(-1,1))),1,brute) + if(burn) + burn_dam += burn + createwound(max(1,min(6,round(burn/10) + rand(-1,1))),2,burn) else var/can_inflict = src.max_damage - (src.brute_dam + src.burn_dam) if(can_inflict) @@ -110,9 +116,11 @@ if (brute > 0) brute = can_inflict src.brute_dam += brute + if(!sharp) createwound(max(1,min(6,round(brute/10) + rand(-1,1))),1,brute) else burn = can_inflict src.burn_dam += burn + createwound(max(1,min(6,round(burn/10) + rand(-1,1))),2,burn) else return 0 @@ -126,8 +134,51 @@ proc/heal_damage(brute, burn, internal = 0) - brute_dam = max(0, brute_dam - brute) - burn_dam = max(0, burn_dam - burn) + var/brute_to_heal = 0 + var/brute_wounds = list() + var/burn_to_heal = 0 + var/burn_wounds = list() + for(var/datum/organ/wound/W in wounds) + if(W.wound_type > 1 && W.damage) + burn_to_heal += W.damage + burn_wounds += W + else if(W.damage) + brute_to_heal += W.damage + brute_wounds += W + if(brute && brute >= brute_to_heal) + for(var/datum/organ/wound/W in brute_wounds) + if(brute >= W.damage) + brute_dam -= W.damage + brute -= W.damage + W.damage = 0 + W.initial_dmg = 0 + W.stopbleeding() + else + W.damage -= brute + W.initial_dmg -= brute + else if(brute) + for(var/datum/organ/wound/W in brute_wounds) + W.damage = 0 + W.initial_dmg = 0 + W.stopbleeding() + brute_dam = 0 + if(burn && burn >= burn_to_heal) + for(var/datum/organ/wound/W in burn_wounds) + if(burn >= W.damage) + burn_dam -= W.damage + burn -= W.damage + W.damage = 0 + W.initial_dmg = 0 + W.stopbleeding() + else + W.damage -= burn + W.initial_dmg -= burn + else if(burn) + for(var/datum/organ/wound/W in burn_wounds) + W.damage = 0 + W.initial_dmg = 0 + W.stopbleeding() + burn_dam = 0 if(internal) broken = 0 perma_injury = 0 @@ -163,7 +214,7 @@ process() if(destroyed) - if(destspawn) + if(!destspawn) droplimb() return if(broken == 0) @@ -178,9 +229,7 @@ var/dmgmsg = "[damage_msg] in your [display_name]" owner << dmgmsg //owner.unlock_medal("Broke Yarrr Bones!", 0, "Break a bone.", "easy") - for(var/mob/M in viewers(owner)) - if(M != owner) - M.show_message("\red You hear a loud cracking sound coming from [owner.name].") + owner.visible_message("\red You hear a loud cracking sound coming from [owner.name].","\red Something feels like it shattered in your [display_name]!","You hear a sickening crack.") owner.emote("scream") broken = 1 wound = "broken" //Randomise in future @@ -250,11 +299,7 @@ if(owner:organs["r_hand"]) var/datum/organ/external/S = owner:organs["r_hand"] if(!S.destroyed) - var/obj/item/weapon/organ/r_hand/X = new(owner.loc, owner) - for(var/mob/M in viewers(owner)) - M.show_message("\red [owner.name]'s [X.name] flies off.") - var/lol2 = pick(cardinal) - step(X,lol2) + S.droplimb() var/lol = pick(cardinal) step(H,lol) destroyed = 1 @@ -263,11 +308,7 @@ if(owner:organs["l_hand"]) var/datum/organ/external/S = owner:organs["l_hand"] if(!S.destroyed) - var/obj/item/weapon/organ/l_hand/X = new(owner.loc, owner) - for(var/mob/M in viewers(owner)) - M.show_message("\red [owner.name]'s [X.name] flies off in arc.") - var/lol2 = pick(cardinal) - step(X,lol2) + S.droplimb() var/lol = pick(cardinal) step(H,lol) destroyed = 1 @@ -276,11 +317,7 @@ if(owner:organs["r_foot"]) var/datum/organ/external/S = owner:organs["r_foot"] if(!S.destroyed) - var/obj/item/weapon/organ/r_foot/X = new(owner.loc, owner) - for(var/mob/M in viewers(owner)) - M.show_message("\red [owner.name]'s [X.name] flies off flies off in arc.") - var/lol2 = pick(cardinal) - step(X,lol2) + S.droplimb() var/lol = pick(cardinal) step(H,lol) destroyed = 1 @@ -289,39 +326,155 @@ if(owner:organs["l_foot"]) var/datum/organ/external/S = owner:organs["l_foot"] if(!S.destroyed) - var/obj/item/weapon/organ/l_foot/X = new(owner.loc, owner) - for(var/mob/M in viewers(owner)) - M.show_message("\red [owner.name]'s [X.name] flies off.") - var/lol2 = pick(cardinal) - step(X,lol2) + S.droplimb() var/lol = pick(cardinal) step(H,lol) destroyed = 1 + if(HAND_RIGHT) + var/obj/item/weapon/organ/r_hand/X = new(owner.loc, owner) + for(var/mob/M in viewers(owner)) + M.show_message("\red [owner.name]'s [X.name] flies off in an arc.") + var/lol2 = pick(cardinal) + step(X,lol2) + destroyed = 1 + if(HAND_LEFT) + var/obj/item/weapon/organ/l_hand/X = new(owner.loc, owner) + for(var/mob/M in viewers(owner)) + M.show_message("\red [owner.name]'s [X.name] flies off in an arc.") + var/lol2 = pick(cardinal) + step(X,lol2) + destroyed = 1 + if(FOOT_RIGHT) + var/obj/item/weapon/organ/r_foot/X = new(owner.loc, owner) + for(var/mob/M in viewers(owner)) + M.show_message("\red [owner.name]'s [X.name] flies off in an arc.") + var/lol2 = pick(cardinal) + step(X,lol2) + destroyed = 1 + if(FOOT_LEFT) + var/obj/item/weapon/organ/l_foot/X = new(owner.loc, owner) + for(var/mob/M in viewers(owner)) + M.show_message("\red [owner.name]'s [X.name] flies off in an arc.") + var/lol2 = pick(cardinal) + step(X,lol2) + destroyed = 1 + destspawn = 1 + for(var/datum/organ/wound/W in wounds) + W.update_health() + del(W) + del(wounds) src.owner.update_clothing() - proc/createwound(var/size = 1) - if(ishuman(src.owner)) - var/datum/organ/external/wound/W = new(src) - W.bleeding = 1 - src.owner:bloodloss += 10 * size + proc/createwound(var/size = 1, var/type = 0, var/damage) + if(ishuman(owner)) + var/datum/organ/wound/W = new(src) + bleeding = !type //Sharp objects cause bleeding. + W.bleeding = !type +// owner:bloodloss += 10 * size + W.damage = damage + W.initial_dmg = damage + W.wound_type = type W.wound_size = size - W.owner = src.owner - src.wounds += W + W.owner = owner + W.parent = src + spawn W.start_close() //Let small cuts close themselves. + wounds += W -/datum/organ/external/wound +/datum/organ/wound name = "wound" - wound_size = 1 - icon_name = "wound" - display_name = "wound" - parent = null + var/wound_type = 0 //0 = cut, 1 = bruise, 2 = burn + var/damage = 0 //How much damage it caused. + var/initial_dmg = 0 + var/wound_size = 1 + var/datum/organ/external/parent + var/bleeding = 0 //You got wounded, of course it's bleeding. -- Scratch that. Rewrote it. + var/healing_state = 0 + + proc/start_close() + sleep(rand(1800,3000)) //3-5 minutes + if(prob(50) && wound_size == 1) + parent.wounds.Remove(src) + update_health(1) + del(src) + else if(prob(33) && wound_size < 3) + stopbleeding() + return + sleep(rand(1800,3000)) + if(wound_size == 1) //Small cuts heal in 3-10 minutes. + parent.wounds.Remove(src) + update_health(1) + del(src) + else if(prob(50) && wound_size < 5 && bleeding) + stopbleeding() + return + if(wound_size < 5 && bleeding) //Give it a chance to stop bleeding on it's own. + spawn(1) + sleep(1200) + if(prob(50)) + stopbleeding() + return + return proc/stopbleeding() - if(!src.bleeding) + if(healing_state) + return 0 +// owner:bloodloss -= 10 * src.wound_size + parent.bleeding = 0 + for(var/datum/organ/wound/W in parent) + if(W.bleeding && W != src) + parent.bleeding = 1 + bleeding = 0 + spawn become_scar() //spawn off the process of becoming a scar. + return 1 + + proc/become_scar() + healing_state = 1 //Patched + update_health(0.5) //Heals some. + + sleep(rand(1800,3000)) //3-5 minutes + + if(parent.owner.stat == 2) return - var/t = 10 * src.wound_size - src.owner:bloodloss -= t - src.bleeding = 0 - del(src) + if(prob(80) && wound_size < 2) //Small cuts heal. + update_health(1) + parent.wounds.Remove(src) + del(src) + + healing_state = 2 //Noticibly healing. + update_health(1) //Heals the rest of the way. + + sleep(rand(1800,3000)) //3-5 minutes + if(parent.owner.stat == 2) + return + if(prob(60) && wound_size < 3) //Cuts heal up + parent.wounds.Remove(src) + del(src) + healing_state = 3 //Angry red scar + sleep(rand(6000,9000)) //10-15 minutes + if(parent.owner.stat == 2) + return + if(prob(80) && wound_size < 4) //Minor wounds heal up fully. + parent.wounds.Remove(src) + del(src) + healing_state = 4 //Scar + sleep(rand(6000,9000)) //10-15 minutes + if(parent.owner.stat == 2) + return + if(prob(30) || wound_size < 4 || wound_type == 1) //Small chance for the scar to disappear, any small remaining wounds deleted. + parent.wounds.Remove(src) + del(src) + healing_state = 5 //Faded scar + return + + proc/update_health(var/percent = 1) + damage -= damage/percent //Remove that amount of the damage + if(wound_type > 1) + parent.burn_dam -= initial_dmg - damage + else + parent.brute_dam -= initial_dmg - damage + initial_dmg = damage //reset it for further updates. + parent.owner.updatehealth() + /**************************************************** INTERNAL ORGANS diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d3d4de16f5b..c388bba9795 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -464,7 +464,7 @@ mob/proc target_locked icon = 'icons/effects/Targeted.dmi' icon_state = "locked" - layer = 99 + layer = 17.9 // captured // icon = 'Captured.dmi' // layer = 99 diff --git a/code/setup.dm b/code/setup.dm index b514ae203c8..43a73c5fdc0 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -142,6 +142,15 @@ var/MAX_EXPLOSION_RANGE = 14 //turf-only flags #define NOJAUNT 1 +//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. +#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!! +#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!! +#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!! +#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!! +#define HIDEMASK 1 //APPLIES ONLY TO HELMETS!! +#define HIDEEARS 2 //APPLIES ONLY TO HELMETS!! +#define HIDEEYES 4 //APPLIES ONLY TO HELMETS!! + //Cant seem to find a mob bitflags area other than the powers one #define NOGRAV 1 @@ -279,4 +288,4 @@ var/static/list/scarySounds = list('thudswoosh.ogg','Taser.ogg','armbomb.ogg','h #define SEC_LEVEL_GREEN 0 #define SEC_LEVEL_BLUE 1 #define SEC_LEVEL_RED 2 -#define SEC_LEVEL_DELTA 3 \ No newline at end of file +#define SEC_LEVEL_DELTA 3 diff --git a/code/stylesheet.dm b/code/stylesheet.dm index b6a30e389da..66a2bbb36ec 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -122,4 +122,21 @@ h1.alert, h2.alert font-weight: bold; color: #f00; } + +.emote { font-style: italic;} + +.attack {color: #ff0000;} +.moderate {color: #CC0000;} +.disarm {color: #990000;} +.passive {color: #660000;} + +.danger {color: #ff0000; font-weight: bold;} +.warning {color: #ff0000; font-style: italic;} +.rose {color: #ff5050;} +.info {color: #0000CC;} +.notice {color: #000099;} + +.alien {color: #543354;} + +.newscaster {color: #800000;} "} diff --git a/icons/effects/drip.dmi b/icons/effects/drip.dmi new file mode 100644 index 00000000000..c78843e5863 Binary files /dev/null and b/icons/effects/drip.dmi differ