diff --git a/code/defines/mob/living/carbon/metroid.dm b/code/defines/mob/living/carbon/metroid.dm index 2d2cefc503e..c60d26fc748 100644 --- a/code/defines/mob/living/carbon/metroid.dm +++ b/code/defines/mob/living/carbon/metroid.dm @@ -9,6 +9,8 @@ voice_message = "skree!" say_message = "hums" + layer = 5 + health = 150 gender = NEUTER diff --git a/code/defines/obj/clothing/gimmick.dm b/code/defines/obj/clothing/gimmick.dm index c795cb0ebcd..5085e785f14 100644 --- a/code/defines/obj/clothing/gimmick.dm +++ b/code/defines/obj/clothing/gimmick.dm @@ -502,4 +502,4 @@ desc = "Gentleman, elite aboard!" icon_state = "bowler" item_state = "bowler" - flags = FPRINT | TABLEPASS | HEADSPACE + flags = FPRINT | TABLEPASS diff --git a/code/defines/obj/clothing/head.dm b/code/defines/obj/clothing/head.dm index d8e873497be..28593a0b785 100644 --- a/code/defines/obj/clothing/head.dm +++ b/code/defines/obj/clothing/head.dm @@ -10,14 +10,14 @@ name = "Radiation Hood" icon_state = "rad" desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation" - flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH + flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) /obj/item/clothing/head/bomb_hood name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH + flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR armor = list(melee = 20, bullet = 5, laser = 10,energy = 5, bomb = 100, bio = 0, rad = 0) /obj/item/clothing/head/bomb_hood/security @@ -30,7 +30,7 @@ icon_state = "bio" desc = "Keeps the germs from flying on your face." permeability_coefficient = 0.01 - flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH + flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) /obj/item/clothing/head/bio_hood/general @@ -90,7 +90,7 @@ desc = "An amish looking hat." icon_state = "tophat" item_state = "that" - flags = FPRINT|TABLEPASS|HEADSPACE + flags = FPRINT|TABLEPASS /obj/item/clothing/head/wizard name = "wizard hat" @@ -118,32 +118,32 @@ icon_state = "chef" item_state = "chef" desc = "The commander in chef's head wear." - flags = FPRINT | TABLEPASS | HEADSPACE + flags = FPRINT | TABLEPASS /obj/item/clothing/head/redcoat name = "Redcoat hat" icon_state = "redcoat" desc = "I guess it's a redhad." - flags = FPRINT | TABLEPASS | HEADSPACE + flags = FPRINT | TABLEPASS /obj/item/clothing/head/mailman name = "Mailman Hat" icon_state = "mailman" desc = "Right-on-time mail ervice head wear." - flags = FPRINT | TABLEPASS | HEADSPACE + 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 | HEADSPACE + 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 | HEADSPACE + flags = FPRINT | TABLEPASS // CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN. @@ -163,14 +163,14 @@ 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 + 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|SUITSPACE|HEADCOVERSEYES + flags = FPRINT|TABLEPASS|HEADCOVERSEYES item_state = "helmet" /obj/item/clothing/head/syndicatefake @@ -179,12 +179,13 @@ 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 + 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) @@ -192,7 +193,7 @@ name = "Thunderdome helmet" desc = "Let the battle commence!" icon_state = "thunderdome" - flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES + 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) @@ -291,13 +292,13 @@ name = "Chaplain's hood" desc = "A hoodie for the chaplain!!!" icon_state = "chaplain_hood" - flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES + 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 + flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR /obj/item/clothing/head/nursehat name = "Nurse Hat" diff --git a/code/game/dna.dm b/code/game/dna.dm index e9243daad0f..77f10dbb5d7 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -18,7 +18,7 @@ // determine DNA fragment from hairstyle // :wtc: - var/list/styles = list("bald", "hair_a", "hair_b", "hair_c", "hair_d", "hair_e", "hair_f", "hair_bedhead", "hair_dreads" ) + var/list/styles = list("bald", "hair_a", "hair_b", "hair_c", "hair_d", "hair_e", "hair_f", "hair_bedhead", "hair_dreads", "hair_vlong", "hair_jensen", "hair_skinhead" ) var/hrange = round(4095 / styles.len) var/style = styles.Find(character.hair_icon_state) @@ -27,6 +27,17 @@ else hair = 0 + // Beard dna code - mostly copypasted from hair code to allow for more dynamic facial hair style additions + var/list/face_styles = list("bald", "facial_elvis", "facial_vandyke", "facial_neckbeard", "facial_chaplin", "facial_watson", "facial_abe", "facial_chin", "facial_hip", "facial_gt", "facial_hogan", "facial_selleck", "facial_fullbeard", "facial_longbeard", "facial_jensen" ) + var/f_hrange = round(4095 / face_styles.len) + + var/f_style = face_styles.Find(character.face_icon_state) + if(f_style) + beard = f_style * f_hrange + f_hrange - rand(1,f_hrange-1) + else + beard = 0 + + /* // Deprecated code -- Doohl switch(character.face_icon_state) if("bald") beard = rand(1,350) if("facial_elvis") beard = rand(351,650) @@ -42,6 +53,7 @@ if("facial_selleck") beard = rand(3351,3650) if("facial_fullbeard") beard = rand(3651,3950) if("facial_longbeard") beard = rand(3951,4095) + */ temp = add_zero2(num2hex((character.r_hair),1), 3) temp += add_zero2(num2hex((character.b_hair),1), 3) diff --git a/code/modules/clothing/spacesuits.dm b/code/modules/clothing/spacesuits.dm index 6dd0e6fb7ec..c3b57801456 100644 --- a/code/modules/clothing/spacesuits.dm +++ b/code/modules/clothing/spacesuits.dm @@ -8,7 +8,7 @@ Space suit parts name = "Space helmet" icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." - flags = FPRINT | TABLEPASS | HEADSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH + flags = FPRINT | TABLEPASS | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR see_face = 0.0 item_state = "space" permeability_coefficient = 0.01 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index f093caf2cf1..becb33d91b1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -345,6 +345,7 @@ else if (W == glasses) glasses = null else if (W == head) + var/obj/item/prev_head = W W = h_store if (W) u_equip(W) @@ -355,6 +356,11 @@ W.dropped(src) W.layer = initial(W.layer) head = null + if(prev_head && (prev_head.flags & BLOCKHAIR)) + // rebuild face + del(face_standing) + del(face_lying) + else if (W == ears) ears = null else if (W == shoes) @@ -362,11 +368,17 @@ else if (W == belt) belt = null else if (W == wear_mask) + var/obj/item/prev_mask = W if(internal) if (internals) internals.icon_state = "internal0" internal = null wear_mask = null + if(prev_mask && (prev_mask.flags & BLOCKHAIR)) + // rebuild face + del(face_standing) + del(face_lying) + else if (W == wear_id) wear_id = null else if (W == r_store) @@ -406,6 +418,10 @@ return u_equip(W) wear_mask = W + if(wear_mask && (wear_mask.flags & BLOCKHAIR)) + del(face_standing) + del(face_lying) + W.equipped(src, text) if("back") if (back) @@ -495,6 +511,10 @@ return u_equip(W) head = W + if(head && (head.flags & BLOCKHAIR)) + del(face_standing) + del(face_lying) + if(istype(W,/obj/item/clothing/head/kitty)) W.update_icon(src) W.equipped(src, text) @@ -937,6 +957,14 @@ drop_item() hand = h + + if (lying) + if (face_lying) + overlays += face_lying + else + if (face_standing) + overlays += face_standing + // Head if (head) var/t1 = head.icon_state @@ -1232,17 +1260,26 @@ var/icon/mouth_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "mouth_[g]_s") var/icon/mouth_l = new/icon("icon" = 'human_face.dmi', "icon_state" = "mouth_[g]_l") - eyes_s.Blend(hair_s, ICON_OVERLAY) - eyes_l.Blend(hair_l, ICON_OVERLAY) + // if the head or mask has the flag BLOCKHAIR (equal to 5), then do not apply hair + if((!(head && (head.flags & BLOCKHAIR))) && !(wear_mask && (wear_mask.flags & BLOCKHAIR))) + eyes_s.Blend(hair_s, ICON_OVERLAY) + eyes_l.Blend(hair_l, ICON_OVERLAY) + eyes_s.Blend(mouth_s, ICON_OVERLAY) eyes_l.Blend(mouth_l, ICON_OVERLAY) - eyes_s.Blend(facial_s, ICON_OVERLAY) - eyes_l.Blend(facial_l, ICON_OVERLAY) + + // if BLOCKHAIR, do not apply facial hair + if((!(head && (head.flags & BLOCKHAIR))) && !(wear_mask && (wear_mask.flags & BLOCKHAIR))) + eyes_s.Blend(facial_s, ICON_OVERLAY) + eyes_l.Blend(facial_l, ICON_OVERLAY) + face_standing = new /image() face_lying = new /image() face_standing.icon = eyes_s + face_standing.layer = MOB_LAYER face_lying.icon = eyes_l + face_lying.layer = MOB_LAYER del(mouth_l) del(mouth_s) diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 32034a27191..8f0f8228b8c 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -431,10 +431,10 @@ datum/preferences if(gender == FEMALE) h_style = pickweight ( list ("Cut Hair" = 5, "Short Hair" = 5, "Long Hair" = 5, "Mohawk" = 5, "Balding" = 1, "Fag" = 5, "Bedhead" = 5, "Dreadlocks" = 5, "Bald" = 5)) else - h_style = pickweight ( list ("Cut Hair" = 5, "Short Hair" = 5, "Long Hair" = 5, "Mohawk" = 5, "Balding" = 5, "Fag" = 5, "Bedhead" = 5, "Dreadlocks" = 5, "Bald" = 5)) + h_style = pickweight ( list ("Cut Hair" = 5, "Short Hair" = 5, "Long Hair" = 5, "Mohawk" = 5, "Balding" = 5, "Fag" = 5, "Bedhead" = 5, "Dreadlocks" = 5, "Jensen Hair" = 5, "Skinhead" = 5, "Bald" = 5)) if("input") - var/new_style = input(user, "Please select hair style", "Character Generation") as null|anything in list( "Cut Hair", "Short Hair", "Long Hair", "Mohawk", "Balding", "Fag", "Bedhead", "Dreadlocks", "Bald" ) + var/new_style = input(user, "Please select hair style", "Character Generation") as null|anything in list( "Cut Hair", "Short Hair", "Long Hair", "Longer Hair", "Mohawk", "Balding", "Fag", "Bedhead", "Dreadlocks", "Jensen Hair", "Skinhead", "Bald" ) if(new_style) h_style = new_style @@ -450,9 +450,9 @@ datum/preferences if(gender == FEMALE) f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 100)) else - f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 10)) + f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Jensen Goatee" = 1, "Shaved" = 10)) if("input") - var/new_style = input(user, "Please select facial style", "Character Generation") as null|anything in list("Watson", "Chaplin", "Selleck", "Full Beard", "Long Beard", "Neckbeard", "Van Dyke", "Elvis", "Abe", "Chinstrap", "Hipster", "Goatee", "Hogan", "Shaved") + var/new_style = input(user, "Please select facial style", "Character Generation") as null|anything in list("Watson", "Chaplin", "Selleck", "Full Beard", "Long Beard", "Neckbeard", "Van Dyke", "Elvis", "Abe", "Chinstrap", "Hipster", "Goatee", "Jensen Goatee", "Hogan", "Shaved") if(new_style) f_style = new_style @@ -585,6 +585,12 @@ datum/preferences character.hair_icon_state = "hair_bedhead" if("Dreadlocks") character.hair_icon_state = "hair_dreads" + if("Longer Hair") + character.hair_icon_state = "hair_vlong" + if("Jensen Hair") + character.hair_icon_state = "hair_jensen" + if("Skinhead") + character.hair_icon_state = "hair_skinhead" else character.hair_icon_state = "bald" @@ -615,6 +621,8 @@ datum/preferences character.face_icon_state = "facial_gt" if("Hogan") character.face_icon_state = "facial_hogan" + if("Jensen Goatee") + character.face_icon_state = "facial_jensen" else character.face_icon_state = "bald" diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index e6d3806eaf6..5d17691987e 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -26,7 +26,7 @@ datum/preferences proc/randomize_hair(var/gender) //Women are more likely to have longer hair. - var/temp = gender==FEMALE&&prob(80) ? pick(2,6,8) : rand(1,9) + var/temp = gender==FEMALE&&prob(80) ? pick(2,6,8,9) : rand(1,12) switch(temp) if(1) h_style = "Short Hair" @@ -44,11 +44,17 @@ datum/preferences h_style = "Bedhead" if(8) h_style = "Dreadlocks" + if(9) + h_style = "Longer Hair" + if(10) + h_style = "Jensen Hair" + if(11) + h_style = "Skinhead" else h_style = "bald" proc/randomize_facial() - var/temp = prob(50) ? 14 : rand(1,13)//50% of not having a beard. Otherwise get a random one. + var/temp = prob(50) ? 15 : rand(1,14)//50% of not having a beard. Otherwise get a random one. switch(temp) if(1) f_style = "Watson" @@ -76,6 +82,8 @@ datum/preferences f_style = "Goatee" if(13) f_style = "Hogan" + if(14) + f_style = "Jensen Goatee" else f_style = "bald" @@ -252,6 +260,10 @@ datum/preferences h_style_r = "hair_bedhead" if("Dreadlocks") h_style_r = "hair_dreads" + if("Longer Hair") + h_style_r = "hair_vlong" + if("Jensen Hair") + h_style_r = "hair_jensen" else h_style_r = "bald" @@ -283,6 +295,8 @@ datum/preferences f_style_r = "facial_gt" if ("Hogan") f_style_r = "facial_hogan" + if ("Jensen Goatee") + f_style_r = "facial_jensen" else f_style_r = "bald" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 1d47f31c26d..98a42a2b4cc 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -229,6 +229,24 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/item/weapon/circuitboard/cloning" + clonepod + name = "Circuit Design (Clone Pod)" + desc = "Allows for the construction of circuit boards used to build a Cloning Pod." + id = "clonepod" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/clonepod" + + clonescanner + name = "Circuit Design (Cloning Scanner)" + desc = "Allows for the construction of circuit boards used to build a Cloning Scanner." + id = "clonescanner" + req_tech = list("programming" = 3, "biotech" = 3) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/clonescanner" + arcademachine name = "Circuit Design (Arcade Machine)" desc = "Allows for the construction of circuit boards used to build a new arcade machine." diff --git a/code/setup.dm b/code/setup.dm index 6607e3985a7..e4ebaf758d5 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -89,6 +89,8 @@ #define HEADSPACE 4 // head wear protects against space +#define BLOCKHAIR 5 // temporarily removes the user's hair icon + #define MASKINTERNALS 8 // mask allows internals #define SUITSPACE 8 // suit protects against space diff --git a/icons/changelog.html b/icons/changelog.html index b3279d23013..c76c8a48563 100644 --- a/icons/changelog.html +++ b/icons/changelog.html @@ -63,6 +63,15 @@ should be listed in the changelog upon commit tho. Thanks. --> +15 October 2011: + + 11 October 2011:
  • ConstantA updated: diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 9fa3b242dc5..5069ddd2766 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ