mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-11 23:23:28 +01:00
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:
@@ -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.
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user