diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index c60d5651e37..8f1f158fdee 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -445,4 +445,8 @@ #define ROBOT_PANEL_CELL "cell" #define ROBOT_PANEL_NO_CELL "no cell" +#define ROBOT_CHASSIS "chassistype" +#define ROBOT_PANEL "paneltype" +#define ROBOT_EYES "eyetype" + #define BLOOD_REGEN_RATE 0.1 diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 12b3bdb1972..f36a821b206 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -104,7 +104,7 @@ var/list/ai_verbs_default = list( // Sprites var/datum/ai_icon/selected_sprite // The selected icon set - var/custom_sprite = FALSE // Whether the selected icon is custom + var/custom_sprite = FALSE // Whether the selected icon is custom /mob/living/silicon/ai/proc/add_ai_verbs() src.verbs |= ai_verbs_default diff --git a/code/modules/mob/living/silicon/ai/ai_remote_control.dm b/code/modules/mob/living/silicon/ai/ai_remote_control.dm index d4c0eeda6b0..70cf7d9ffa1 100644 --- a/code/modules/mob/living/silicon/ai/ai_remote_control.dm +++ b/code/modules/mob/living/silicon/ai/ai_remote_control.dm @@ -20,7 +20,7 @@ LANGUAGE_YA_SSA = FALSE ) - sprites = list("Basic" = "shell") + sprites = list("Basic" = list(ROBOT_CHASSIS = "shell", ROBOT_PANEL = "shell", ROBOT_EYES = "shell")) /obj/item/robot_module/aicontrol/Initialize() . = ..() diff --git a/code/modules/mob/living/silicon/ai/icons.dm b/code/modules/mob/living/silicon/ai/icons.dm index 0daaf388e01..3d39243c9f7 100644 --- a/code/modules/mob/living/silicon/ai/icons.dm +++ b/code/modules/mob/living/silicon/ai/icons.dm @@ -32,7 +32,7 @@ var/list/datum/ai_icon/ai_icons /datum/ai_icon/green name = "Green" - alive_icon = "ai-wierd" + alive_icon = "ai-weird" alive_light = "#00FF99" dead_icon = "ai-weird_dead" diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index ab62aa2b5c3..4af001ca250 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -286,17 +286,24 @@ /mob/living/silicon/robot/drone/updatename() return -/mob/living/silicon/robot/drone/setup_icon_cache() +/mob/living/silicon/robot/drone/setup_eye_cache() cached_eye_overlays = list( - I_HELP = image(icon, "eyes-[icon_state]-help", layer = EFFECTS_ABOVE_LIGHTING_LAYER), - I_HURT = image(icon, "eyes-[icon_state]-harm", layer = EFFECTS_ABOVE_LIGHTING_LAYER), - "emag" = image(icon, "eyes-[icon_state]-emag", layer = EFFECTS_ABOVE_LIGHTING_LAYER) + I_HELP = image(icon, "[icon_state]-eyes_help"), + I_HURT = image(icon, "[icon_state]-eyes_harm"), + "emag" = image(icon, "[icon_state]-eyes_emag") ) if(eye_overlay) cut_overlay(eye_overlay) eye_overlay = cached_eye_overlays[a_intent] - if(!stat) - add_overlay(eye_overlay) + add_overlay(eye_overlay) + +/mob/living/silicon/robot/drone/setup_panel_cache() + cached_panel_overlays = list( + ROBOT_PANEL_EXPOSED = image(icon, "[icon_state]-openpanel+w"), + ROBOT_PANEL_CELL = image(icon, "[icon_state]-openpanel+c"), + ROBOT_PANEL_NO_CELL = image(icon, "[icon_state]-openpanel-c") + ) + /mob/living/silicon/robot/drone/set_intent(var/set_intent) a_intent = set_intent diff --git a/code/modules/mob/living/silicon/robot/items/modules/mobility_module.dm b/code/modules/mob/living/silicon/robot/items/modules/mobility_module.dm index 0a33b777366..14b1a0b8983 100644 --- a/code/modules/mob/living/silicon/robot/items/modules/mobility_module.dm +++ b/code/modules/mob/living/silicon/robot/items/modules/mobility_module.dm @@ -11,8 +11,9 @@ icon_state = "shock" /obj/item/borg/combat/mobility/on_module_activate(mob/living/silicon/robot/R) - R.icon_state = "[R.module_sprites[R.icontype]]-roll" + R.icon_state = "[R.module_sprites[R.icontype][ROBOT_CHASSIS]]-roll" R.speed = -2 + R.setup_eye_cache() /obj/item/borg/rescue/mobility/on_module_activate(mob/living/silicon/robot/R) R.speed = -1 @@ -21,5 +22,6 @@ R.speed = initial(R.speed) /obj/item/borg/combat/mobility/on_module_deactivate(mob/living/silicon/robot/R) - R.icon_state = R.module_sprites[R.icontype] + R.icon_state = "[R.module_sprites[R.icontype][ROBOT_CHASSIS]]" R.speed = initial(R.speed) + R.setup_eye_cache() diff --git a/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm b/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm index bc951635477..00a1edaafa8 100644 --- a/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm +++ b/code/modules/mob/living/silicon/robot/items/modules/robot_shield.dm @@ -5,14 +5,13 @@ icon = 'icons/obj/device.dmi' icon_state = "shield1" //placeholder for now // four fucking years alberyk. FOUR var/shield_level = 0.5 //Percentage of damage absorbed by the shield. - var/image/shield_overlay /obj/item/borg/combat/shield/on_module_activate(mob/living/silicon/robot/R) - shield_overlay = image(R.icon, "[R.module_sprites[R.icontype]]-shield") - R.add_overlay(shield_overlay) + R.shield_overlay = image(R.icon, "[R.module_sprites[R.icontype][ROBOT_CHASSIS]]-shield") + R.add_overlay(R.shield_overlay) /obj/item/borg/combat/shield/on_module_deactivate(mob/living/silicon/robot/R) - R.cut_overlay(shield_overlay) + R.cut_overlay(R.shield_overlay) /obj/item/borg/combat/shield/verb/set_shield_level() set name = "Set shield level" @@ -21,4 +20,4 @@ var/N = input(usr, "How much damage should the shield absorb?") in list("5", "10", "25", "50", "75", "100") if(N) - shield_level = text2num(N)/100 \ No newline at end of file + shield_level = text2num(N)/100 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3182883bcc6..aea2de364b1 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -10,6 +10,9 @@ icon = 'icons/mob/robots.dmi' icon_state = "robot" var/icontype //Persistent icontype tracking allows for cleaner icon updates + var/chassistype // Custom model icon. Also can be used to re-use icons to prevent copypasta, provided you listed them correctly in the list + var/paneltype // Same as above, but for maintenance panel. + var/eyetype // Same as above, but for eyes. var/module_sprites[0] //Used to store the associations between sprite names and sprite index. var/icon_selected = 0 //If icon selection has been completed yet var/spawn_sound = 'sound/voice/liveagain.ogg' @@ -142,13 +145,10 @@ robot_modules_background = new() robot_modules_background.icon_state = "block" robot_modules_background.layer = SCREEN_LAYER //Objects that appear on screen are on layer 20, UI should be just below it. - module_sprites["Basic"] = "robot" - icontype = "Basic" updatename(mod_type) if(!client) stat = UNCONSCIOUS - setup_icon_cache() if(mmi?.brainobj) mmi.brainobj.prepared = TRUE @@ -171,6 +171,7 @@ init() initialize_components() + setup_icon_cache() for(var/V in components) if(V != "power cell" && V != "jetpack" && V != "surge") //We don't install the jetpack onstart @@ -296,7 +297,7 @@ to_chat(src, SPAN_WARNING("Custom Sprite Sheet does not contain a valid icon_state for [sprite.synthicon]-[mod_type]")) else icontype = module_sprites[1] - icon_state = module_sprites[icontype] + icon_state = module_sprites[icontype][ROBOT_CHASSIS] return module_sprites /mob/living/silicon/robot/proc/pick_module(var/set_module) @@ -507,6 +508,7 @@ set_light(integrated_light_power) else set_light(0) + setup_eye_cache() //update eyes // this function displays jetpack pressure in the stat panel /mob/living/silicon/robot/proc/show_jetpack_pressure() @@ -734,7 +736,7 @@ to_chat(user, SPAN_WARNING("\The [src] does not have a radio installed!")) return else if(W.GetID() || istype(W, /obj/item/card/robot)) // trying to unlock the interface with an ID card - if(emagged && !is_traitor()) //still allow them to open the cover. is_traitor() dodges this text as being made traitor sets emagged to TRUE. + if(emagged && !is_traitor()) //still allow them to open the cover. is_traitor() dodges this text as being made traitor sets emagged to TRUE. to_chat(user, SPAN_NOTICE("You notice that \the [src]'s interface appears to be damaged.")) if(opened) to_chat(user, SPAN_WARNING("You must close the cover to swipe an ID card.")) @@ -1081,17 +1083,18 @@ return else var/list/options = list() - for(var/i in module_sprites) - var/image/radial_button = image(icon = src.icon, icon_state = module_sprites[i]) - radial_button.overlays.Add(image(icon = src.icon, icon_state = "eyes-[module_sprites[i]]-help")) + for(var/i in module_sprites) // Gottverdamnt. + var/image/radial_button = image(icon = src.icon, icon_state = module_sprites[i][ROBOT_CHASSIS]) + radial_button.overlays.Add(image(icon = src.icon, icon_state = "[module_sprites[i][ROBOT_EYES]]-eyes_help")) options[i] = radial_button icontype = show_radial_menu(src, src, options, radius = 42, tooltips = TRUE) if(!icontype) return - icon_state = module_sprites[icontype] + icon_state = module_sprites[icontype][ROBOT_CHASSIS] icon_selected = TRUE + setup_icon_cache() playsound(get_turf(src), 'sound/effects/pop.ogg', 10, TRUE) spark(get_turf(src), 5, alldirs) diff --git a/code/modules/mob/living/silicon/robot/robot_helpers.dm b/code/modules/mob/living/silicon/robot/robot_helpers.dm index ad06a3cca93..3ee58e7cdc0 100644 --- a/code/modules/mob/living/silicon/robot/robot_helpers.dm +++ b/code/modules/mob/living/silicon/robot/robot_helpers.dm @@ -10,29 +10,48 @@ if(opened) if(wires_exposed) panel_overlay = cached_panel_overlays[ROBOT_PANEL_EXPOSED] - add_overlay(panel_overlay) else if(cell) panel_overlay = cached_panel_overlays[ROBOT_PANEL_CELL] - add_overlay(panel_overlay) else panel_overlay = cached_panel_overlays[ROBOT_PANEL_NO_CELL] - add_overlay(panel_overlay) + add_overlay(panel_overlay) /mob/living/silicon/robot/proc/setup_icon_cache() - cached_eye_overlays = list( - I_HELP = image(icon, "eyes-[module_sprites[icontype]]-help", layer = EFFECTS_ABOVE_LIGHTING_LAYER), - I_HURT = image(icon, "eyes-[module_sprites[icontype]]-harm", layer = EFFECTS_ABOVE_LIGHTING_LAYER) - ) + if(!module_sprites[icontype]) + return + setup_eye_cache() + setup_panel_cache() + +/mob/living/silicon/robot/proc/setup_eye_cache() + if(!module_sprites[icontype][ROBOT_EYES]) + return + var/eye_layer = src.layer + if(lights_on && layer == MOB_LAYER) // in case you're hiding. so eyes don't go through tables. + eye_layer = EFFECTS_ABOVE_LIGHTING_LAYER //make them glow in the dark if the lamp is on + var/eyeprefix = custom_sprite ? module_sprites[icontype] : module_sprites[icontype][ROBOT_EYES] + if(speed == -2) // For combat drones with the mobility module. + cached_eye_overlays = list( + I_HELP = image(icon, "[eyeprefix]-roll-eyes_help", layer = eye_layer), + I_HURT = image(icon, "[eyeprefix]-roll-eyes_harm", layer = eye_layer) + ) + else + cached_eye_overlays = list( + I_HELP = image(icon, "[eyeprefix]-eyes_help", layer = eye_layer), //Changed so icontype goes in front. Helps with parsing in this godforsaken engine known as BYOND. + I_HURT = image(icon, "[eyeprefix]-eyes_harm", layer = eye_layer) + ) if(eye_overlay) cut_overlay(eye_overlay) eye_overlay = cached_eye_overlays[a_intent] - if(!stat) - add_overlay(eye_overlay) - var/panelprefix = custom_sprite ? src.ckey : "ov" + add_overlay(eye_overlay) + +/mob/living/silicon/robot/proc/setup_panel_cache() + if(!module_sprites[icontype][ROBOT_PANEL]) + return + var/panelprefix = custom_sprite ? src.ckey : module_sprites[icontype][ROBOT_PANEL] // Shoutout to Geeves. cached_panel_overlays = list( - ROBOT_PANEL_EXPOSED = image(icon, "[panelprefix]-openpanel +w"), - ROBOT_PANEL_CELL = image(icon, "[panelprefix]-openpanel +c"), - ROBOT_PANEL_NO_CELL = image(icon, "[panelprefix]-openpanel -c") + ROBOT_PANEL_EXPOSED = image(icon, "[panelprefix]-openpanel+w"), + ROBOT_PANEL_CELL = image(icon, "[panelprefix]-openpanel+c"), + ROBOT_PANEL_NO_CELL = image(icon, "[panelprefix]-openpanel-c") ) /mob/living/silicon/robot/proc/set_module_active(var/obj/item/given_module) @@ -50,4 +69,4 @@ contents -= stored_module /mob/living/silicon/robot/get_cell() - return cell \ No newline at end of file + return cell diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index eaacf5d79d0..d0f9621bc01 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -71,7 +71,6 @@ var/global/list/robot_modules = list( R.set_module_sprites(sprites) R.icon_selected = FALSE R.choose_icon() - R.setup_icon_cache() /obj/item/robot_module/proc/handle_languages(var/mob/living/silicon/robot/R) return @@ -87,7 +86,6 @@ var/global/list/robot_modules = list( R.set_module_sprites(list("Default" = "robot")) R.icon_selected = FALSE R.choose_icon() - R.setup_icon_cache() /obj/item/robot_module/Destroy() for(var/module in modules) @@ -193,19 +191,24 @@ var/global/list/robot_modules = list( networks = list(NETWORK_MEDICAL) can_be_pushed = FALSE sprites = list( - "Basic" = "robotmedi", - "Landmate" = "landmatemedi", - "Treadmate" = "treadmatemedi", - "Treadhead" = "treadheadmedi", - "Arachnotronic" = "arachnotronicmedi", - "Toileto-tron" = "toiletbotmedi", - "Zeng-hu Droid" = "droidrecolormedi", - "HD-MAD" = "mcspizzytronmedi", - "SD-MAD" = "floatspizzytronmedi", - "Heph Droid" = "heavymedi", - "Venus Drone" = "dronerecolormedi", - "Unbranded-MAD" = "offfloatspizzytronmedi", - "Unbranded-Android" = "droid", + "Basic" = list(ROBOT_CHASSIS = "robot_medi", ROBOT_PANEL = "robot_medi", ROBOT_EYES = "robot"), + "Landmate" = list(ROBOT_CHASSIS = "landmate_medi", ROBOT_PANEL = "landmate_medi", ROBOT_EYES = "landmate"), + "Treadmate" = list(ROBOT_CHASSIS = "treadmate_medi", ROBOT_PANEL = "treadmate_medi", ROBOT_EYES = "treadmate"), + "Treadhead" = list(ROBOT_CHASSIS = "treadhead_medi", ROBOT_PANEL = "treadhead_medi", ROBOT_EYES = "treadhead"), + "Spiffy" = list(ROBOT_CHASSIS = "mcspizzy_medi", ROBOT_PANEL = "mcspizzy_medi", ROBOT_EYES = "mcspizzy"), + "Tau-Ceti Drone" = list(ROBOT_CHASSIS = "tauceti_medi", ROBOT_PANEL = "tauceti_medi", ROBOT_EYES = "tauceti"), + "Sputnik" = list(ROBOT_CHASSIS = "sputnik_medi", ROBOT_PANEL = "sputnik_medi", ROBOT_EYES = "sputnik"), + "Kent" = list(ROBOT_CHASSIS = "kent_medi", ROBOT_PANEL = "kent_medi", ROBOT_EYES = "kent"), + "Wide" = list(ROBOT_CHASSIS = "wide_medi", ROBOT_PANEL = "wide_medi", ROBOT_EYES = "wide"), + "Cricket" = list(ROBOT_CHASSIS = "cricket_medi", ROBOT_PANEL = "cricket_medi", ROBOT_EYES = "cricket"), + "Quad-Dex" = list(ROBOT_CHASSIS = "quaddex_medi", ROBOT_PANEL = "quaddex_medi", ROBOT_EYES = "quaddex"), + "Arthrodroid" = list(ROBOT_CHASSIS = "arthrodroid_medi", ROBOT_PANEL = "arthrodroid_medi", ROBOT_EYES = "arthrodroid"), + "Spiderbot" = list(ROBOT_CHASSIS = "spiderbot_medi", ROBOT_PANEL = "spiderbot_medi", ROBOT_EYES = "spiderbot"), + "Heavy" = list(ROBOT_CHASSIS = "heavy_medi", ROBOT_PANEL = "heavy_medi", ROBOT_EYES = "heavy_medi"), + "Positron 03" = list(ROBOT_CHASSIS = "positron03_medi", ROBOT_PANEL = "positron03_medi", ROBOT_EYES = "positron03"), + "Plantasonic" = list(ROBOT_CHASSIS = "plantasonic_medi", ROBOT_PANEL = "plantasonic_medi", ROBOT_EYES = "plantasonic"), + "Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_medi", ROBOT_PANEL = "coolermaster_medi", ROBOT_EYES = "coolermaster"), + "Phage" = list(ROBOT_CHASSIS = "phage_medi", ROBOT_PANEL = "phage_medi", ROBOT_EYES = "phage") ) /obj/item/robot_module/medical/general/Initialize() @@ -274,21 +277,7 @@ var/global/list/robot_modules = list( /obj/item/robot_module/medical/rescue name = "rescue robot module" - sprites = list( - "Basic" = "robotmedi", - "Landmate" = "landmatemedi", - "Treadmate" = "treadmatemedi", - "Treadhead" = "treadheadmedi", - "Arachnotronic" = "arachnotronicmedi", - "Toileto-tron" = "toiletbotmedi", - "Zeng-hu Droid" = "droidrecolormedi", - "HD-MAD" = "mcspizzytronmedi", - "SD-MAD" = "floatspizzytronmedi", - "Heph Droid" = "heavymedi", - "Venus Drone" = "dronerecolormedi", - "Unbranded-MAD" = "offfloatspizzytronmedi", - "Unbranded-Android" = "droid", - ) +// If anyone wants to make custom rescue robot sprites, be my guest. /obj/item/robot_module/medical/rescue/Initialize() . = ..() @@ -356,21 +345,25 @@ var/global/list/robot_modules = list( networks = list(NETWORK_ENGINEERING) supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack) sprites = list( - "Basic" = "robotengi", - "Landmate" = "landmateengi", - "Treadmate" = "treadmateengi", - "Treadhead" = "treadheadengi", - "Arachnotronic" = "arachnotronicengi", - "Toileto-tron" = "toiletbotengi", - "Zeng-hu Droid" = "droidrecolorengi", - "HD-MAD" = "mcspizzytronengi", - "SD-MAD" = "floatspizzytronengi", - "Heph Droid" = "heavyengi", - "Venus Drone" = "dronerecolorengi", - "Unbranded-MAD" = "offfloatspizzytronengi", - "Unbranded-Android" = "droid", + "Basic" = list(ROBOT_CHASSIS = "robot_engi", ROBOT_PANEL = "robot", ROBOT_EYES = "robot"), + "Landmate" = list(ROBOT_CHASSIS = "landmate_engi", ROBOT_PANEL = "landmate", ROBOT_EYES = "landmate"), + "Treadmate" = list(ROBOT_CHASSIS = "treadmate_engi", ROBOT_PANEL = "treadmate", ROBOT_EYES = "treadmate"), + "Treadhead" = list(ROBOT_CHASSIS = "treadhead_engi", ROBOT_PANEL = "treadhead", ROBOT_EYES = "treadhead"), + "Spiffy" = list(ROBOT_CHASSIS = "mcspizzy_engi", ROBOT_PANEL = "mcspizzy", ROBOT_EYES = "mcspizzy"), + "Tau-Ceti Drone" = list(ROBOT_CHASSIS = "tauceti_engi", ROBOT_PANEL = "tauceti", ROBOT_EYES = "tauceti"), + "Sputnik" = list(ROBOT_CHASSIS = "sputnik_engi", ROBOT_PANEL = "sputnik", ROBOT_EYES = "sputnik"), + "Kent" = list(ROBOT_CHASSIS = "kent_engi", ROBOT_PANEL = "kent", ROBOT_EYES = "kent"), + "Wide" = list(ROBOT_CHASSIS = "wide_engi", ROBOT_PANEL = "wide", ROBOT_EYES = "wide"), + "Cricket" = list(ROBOT_CHASSIS = "cricket_engi", ROBOT_PANEL = "cricket", ROBOT_EYES = "cricket"), + "Quad-Dex" = list(ROBOT_CHASSIS = "quaddex_engi", ROBOT_PANEL = "quaddex", ROBOT_EYES = "quaddex"), + "Arthrodroid" = list(ROBOT_CHASSIS = "arthrodroid_engi", ROBOT_PANEL = "arthrodroid", ROBOT_EYES = "arthrodroid"), + "Spiderbot" = list(ROBOT_CHASSIS = "spiderbot_engi", ROBOT_PANEL = "spiderbot", ROBOT_EYES = "spiderbot"), + "Heavy" = list(ROBOT_CHASSIS = "heavy_engi", ROBOT_PANEL = "heavy", ROBOT_EYES = "heavy_engi"), + "Positron 03" = list(ROBOT_CHASSIS = "positron03_engi", ROBOT_PANEL = "positron03", ROBOT_EYES = "positron03"), + "Plantasonic" = list(ROBOT_CHASSIS = "plantasonic_engi", ROBOT_PANEL = "plantasonic", ROBOT_EYES = "plantasonic"), + "Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_engi", ROBOT_PANEL = "coolermaster", ROBOT_EYES = "coolermaster"), + "Phage" = list(ROBOT_CHASSIS = "phage_engi", ROBOT_PANEL = "phage", ROBOT_EYES = "phage") ) - supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack) /obj/item/robot_module/engineering/construction name = "construction robot module" @@ -556,20 +549,26 @@ var/global/list/robot_modules = list( channels = list(CHANNEL_SERVICE = TRUE) networks = list(NETWORK_SERVICE) sprites = list( - "Basic" = "robotjani", - "Landmate" = "landmatejani", - "Treadmate" = "treadmatejani", - "Treadhead" = "treadheadjani", - "Arachnotronic" = "arachnotronicjani", - "Toileto-tron" = "toiletbotjani", - "Zeng-hu Droid" = "droidrecolorjani", - "HD-MAD" = "mcspizzytronjani", - "SD-MAD" = "floatspizzytronjani", - "Heph Droid" = "heavyjani", - "Venus Drone" = "dronerecolorjani", - "Unbranded-MAD" = "offfloatspizzytronjani", - "Unbranded-Android" = "droid", + "Basic" = list(ROBOT_CHASSIS = "robot_jani", ROBOT_PANEL = "robot", ROBOT_EYES = "robot"), + "Landmate" = list(ROBOT_CHASSIS = "landmate_jani", ROBOT_PANEL = "landmate", ROBOT_EYES = "landmate"), + "Treadmate" = list(ROBOT_CHASSIS = "treadmate_jani", ROBOT_PANEL = "treadmate", ROBOT_EYES = "treadmate"), + "Treadhead" = list(ROBOT_CHASSIS = "treadhead_jani", ROBOT_PANEL = "treadhead", ROBOT_EYES = "treadhead"), + "Spiffy" = list(ROBOT_CHASSIS = "mcspizzy_jani", ROBOT_PANEL = "mcspizzy", ROBOT_EYES = "mcspizzy"), + "Tau-Ceti Drone" = list(ROBOT_CHASSIS = "tauceti_jani", ROBOT_PANEL = "tauceti", ROBOT_EYES = "tauceti"), + "Sputnik" = list(ROBOT_CHASSIS = "sputnik_jani", ROBOT_PANEL = "sputnik", ROBOT_EYES = "sputnik"), + "Kent" = list(ROBOT_CHASSIS = "kent_jani", ROBOT_PANEL = "kent", ROBOT_EYES = "kent"), + "Wide" = list(ROBOT_CHASSIS = "wide_jani", ROBOT_PANEL = "wide", ROBOT_EYES = "wide"), + "Cricket" = list(ROBOT_CHASSIS = "cricket_jani", ROBOT_PANEL = "cricket", ROBOT_EYES = "cricket"), + "Quad-Dex" = list(ROBOT_CHASSIS = "quaddex_jani", ROBOT_PANEL = "quaddex", ROBOT_EYES = "quaddex"), + "Arthrodroid" = list(ROBOT_CHASSIS = "arthrodroid_jani", ROBOT_PANEL = "arthrodroid", ROBOT_EYES = "arthrodroid"), + "Spiderbot" = list(ROBOT_CHASSIS = "spiderbot_jani", ROBOT_PANEL = "spiderbot", ROBOT_EYES = "spiderbot"), + "Heavy" = list(ROBOT_CHASSIS = "heavy_jani", ROBOT_PANEL = "heavy_jani", ROBOT_EYES = "heavy_jani"), + "Positron 03" = list(ROBOT_CHASSIS = "positron03_jani", ROBOT_PANEL = "positron03", ROBOT_EYES = "positron03"), + "Plantasonic" = list(ROBOT_CHASSIS = "plantasonic_jani", ROBOT_PANEL = "plantasonic", ROBOT_EYES = "plantasonic"), + "Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_jani", ROBOT_PANEL = "coolermaster", ROBOT_EYES = "coolermaster"), + "Phage" = list(ROBOT_CHASSIS = "phage_jani", ROBOT_PANEL = "phage", ROBOT_EYES = "phage") ) + var/mopping = FALSE /obj/item/robot_module/janitor/Initialize() @@ -626,19 +625,24 @@ var/global/list/robot_modules = list( ) sprites = list( - "Basic" = "robotserv", - "Landmate" = "landmateserv", - "Treadmate" = "treadmateserv", - "Treadhead" = "treadheadserv", - "Arachnotronic" = "arachnotronicserv", - "Toileto-tron" = "toiletbotserv", - "Zeng-hu Droid" = "droidrecolorserv", - "HD-MAD" = "mcspizzytronserv", - "SD-MAD" = "floatspizzytronserv", - "Heph Droid" = "heavyserv", - "Venus Drone" = "dronerecolorserv", - "Unbranded-MAD" = "offfloatspizzytronserv", - "Unbranded-Android" = "droid", + "Basic" = list(ROBOT_CHASSIS = "robot_serv", ROBOT_PANEL = "robot", ROBOT_EYES = "robot"), + "Landmate" = list(ROBOT_CHASSIS = "landmate_serv", ROBOT_PANEL = "landmate", ROBOT_EYES = "landmate"), + "Treadmate" = list(ROBOT_CHASSIS = "treadmate_serv", ROBOT_PANEL = "treadmate", ROBOT_EYES = "treadmate"), + "Treadhead" = list(ROBOT_CHASSIS = "treadhead_serv", ROBOT_PANEL = "treadhead", ROBOT_EYES = "treadhead"), + "Spiffy" = list(ROBOT_CHASSIS = "mcspizzy_serv", ROBOT_PANEL = "mcspizzy", ROBOT_EYES = "mcspizzy"), + "Tau-Ceti Drone" = list(ROBOT_CHASSIS = "tauceti_serv", ROBOT_PANEL = "tauceti", ROBOT_EYES = "tauceti"), + "Sputnik" = list(ROBOT_CHASSIS = "sputnik_serv", ROBOT_PANEL = "sputnik", ROBOT_EYES = "sputnik"), + "Kent" = list(ROBOT_CHASSIS = "kent_serv", ROBOT_PANEL = "kent", ROBOT_EYES = "kent"), + "Wide" = list(ROBOT_CHASSIS = "wide_serv", ROBOT_PANEL = "wide", ROBOT_EYES = "wide"), + "Cricket" = list(ROBOT_CHASSIS = "cricket_serv", ROBOT_PANEL = "cricket", ROBOT_EYES = "cricket"), + "Quad-Dex" = list(ROBOT_CHASSIS = "quaddex_serv", ROBOT_PANEL = "quaddex", ROBOT_EYES = "quaddex"), + "Arthrodroid" = list(ROBOT_CHASSIS = "arthrodroid_serv", ROBOT_PANEL = "arthrodroid", ROBOT_EYES = "arthrodroid"), + "Spiderbot" = list(ROBOT_CHASSIS = "spiderbot_serv", ROBOT_PANEL = "spiderbot", ROBOT_EYES = "spiderbot"), + "Heavy" = list(ROBOT_CHASSIS = "heavy_serv", ROBOT_PANEL = "heavy_serv", ROBOT_EYES = "heavy_serv"), + "Positron 03" = list(ROBOT_CHASSIS = "positron03_serv", ROBOT_PANEL = "positron03", ROBOT_EYES = "positron03"), + "Plantasonic" = list(ROBOT_CHASSIS = "plantasonic_serv", ROBOT_PANEL = "plantasonic", ROBOT_EYES = "plantasonic"), + "Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_serv", ROBOT_PANEL = "coolermaster", ROBOT_EYES = "coolermaster"), + "Phage" = list(ROBOT_CHASSIS = "phage_serv", ROBOT_PANEL = "phage", ROBOT_EYES = "phage") ) /obj/item/robot_module/clerical/butler/Initialize() @@ -710,20 +714,27 @@ var/global/list/robot_modules = list( channels = list(CHANNEL_SUPPLY = TRUE) networks = list(NETWORK_MINE) sprites = list( - "Basic" = "robotmine", - "Landmate" = "landmatemine", - "Treadmate" = "treadmatemine", - "Treadhead" = "treadheadmine", - "Arachnotronic" = "arachnotronicmine", - "Toileto-tron" = "toiletbotmine", - "Zeng-hu Droid" = "droidrecolormine", - "HD-MAD" = "mcspizzytronmine", - "SD-MAD" = "floatspizzytronmine", - "Heph Droid" = "heavymine", - "Venus Drone" = "dronerecolormine", - "Unbranded-MAD" = "offfloatspizzytronmine", - "Unbranded-Android" = "droid", + "Basic" = list(ROBOT_CHASSIS = "robot_mine", ROBOT_PANEL = "robot", ROBOT_EYES = "robot"), + "Landmate" = list(ROBOT_CHASSIS = "landmate_mine", ROBOT_PANEL = "landmate", ROBOT_EYES = "landmate"), + "Treadmate" = list(ROBOT_CHASSIS = "treadmate_mine", ROBOT_PANEL = "treadmate", ROBOT_EYES = "treadmate"), + "Treadhead" = list(ROBOT_CHASSIS = "treadhead_mine", ROBOT_PANEL = "treadhead", ROBOT_EYES = "treadhead"), + "Spiffy" = list(ROBOT_CHASSIS = "mcspizzy_mine", ROBOT_PANEL = "mcspizzy", ROBOT_EYES = "mcspizzy"), + "Tau-Ceti Drone" = list(ROBOT_CHASSIS = "tauceti_mine", ROBOT_PANEL = "tauceti", ROBOT_EYES = "tauceti"), + "Sputnik" = list(ROBOT_CHASSIS = "sputnik_mine", ROBOT_PANEL = "sputnik", ROBOT_EYES = "sputnik"), + "Kent" = list(ROBOT_CHASSIS = "kent_mine", ROBOT_PANEL = "kent", ROBOT_EYES = "kent"), + "Wide" = list(ROBOT_CHASSIS = "wide_mine", ROBOT_PANEL = "wide", ROBOT_EYES = "wide"), + "Cricket" = list(ROBOT_CHASSIS = "cricket_mine", ROBOT_PANEL = "cricket", ROBOT_EYES = "cricket"), + "Quad-Dex" = list(ROBOT_CHASSIS = "quaddex_mine", ROBOT_PANEL = "quaddex", ROBOT_EYES = "quaddex"), + "Arthrodroid" = list(ROBOT_CHASSIS = "arthrodroid_mine", ROBOT_PANEL = "arthrodroid", ROBOT_EYES = "arthrodroid"), + "Spiderbot" = list(ROBOT_CHASSIS = "spiderbot_mine", ROBOT_PANEL = "spiderbot", ROBOT_EYES = "spiderbot"), + "Heavy" = list(ROBOT_CHASSIS = "heavy_mine", ROBOT_PANEL = "heavy_mine", ROBOT_EYES = "heavy_mine"), + "Positron 03" = list(ROBOT_CHASSIS = "positron03_mine", ROBOT_PANEL = "positron03", ROBOT_EYES = "positron03"), + "Plantasonic" = list(ROBOT_CHASSIS = "plantasonic_mine", ROBOT_PANEL = "plantasonic", ROBOT_EYES = "plantasonic"), + "Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_mine", ROBOT_PANEL = "coolermaster", ROBOT_EYES = "coolermaster"), + "Phage" = list(ROBOT_CHASSIS = "phage_mine", ROBOT_PANEL = "phage", ROBOT_EYES = "phage") ) + + supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack) /obj/item/robot_module/miner/Initialize() @@ -773,19 +784,24 @@ var/global/list/robot_modules = list( channels = list(CHANNEL_SCIENCE = TRUE) networks = list(NETWORK_RESEARCH) sprites = list( - "Basic" = "robotsci", - "Landmate" = "landmatesci", - "Treadmate" = "treadmatesci", - "Treadhead" = "treadheadsci", - "Arachnotronic" = "arachnotronicsci", - "Toileto-tron" = "toiletbotsci", - "Zeng-hu Droid" = "droidrecolorsci", - "HD-MAD" = "mcspizzytronsci", - "SD-MAD" = "floatspizzytronsci", - "Heph Droid" = "heavysci", - "Venus Drone" = "dronerecolorsci", - "Unbranded-MAD" = "offfloatspizzytronsci", - "Unbranded-Android" = "droid", + "Basic" = list(ROBOT_CHASSIS = "robot_sci", ROBOT_PANEL = "robot", ROBOT_EYES = "robot"), + "Landmate" = list(ROBOT_CHASSIS = "landmate_sci", ROBOT_PANEL = "landmate", ROBOT_EYES = "landmate"), + "Treadmate" = list(ROBOT_CHASSIS = "treadmate_sci", ROBOT_PANEL = "treadmate", ROBOT_EYES = "treadmate"), + "Treadhead" = list(ROBOT_CHASSIS = "treadhead_sci", ROBOT_PANEL = "treadhead", ROBOT_EYES = "treadhead"), + "Spiffy" = list(ROBOT_CHASSIS = "mcspizzy_sci", ROBOT_PANEL = "mcspizzy", ROBOT_EYES = "mcspizzy"), + "Tau-Ceti Drone" = list(ROBOT_CHASSIS = "tauceti_sci", ROBOT_PANEL = "tauceti", ROBOT_EYES = "tauceti"), + "Sputnik" = list(ROBOT_CHASSIS = "sputnik_sci", ROBOT_PANEL = "sputnik", ROBOT_EYES = "sputnik"), + "Kent" = list(ROBOT_CHASSIS = "kent_sci", ROBOT_PANEL = "kent", ROBOT_EYES = "kent"), + "Wide" = list(ROBOT_CHASSIS = "wide_sci", ROBOT_PANEL = "wide", ROBOT_EYES = "wide"), + "Cricket" = list(ROBOT_CHASSIS = "cricket_sci", ROBOT_PANEL = "cricket", ROBOT_EYES = "cricket"), + "Quad-Dex" = list(ROBOT_CHASSIS = "quaddex_sci", ROBOT_PANEL = "quaddex", ROBOT_EYES = "quaddex"), + "Arthrodroid" = list(ROBOT_CHASSIS = "arthrodroid_sci", ROBOT_PANEL = "arthrodroid", ROBOT_EYES = "arthrodroid"), + "Spiderbot" = list(ROBOT_CHASSIS = "spiderbot_sci", ROBOT_PANEL = "spiderbot", ROBOT_EYES = "spiderbot"), + "Heavy" = list(ROBOT_CHASSIS = "heavy_sci", ROBOT_PANEL = "heavy_sci", ROBOT_EYES = "heavy_sci"), + "Positron 03" = list(ROBOT_CHASSIS = "positron03_sci", ROBOT_PANEL = "positron03", ROBOT_EYES = "positron03"), + "Plantasonic" = list(ROBOT_CHASSIS = "plantasonic_sci", ROBOT_PANEL = "plantasonic", ROBOT_EYES = "plantasonic"), + "Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_sci", ROBOT_PANEL = "coolermaster", ROBOT_EYES = "coolermaster"), + "Phage" = list(ROBOT_CHASSIS = "phage_sci", ROBOT_PANEL = "phage", ROBOT_EYES = "phage") ) /obj/item/robot_module/research/Initialize() @@ -857,13 +873,26 @@ var/global/list/robot_modules = list( LANGUAGE_YA_SSA = FALSE ) sprites = list( - "Bloodhound" = "syndie_bloodhound", - "Treadhound" = "syndie_treadhound", - "HD-MAD" = "mcspizzytronsyndi", - "Heph Droid" = "heavysyndi", - "Arachnotronic" = "arachnotronicsyndi", - "Toileto-tron" = "syndi-medi", - ) + "Basic" = list(ROBOT_CHASSIS = "robot_syndi", ROBOT_PANEL = "robot_syndi", ROBOT_EYES = "robot"), + "Bloodhound" = list(ROBOT_CHASSIS = "bloodhound_syndi", ROBOT_PANEL = "bloodhound_syndi", ROBOT_EYES = "bloodhound"), + "Treadhound" = list(ROBOT_CHASSIS = "treadhound_syndi", ROBOT_PANEL = "treadhound_syndi", ROBOT_EYES = "treadhound"), + "Treadhead" = list(ROBOT_CHASSIS = "treadhead_syndi", ROBOT_PANEL = "treadhead_syndi", ROBOT_EYES = "treadhead"), + "Spiffy" = list(ROBOT_CHASSIS = "mcspizzy_syndi", ROBOT_PANEL = "mcspizzy_syndi", ROBOT_EYES = "mcspizzy"), + "Tau-Ceti Drone" = list(ROBOT_CHASSIS = "tauceti_syndi", ROBOT_PANEL = "tauceti_syndi", ROBOT_EYES = "tauceti"), + "Sputnik" = list(ROBOT_CHASSIS = "sputnik_syndi", ROBOT_PANEL = "sputnik_syndi", ROBOT_EYES = "sputnik"), + "Kent" = list(ROBOT_CHASSIS = "kent_syndi", ROBOT_PANEL = "kent_syndi", ROBOT_EYES = "kent"), + "Wide" = list(ROBOT_CHASSIS = "wide_syndi", ROBOT_PANEL = "wide_syndi", ROBOT_EYES = "wide"), + "Cricket" = list(ROBOT_CHASSIS = "cricket_syndi", ROBOT_PANEL = "cricket_syndi", ROBOT_EYES = "cricket"), + "Quad-Dex" = list(ROBOT_CHASSIS = "quaddex_syndi", ROBOT_PANEL = "quaddex_syndi", ROBOT_EYES = "quaddex"), + "Arthrodroid" = list(ROBOT_CHASSIS = "arthrodroid_syndi", ROBOT_PANEL = "arthrodroid_syndi", ROBOT_EYES = "arthrodroid"), + "Spiderbot" = list(ROBOT_CHASSIS = "spiderbot_syndi", ROBOT_PANEL = "spiderbot_syndi", ROBOT_EYES = "spiderbot"), + "Heavy" = list(ROBOT_CHASSIS = "heavy_syndi", ROBOT_PANEL = "heavy_syndi", ROBOT_EYES = "heavy_syndi"), + "Positron 03" = list(ROBOT_CHASSIS = "positron03_syndi", ROBOT_PANEL = "positron03_syndi", ROBOT_EYES = "positron03"), + "Plantasonic" = list(ROBOT_CHASSIS = "plantasonic_syndi", ROBOT_PANEL = "plantasonic_syndi", ROBOT_EYES = "plantasonic"), + "Cooler Master" = list(ROBOT_CHASSIS = "coolermaster_syndi", ROBOT_PANEL = "coolermaster_syndi", ROBOT_EYES = "coolermaster"), + "Phage" = list(ROBOT_CHASSIS = "phage_syndi", ROBOT_PANEL = "phage_syndi", ROBOT_EYES = "phage") + ) + /obj/item/robot_module/syndicate/Initialize(mapload, mob/living/silicon/robot/R) . = ..() @@ -895,7 +924,10 @@ var/global/list/robot_modules = list( name = "combat robot module" channels = list(CHANNEL_SECURITY = TRUE) networks = list(NETWORK_SECURITY) - sprites = list("Roller" = "droid-combat") + sprites = list( + "Roller" = list(ROBOT_CHASSIS = "droid-combat", ROBOT_PANEL = "heavy_syndi", ROBOT_EYES = "droid-combat"), + "Squats" = list(ROBOT_CHASSIS = "squats", ROBOT_PANEL = "heavy_syndi", ROBOT_EYES = "squats") + ) can_be_pushed = FALSE supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack) @@ -1117,7 +1149,7 @@ var/global/list/robot_modules = list( CHANNEL_RESPONSE_TEAM = TRUE, CHANNEL_AI_PRIVATE = TRUE ) - sprites = list("Roller" = "droid-combat") //TMP // temp my left nut // temp my right nut + sprites = list("Roller" = list(ROBOT_CHASSIS = "droid-combat", ROBOT_PANEL = "heavy_syndi", ROBOT_EYES = "droid-combat")) //TMP // temp my left nut // temp my right nut can_be_pushed = FALSE /obj/item/robot_module/bluespace/Initialize(mapload, mob/living/silicon/robot/R) diff --git a/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm b/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm index eea15669683..743e699233e 100644 --- a/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm @@ -25,7 +25,7 @@ /mob/living/simple_animal/hostile/rogue_drone/Initialize() . = ..() name = "[initial(name)] ([rand(100, 999)])" - eye_overlay = image(icon, "eyes-[icon_state]-emag", layer = EFFECTS_ABOVE_LIGHTING_LAYER) + eye_overlay = image(icon, "[icon_state]-eyes_emag", layer = EFFECTS_ABOVE_LIGHTING_LAYER) eye_overlay.appearance_flags = KEEP_APART add_overlay(eye_overlay) @@ -54,4 +54,4 @@ if(istype(H.head, /obj/item/holder/drone)) return FALSE if(istype(H.wear_suit, /obj/item/clothing/suit/cardborg) && istype(H.head, /obj/item/clothing/head/cardborg)) - return FALSE \ No newline at end of file + return FALSE diff --git a/html/changelogs/Wezzy_RobotResprite.yml b/html/changelogs/Wezzy_RobotResprite.yml new file mode 100644 index 00000000000..5a6abe38a26 --- /dev/null +++ b/html/changelogs/Wezzy_RobotResprite.yml @@ -0,0 +1,50 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: Wowzewow, Cdey + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - imageadd: "Resprites most, if not all robots, including eyes." + - imageadd: "All robots now have unique maintenance panels." + - imageadd: "Janicarts look better by extension now." + - imagedel: "Removed SD-MAD and Unbranded-MAD sprites." + - imageadd: "Adds eight new robot sprites - The Sputnik, Arthrodroid, Wide, Cricket, Positron 03, Plantasonic, Coolermaster and Phage." + - tweak: "Toileto-tron renamed to Kent, Arachnotron renamed to Spiderbot." + - bugfix: "Fixed missing sprite for Mining Drones." + - bugfix : "Fixed robot eyes going over tables." + - refactor : "Refactors Cyborg sprites to work better." + - bugfix : "Fixes sprite interaction between mobility module and eyes." diff --git a/icons/mob/AI.dmi b/icons/mob/AI.dmi index 24543a22e31..f1907a2abc2 100644 Binary files a/icons/mob/AI.dmi and b/icons/mob/AI.dmi differ diff --git a/icons/mob/custom_synthetic.dmi b/icons/mob/custom_synthetic.dmi index e93465bfe42..230f5bacfac 100644 Binary files a/icons/mob/custom_synthetic.dmi and b/icons/mob/custom_synthetic.dmi differ diff --git a/icons/mob/custom_synths/customhologram.dmi b/icons/mob/custom_synths/customhologram.dmi index 7657b5fe12f..f76eb370720 100644 Binary files a/icons/mob/custom_synths/customhologram.dmi and b/icons/mob/custom_synths/customhologram.dmi differ diff --git a/icons/mob/items/righthand_holder.dmi b/icons/mob/items/righthand_holder.dmi index ca3d1d7b590..a9fb0a3564e 100644 Binary files a/icons/mob/items/righthand_holder.dmi and b/icons/mob/items/righthand_holder.dmi differ diff --git a/icons/mob/npc/held_mobs.dmi b/icons/mob/npc/held_mobs.dmi index 6e6dce719cc..0520503a9a5 100644 Binary files a/icons/mob/npc/held_mobs.dmi and b/icons/mob/npc/held_mobs.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 4f026ac924a..6c31bb7c7f6 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi index 2e179012fc9..3fe313c08c9 100644 Binary files a/icons/obj/vehicles.dmi and b/icons/obj/vehicles.dmi differ