Merge pull request #4262 from KasparoVy/IPC-EXTRA-STUFF-REFACTOR

Refactor FBP Parts & Adds Prosthetic Brand Models & More Antennae & Continued....
This commit is contained in:
TheDZD
2016-04-26 19:15:19 -04:00
28 changed files with 369 additions and 96 deletions
@@ -179,16 +179,17 @@
continue
if(species.flags & ALL_RPARTS) //If the user is a species who can have a robotic head...
var/obj/item/organ/external/head/H = organs_by_name["head"]
var/datum/robolimb/robohead = all_robolimbs[H.model]
if(!H)
return
if(species.name in S.species_allowed) //If this is a hairstyle native to the user's species...
if(H.model == "Morpheus Cyberkinetics") //Check to see if they have the default head.
if(robohead.is_monitor && (robohead.company in S.models_allowed)) //Check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
valid_hairstyles += hairstyle //Give them their hairstyles if they do.
continue
else //If they don't have the default head, they shouldn't be getting any hairstyles they wouldn't normally.
continue
else
if(H.model == "Morpheus Cyberkinetics") //If the hairstyle is not native to the user's species, and they're using the default head, don't let them access it.
if(robohead.is_monitor) //If the hair style is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
continue
else
if("Human" in S.species_allowed) //If the user has a robotic head and the hairstyle can fit humans, let them use it as a wig for their humanoid robot head.
@@ -212,17 +213,18 @@
continue
if(species.flags & ALL_RPARTS) //If the user is a species who can have a robotic head...
var/obj/item/organ/external/head/H = organs_by_name["head"]
var/datum/robolimb/robohead = all_robolimbs[H.model]
if(!H)
continue // No head, no hair
if(species.name in S.species_allowed) //If this is a facial hair style native to the user's species...
if(H.model == "Morpheus Cyberkinetics") //Check to see if they have the default head.
if(robohead.is_monitor && (robohead.company in S.models_allowed)) //Check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
valid_facial_hairstyles += facialhairstyle //Give them their facial hair styles if they do.
continue
else //If they don't have the default head, they shouldn't be getting any facial hair styles they wouldn't normally.
continue
else
if(H.model == "Morpheus Cyberkinetics") //If the facial hair style is not native to the user's species, and they're using the default head, don't let them access it.
if(robohead.is_monitor) //If the facial hair style is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
continue
else
if("Human" in S.species_allowed) //If the user has a robotic head and the facial hair style can fit humans, let them use it as a postiche for their humanoid robot head.
+16 -3
View File
@@ -1591,24 +1591,37 @@
to_chat(src, "<span class='warning'>You cannot change your monitor or optical display in your current state.</span>")
return
var/obj/item/organ/external/head/head_organ = get_organ("head")
if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED)) //If the rock'em-sock'em robot's head came off during a fight, they shouldn't be able to change their screen/optics.
to_chat(src, "<span class='warning'>Where's your head at? Can't change your monitor/display without one.</span>")
return
if(species.flags & ALL_RPARTS) //If they can have a fully cybernetic body...
if(client.prefs.rlimb_data["head"]) //If head is present here, that means it's not the default Morpheus. Thus, no screen to adjust. Instead, let them change the colour of their optics!
var/obj/item/organ/external/head/H = organs_by_name["head"]
var/datum/robolimb/robohead = all_robolimbs[H.model]
if(!H)
return
if(!robohead.is_monitor) //If they've got a prosthetic head and it isn't a monitor, they've no screen to adjust. Instead, let them change the colour of their optics!
var/optic_colour = input(src, "Select optic colour", rgb(r_markings, g_markings, b_markings)) as color|null
if(incapacitated())
to_chat(src, "<span class='warning'>You were interrupted while changing the colour of your optics.</span>")
return
if(optic_colour)
r_markings = hex2num(copytext(optic_colour, 2, 4))
g_markings = hex2num(copytext(optic_colour, 4, 6))
b_markings = hex2num(copytext(optic_colour, 6, 8))
update_markings()
else if(!client.prefs.rlimb_data["head"])//Means that the character has the default Morpheus head, which has a screen. Time to customize.
else if(robohead.is_monitor) //Means that the character's head is a monitor (has a screen). Time to customize.
var/list/hair = list()
for(var/i in hair_styles_list)
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i]
if(species.name in tmp_hair.species_allowed)
if((species.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use.
hair += i
var/new_style = input(src, "Select a monitor display", "Monitor Display", h_style) as null|anything in hair
if(incapacitated())
to_chat(src, "<span class='warning'>You were interrupted while changing your monitor display.</span>")
return
if(new_style)
h_style = new_style
@@ -361,6 +361,9 @@ var/global/list/damage_icon_parts = list()
if(m_style && m_style != "None")
var/datum/sprite_accessory/marking_style = marking_styles_list[m_style]
if(marking_style)
var/obj/item/organ/external/head/head_organ = get_organ("head")
if((!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED)) && marking_style.marking_location == "head")
return //If the head is destroyed and it is the organ the marking is located on, get us out of here. This prevents floating optical markings on decapitated IPCs, for example.
var/icon/markings_s = new/icon("icon" = marking_style.icon, "icon_state" = "[marking_style.icon_state]_s")
if(marking_style.do_colouration)
markings_s.Blend(rgb(r_markings, g_markings, b_markings), ICON_ADD)
@@ -397,7 +400,8 @@ var/global/list/damage_icon_parts = list()
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
if(head_accessory_style.do_colouration)
head_accessory_s.Blend(rgb(r_headacc, g_headacc, b_headacc), ICON_ADD)
head_accessory_standing.Blend(head_accessory_s, ICON_OVERLAY)
head_accessory_standing = head_accessory_s //head_accessory_standing.Blend(head_accessory_s, ICON_OVERLAY)
//Having it this way preserves animations. Useful for animated antennae.
else
//warning("Invalid ha_style for [species.name]: [ha_style]")
@@ -437,7 +441,8 @@ var/global/list/damage_icon_parts = list()
else if(hair_style.do_colouration)
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
hair_standing.Blend(hair_s, ICON_OVERLAY)
hair_standing = hair_s //hair_standing.Blend(hair_s, ICON_OVERLAY)
//Having it this way preserves animations. Useful for IPC screens.
else
//warning("Invalid h_style for [species.name]: [h_style]")
//hair_standing.Blend(debrained_s, ICON_OVERLAY)//how does i overlay for fish?
+128 -23
View File
@@ -43,6 +43,8 @@
// Restrict some styles to specific species
var/list/species_allowed = list("Human", "Slime People")
var/models_allowed = list() //Specifies which, if any, hairstyles can be accessed by which prosthetics. Should equal the manufacturing company name in robolimbs.dm.
var/marking_location //Specifies which bodypart a body marking is located on.
// Whether or not the accessory can be affected by colouration
var/do_colouration = 1
@@ -57,7 +59,6 @@
*/
/datum/sprite_accessory/hair
icon = 'icons/mob/human_face.dmi' // default icon for all hairs
bald
@@ -379,105 +380,169 @@
//////END VG HAIRSTYLES///////
//////////////////////////////
ipc_screen_pink
name = "pink IPC screen"
name = "Pink IPC Screen"
icon_state = "ipc_pink"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_red
name = "red IPC screen"
name = "Red IPC Screen"
icon_state = "ipc_red"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_green
name = "green IPC screen"
name = "Green IPC Screen"
icon_state = "ipc_green"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_blue
name = "blue IPC screen"
name = "Blue IPC Screen"
icon_state = "ipc_blue"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_breakout
name = "breakout IPC screen"
name = "Breakout IPC Screen"
icon_state = "ipc_breakout"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_eight
name = "eight IPC screen"
name = "Eight IPC Screen"
icon_state = "ipc_eight"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_rainbow
name = "rainbow IPC screen"
name = "Rainbow IPC Screen"
icon_state = "ipc_rainbow"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_goggles
name = "goggles IPC screen"
name = "Goggles IPC Screen"
icon_state = "ipc_goggles"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_heart
name = "heart IPC screen"
name = "Heart IPC Screen"
icon_state = "ipc_heart"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_monoeye
name = "monoeye IPC screen"
name = "Monoeye IPC Screen"
icon_state = "ipc_monoeye"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_nature
name = "nature IPC screen"
name = "Nature IPC Screen"
icon_state = "ipc_nature"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_orange
name = "orange IPC screen"
name = "Orange IPC Screen"
icon_state = "ipc_orange"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_purple
name = "purple IPC screen"
name = "Purple IPC Screen"
icon_state = "ipc_purple"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_shower
name = "shower IPC screen"
name = "Shower IPC Screen"
icon_state = "ipc_shower"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_static
name = "static IPC screen"
name = "Static IPC Screen"
icon_state = "ipc_static"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_yellow
name = "yellow IPC screen"
name = "Yellow IPC Screen"
icon_state = "ipc_yellow"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_scrolling
name = "scanline IPC screen"
name = "Scanline IPC Screen"
icon_state = "ipc_scroll"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_console
name = "console IPC screen"
name = "Console IPC Screen"
icon_state = "ipc_console"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_rgb
name = "rgb IPC screen"
name = "RGB IPC Screen"
icon_state = "ipc_rgb"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
ipc_screen_glider
name = "glider IPC screen"
name = "Glider IPC Screen"
icon_state = "ipc_gol_glider"
species_allowed = list("Machine")
models_allowed = list("Bishop Cybernetics mtr.", "Hesphiastos Industries mtr.", "Morpheus Cyberkinetics", "Ward-Takahashi mtr.", "Xion Manufacturing Group mtr.")
hesphiastos_alt_off
name = "Dark Hesphiastos Screen"
icon_state = "hesphiastos_alt_off"
species_allowed = list("Machine")
models_allowed = list("Hesphiastos Industries alt.")
hesphiastos_alt_pink
name = "Pink Hesphiastos Screen"
icon_state = "hesphiastos_alt_pink"
species_allowed = list("Machine")
models_allowed = list("Hesphiastos Industries alt.")
hesphiastos_alt_orange
name = "Orange Hesphiastos Screen"
icon_state = "hesphiastos_alt_orange"
species_allowed = list("Machine")
models_allowed = list("Hesphiastos Industries alt.")
hesphiastos_alt_goggle
name = "Goggles Hesphiastos Screen"
icon_state = "hesphiastos_alt_goggles"
species_allowed = list("Machine")
models_allowed = list("Hesphiastos Industries alt.")
hesphiastos_alt_scroll
name = "Scrolling Hesphiastos Screen"
icon_state = "hesphiastos_alt_scroll"
species_allowed = list("Machine")
models_allowed = list("Hesphiastos Industries alt.")
hesphiastos_alt_rgb
name = "RGB Hesphiastos Screen"
icon_state = "hesphiastos_alt_rgb"
species_allowed = list("Machine")
models_allowed = list("Hesphiastos Industries alt.")
hesphiastos_alt_rainbow
name = "Rainbow Hesphiastos Screen"
icon_state = "hesphiastos_alt_rainbow"
species_allowed = list("Machine")
models_allowed = list("Hesphiastos Industries alt.")
/*
///////////////////////////////////
@@ -496,8 +561,7 @@
name = "Shaved"
icon_state = "bald"
gender = NEUTER
species_allowed = list("Human", "Unathi", "Tajaran", "Skrell", "Vox", "Diona", "Kidan", "Greys", "Machine", "Vulpkanin", "Slime People")
species_allowed = list("Human", "Unathi", "Tajaran", "Skrell", "Vox", "Diona", "Kidan", "Greys", "Vulpkanin", "Slime People")
watson
name = "Watson Mustache"
@@ -1785,6 +1849,21 @@
icon_state = "antennae"
species_allowed = list("Machine")
/datum/sprite_accessory/head_accessory/ipc_tv_antennae
name = "T.V. Antennae"
icon_state = "tvantennae"
species_allowed = list("Machine")
/datum/sprite_accessory/head_accessory/ipc_tesla_antennae
name = "Tesla Antennae"
icon_state = "tesla"
species_allowed = list("Machine")
/datum/sprite_accessory/head_accessory/ipc_light
name = "Head Light"
icon_state = "light"
species_allowed = list("Machine")
/* BODY MARKINGS */
@@ -1832,6 +1911,32 @@
name = "Humanoid Optics"
species_allowed = list("Machine")
icon_state = "optics"
models_allowed = list("Bishop Cybernetics", "Hesphiastos Industries", "Ward-Takahashi", "Xion Manufacturing Group", "Zeng-Hu Pharmaceuticals") //Should be the same as the manufacturing company of the limb in robolimbs.dm
marking_location = "head"
/datum/sprite_accessory/body_markings/optics/bishop_alt
name = "Bishop Alt. Optics"
species_allowed = list("Machine")
icon_state = "bishop_alt_optics"
models_allowed = list("Bishop Cybernetics alt.")
/datum/sprite_accessory/body_markings/optics/morpheus_alt
name = "Morpheus Alt. Optics"
species_allowed = list("Machine")
icon_state = "morpheus_alt_optics"
models_allowed = list("Morpheus Cyberkinetics alt.")
/datum/sprite_accessory/body_markings/optics/wardtakahashi_alt
name = "Ward-Takahashi Alt. Optics"
species_allowed = list("Machine")
icon_state = "wardtakahashi_alt_optics"
models_allowed = list("Ward-Takahashi alt.")
/datum/sprite_accessory/body_markings/optics/xion_alt
name = "Xion Alt. Optics"
species_allowed = list("Machine")
icon_state = "xion_alt_optics"
models_allowed = list("Xion Manufacturing Group alt.")
/datum/sprite_accessory/body_markings/tattoo // Tattoos applied post-round startup with tattoo guns in item_defines.dm
name = "base tattoo"