diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index cabcbe8ce87..cd7ef9f442b 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -222,7 +222,7 @@ feedback_inc("cyborg_birth",1) callHook("borgify", list(O)) - O.Namepick() + O.namepick() qdel(src) else diff --git a/code/game/objects/structures/ghost_pods/silicon.dm b/code/game/objects/structures/ghost_pods/silicon.dm index 74f53e92045..86ec5e480b9 100644 --- a/code/game/objects/structures/ghost_pods/silicon.dm +++ b/code/game/objects/structures/ghost_pods/silicon.dm @@ -31,7 +31,7 @@ from the pod is not a crewmember.") R.ckey = M.ckey visible_message("As \the [src] opens, the eyes of the robot flicker as it is activated.") - R.Namepick() + R.namepick() log_and_message_admins("successfully opened \a [src] and got a Lost Drone.") ..() @@ -57,7 +57,7 @@ definiton of 'your gravesite' is where your pod is.") R.ckey = M.ckey visible_message("As \the [src] opens, the eyes of the robot flicker as it is activated.") - R.Namepick() + R.namepick() ..() /obj/structure/ghost_pod/ghost_activated/swarm_drone diff --git a/code/game/objects/structures/ghost_pods/silicon_vr.dm b/code/game/objects/structures/ghost_pods/silicon_vr.dm index 823208487f5..a4a7347ca42 100644 --- a/code/game/objects/structures/ghost_pods/silicon_vr.dm +++ b/code/game/objects/structures/ghost_pods/silicon_vr.dm @@ -21,7 +21,7 @@ from the pod is not a crewmember.") R.ckey = M.ckey visible_message("As \the [src] opens, the eyes of the robot flicker as it is activated.") - R.Namepick() + R.namepick() log_and_message_admins("successfully opened \a [src] and got a Stray Drone.") used = TRUE return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm index 4f186ef5b55..858438be6ce 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm @@ -504,29 +504,4 @@ var/armor_soak = get_armor_soak(T, "melee") T.apply_damage(20, HALLOSS,, armor_block, armor_soak) if(prob(75)) //75% chance to stun for 5 seconds, really only going to be 4 bcus click cooldown+animation. - T.apply_effect(5, WEAKEN, armor_block) - -/* -/mob/living/silicon/robot/proc/reskin_booze() - set name = "Change Drink Color" - set category = "Robot Commands" - set desc = "Choose the color of drink displayed inside you." - - var/mob/M = usr - var/list/options = list() - options["Beer"] = "Beer Buddy" - options["Curacao"] = "Brilliant Blue" - options["Coffee"] = "Caffine Dispenser" - options["Space Mountain Wind"] = "Gamer Juice Maker" - options["Whiskey Soda"] = "Liqour Licker" - options["Grape Soda"] = "The Grapist" - options["Demon's Blood"] = "Vampire's Aid" - var/choice = tgui_input_list(M, "Choose your drink!", "Drink Choice", options) - if(src && choice && !M.stat && in_range(M,src)) - icontype = options[choice] - var/active_sound = 'sound/effects/bubbles.ogg' - playsound(src.loc, "[active_sound]", 100, 0, 4) - to_chat(M, "Your Tank now displays [choice]. Drink up and enjoy!") - update_icon() - return 1 -*/ \ No newline at end of file + T.apply_effect(5, WEAKEN, armor_block) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 16e86674910..7cfa78b7311 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -123,7 +123,7 @@ var/list/mob_hat_cache = list() var/datum/robot_component/C = components[V] C.max_damage = 10 - verbs -= /mob/living/silicon/robot/verb/Namepick + verbs -= /mob/living/silicon/robot/verb/namepick if(can_pick_shell) var/random = pick(shell_types) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index e1b937ca17a..e75490373d5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -32,6 +32,7 @@ var/datum/robot_sprite/sprite_datum // Sprite datum, holding all our sprite data var/icon_selected = 1 // If icon selection has been completed yet var/icon_selection_tries = 0 // Remaining attempts to select icon before a selection is forced + var/list/sprite_extra_customization = list() //Hud stuff @@ -347,8 +348,10 @@ if (meta_info) ooc_notes = meta_info -/mob/living/silicon/robot/verb/Namepick() +/mob/living/silicon/robot/verb/namepick() + set name = "Pick Name" set category = "Robot Commands" + if(custom_name) to_chat(usr, "You can't pick another custom name. Go ask for a name change.") return 0 @@ -363,6 +366,17 @@ updatename() update_icon() +/mob/living/silicon/robot/verb/extra_customization() + set name = "Customize Appearance" + set category = "Robot Commands" + set desc = "Customize your appearance (assuming your chosen sprite allows)." + + if(!sprite_datum || !sprite_datum.has_extra_customization) + to_chat(src, "Your sprite cannot be customized.") + return + + sprite_datum.handle_extra_customization(src) + /mob/living/silicon/robot/proc/self_diagnosis() if(!is_component_functioning("diagnosis unit")) return null @@ -908,18 +922,6 @@ var/open_overlay = sprite_datum.get_open_sprite(src) if(open_overlay) add_overlay(open_overlay) -/* - if(has_active_type(/obj/item/borg/combat/shield)) - var/obj/item/borg/combat/shield/shield = locate() in src - if(shield && shield.active) - add_overlay("[module_sprites[icontype]]-shield") - - if(modtype == "Combat") - if(module_active && istype(module_active,/obj/item/borg/combat/mobility)) - icon_state = "[module_sprites[icontype]]-roll" - else - icon_state = module_sprites[icontype] -*/ /mob/living/silicon/robot/proc/installed_modules() if(weapon_lock) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index bc5c2765cbc..f1e82757c80 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -512,34 +512,13 @@ var/global/list/robot_modules = list( LANGUAGE_DRUDAKAR = 1, LANGUAGE_TAVAN = 1 ) + pto_type = PTO_CIVILIAN /obj/item/weapon/robot_module/robot/clerical/butler channels = list("Service" = 1) /obj/item/weapon/robot_module/robot/clerical/butler/general - sprites = list( - "M-USE NanoTrasen" = "robotServ", - "Cabeiri" = "eyebot-standard", - "Haruka" = "marinaSV", - "Michiru" = "maidbot", - "Usagi" = "tallgreen", - "Telemachus" = "toiletbot", - "WTOperator" = "sleekservice", - "WTOmni" = "omoikane", - "XI-GUS" = "spider", - "XI-ALP" = "heavyServ", - "Standard" = "Service2", - "Waitress" = "Service", - "Bro" = "Brobot", - "Rich" = "maximillion", - "Drone - Service" = "drone-service", - "Drone - Hydro" = "drone-hydro", - "Usagi-II" = "tall2service", - "Pyralis" = "Glitterfly-Service", - "Decapod" = "decapod-Service", - "Pneuma" = "pneuma-Service", - "Tower" = "drider-Service" - ) + name = "service robot module" /obj/item/weapon/robot_module/robot/clerical/butler/general/New() ..() @@ -577,27 +556,6 @@ var/global/list/robot_modules = list( /obj/item/weapon/robot_module/robot/clerical/general name = "clerical robot module" - sprites = list( - "M-USE NanoTrasen" = "robotCler", - "Cabeiri" = "eyebot-standard", - "Haruka" = "marinaSV", - "Usagi" = "tallgreen", - "Telemachus" = "toiletbot", - "WTOperator" = "sleekclerical", - "WTOmni" = "omoikane", - "XI-GUS" = "spidercom", - "XI-ALP" = "heavyServ", - "Waitress" = "Service", - "Bro" = "Brobot", - "Rich" = "maximillion", - "Default" = "Service2", - "Drone" = "drone-blu", - "Usagi-II" = "tall2service", - "Pyralis" = "Glitterfly-Clerical", - "Decapod" = "decapod-Clerical", - "Pneuma" = "pneuma-Clerical", - "Tower" = "drider-Clerical" - ) /obj/item/weapon/robot_module/robot/clerical/general/New() ..() @@ -709,12 +667,6 @@ var/global/list/robot_modules = list( /obj/item/weapon/robot_module/robot/security/combat name = "combat robot module" hide_on_manifest = TRUE - sprites = list( - "Haruka" = "marinaCB", - "Combat Android" = "droid-combat", - "Insekt" = "insekt-Combat", - "Decapod" = "decapod-Combat" - ) /obj/item/weapon/robot_module/robot/security/combat/New() ..() @@ -727,6 +679,8 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/device/ticket_printer(src) //VOREStation Add src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src) + src.modules += new /obj/item/device/dogborg/sleeper/K9/ert(src) + /* Drones */ diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 0642c0b4553..85f3856c5c8 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -1,6 +1,3 @@ -/obj/item/weapon/robot_module - var/vr_sprites = list() - /hook/startup/proc/robot_modules_vr() robot_modules["Medihound"] = /obj/item/weapon/robot_module/robot/medical/medihound robot_modules["K9"] = /obj/item/weapon/robot_module/robot/security/knine @@ -27,38 +24,6 @@ src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people. . = ..() //Any Global vore modules will come from here -/obj/item/weapon/robot_module/robot/clerical - pto_type = PTO_CIVILIAN - -/obj/item/weapon/robot_module/robot/clerical/butler/general - vr_sprites = list( - "Handy - Service" = "handy-service", - "Handy - Hydro" = "handy-hydro", - "Acheron" = "mechoid-Service", - "Shellguard Noble" = "Noble-SRV", - "ZOOM-BA" = "zoomba-service", - "W02M" = "worm-service", - "Feminine Humanoid" = "uptall-service" - ) - -/obj/item/weapon/robot_module/robot/clerical/general - vr_sprites = list( - "Handy" = "handy-clerk", - "Acheron" = "mechoid-Service", - "Shellguard Noble" = "Noble-SRV", - "ZOOM-BA" = "zoomba-clerical", - "W02M" = "worm-service", - "Feminine Humanoid" = "uptall-service" - ) - -/obj/item/weapon/robot_module/robot/security/combat - vr_sprites = list( - "Acheron" = "mechoid-Combat", - "ZOOM-BA" = "zoomba-combat", - "W02M" = "worm-combat", - "Feminine Humanoid" = "uptall-security" - ) - /obj/item/weapon/robot_module/robot/security/knine name = "k9 robot module" @@ -263,11 +228,6 @@ /obj/item/weapon/robot_module/robot/security/ert name = "Emergency Responce module" - sprites = list( - "Standard" = "ert", - "Classic" = "ertold", - "Borgi" = "borgi" - ) /obj/item/weapon/robot_module/robot/security/ert/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/weapon/handcuffs/cyborg(src) @@ -602,21 +562,6 @@ // Uses modified K9 sprites. /obj/item/weapon/robot_module/robot/clerical/butler/brodog name = "service-hound module" - sprites = list( - "Blackhound" = "k50", - "Pinkhound" = "k69", - "ServicehoundV2" = "serve2", - "ServicehoundV2 Darkmode" = "servedark", - "Drake" = "drakemine", - "Raptor V-4" = "serviraptor", - "Raptor V-4000" = "fancyraptor", - "MEKA" = "mekaserve", - "MEKA v2" = "newmekaserve", - "NIKO" = "mmekaserv", - "NIKA" = "fmekaserv", - "K4T" = "k4tserve", - "K4Talt" = "k4tserve_alt1" - ) can_be_pushed = 0 @@ -752,15 +697,6 @@ /obj/item/weapon/robot_module/robot/clerical/butler/booze name = "BoozeHound robot module" can_be_pushed = 0 - sprites = list( - "Beer Buddy" = "boozeborg", - "Brilliant Blue" = "boozeborg(blue)", - "Caffine Dispenser" = "boozeborg(coffee)", - "Gamer Juice Maker" = "boozeborg(green)", - "Liqour Licker" = "boozeborg(orange)", - "The Grapist" = "boozeborg(purple)", - "Vampire's Aid" = "boozeborg(red)" - ) /obj/item/weapon/robot_module/robot/clerical/butler/booze/New(var/mob/living/silicon/robot/R) ..() diff --git a/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm index 843e75bd41f..1fabd752aa6 100644 --- a/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm +++ b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm @@ -15,6 +15,7 @@ var/list/rest_sprite_options var/has_dead_sprite = FALSE var/has_dead_sprite_overlay = FALSE + var/has_extra_customization = FALSE var/vis_height = 32 var/pixel_x = 0 @@ -67,6 +68,9 @@ return +/datum/robot_sprite/proc/handle_extra_customization(var/mob/living/silicon/robot/ourborg) + return + // Dogborgs and not-dogborgs that use dogborg stuff. Oh no. /datum/robot_sprite/dogborg diff --git a/code/modules/mob/living/silicon/robot/sprites/civilian.dm b/code/modules/mob/living/silicon/robot/sprites/civilian.dm new file mode 100644 index 00000000000..99b28e43c13 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/sprites/civilian.dm @@ -0,0 +1,372 @@ +// Clerical and Service modules have a lot of shared sprites so they're in same file +// (some of those sprites are also shared with Standard, but ive already done it as its own thing, so some duplicates are fine) + +// Both Service and Clerical + +// Regular sprites + +/datum/robot_sprite/civilian + module_type = list("Service", "Clerical") + sprite_icon = 'icons/mob/robot/civilian.dmi' + +/datum/robot_sprite/civilian/eyebot + name = "Cabeiri" + sprite_icon_state = "eyebot" + +/datum/robot_sprite/civilian/marina + name = "Haruka" + sprite_icon_state = "marina" + +/datum/robot_sprite/civilian/tall + name = "Usagi" + sprite_icon_state = "tall" + has_eye_sprites = FALSE + +/datum/robot_sprite/civilian/toiletbot + name = "Telemachus" + sprite_icon_state = "toiletbot" + +/datum/robot_sprite/civilian/omoikane + name = "WTOmni" + sprite_icon_state = "omoikane" + +/datum/robot_sprite/civilian/heavy + name = "XI-ALP" + sprite_icon_state = "heavy" + +/datum/robot_sprite/civilian/waitress + name = "Waitress" + sprite_icon_state = "waitress" + has_eye_sprites = FALSE + +/datum/robot_sprite/civilian/waiter + name = "Waiter" + sprite_icon_state = "waiter" + has_eye_sprites = FALSE + +/datum/robot_sprite/civilian/bro + name = "Bro" + sprite_icon_state = "bro" + has_eye_sprites = FALSE + +/datum/robot_sprite/civilian/maximillion + name = "Rich" + sprite_icon_state = "maximillion" + has_eye_sprites = FALSE + +/datum/robot_sprite/civilian/tall2 + name = "Usagi-II" + sprite_icon_state = "tall2" + +/datum/robot_sprite/civilian/mechoid + name = "Acheron" + sprite_icon_state = "mechoid" + +/datum/robot_sprite/civilian/noble + name = "Shellguard Noble" + sprite_icon_state = "noble" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/civilian/worm + name = "W02M" + sprite_icon_state = "worm" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/civilian/uptall + name = "Feminine Humanoid" + sprite_icon_state = "uptall" + +// Wide/dogborg sprites +/* +/datum/robot_sprite/dogborg/civilian + module_type = list("Service", "Clerical") + sprite_icon = 'icons/mob/robot/civilian_wide.dmi' + + // None yet +*/ +// Tall sprites +/* +/datum/robot_sprite/dogborg/tall/civilian + module_type = list("Service", "Clerical") + sprite_icon = 'icons/mob/robot/civilian_large.dmi' + + // None yet +*/ + +// Service + +// Regular sprites + +/datum/robot_sprite/service + module_type = "Service" + sprite_icon = 'icons/mob/robot/service.dmi' + +/datum/robot_sprite/service/default + name = DEFAULT_ROBOT_SPRITE_NAME + default_sprite = TRUE + sprite_icon_state = "default" + +/datum/robot_sprite/service/maid + name = "Michiru" + sprite_icon_state = "maid" + +/datum/robot_sprite/service/sleek + name = "WTOperator" + sprite_icon_state = "sleek" + +/datum/robot_sprite/service/spider + name = "XI-GUS" + sprite_icon_state = "spider" + +/datum/robot_sprite/service/drone + name = "Drone - Service" + sprite_icon_state = "drone-crisis" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/service/drone_hydro + name = "Drone - Hydro" + sprite_icon_state = "drone-hydro" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/service/glitterfly + name = "Pyralis" + sprite_icon_state = "glitterfly" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/service/decapod + name = "Decapod" + sprite_icon_state = "decapod" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/service/pneuma + name = "Pneuma" + sprite_icon_state = "pneuma" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/service/drider + name = "Tower" + sprite_icon_state = "drider" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/service/handy + name = "Handy - Service" + sprite_icon_state = "handy" + +/datum/robot_sprite/service/handy_hydro + name = "Handy - Hydro" + sprite_icon_state = "handy-hydro" + +/datum/robot_sprite/service/zoomba + name = "ZOOM-BA" + sprite_icon_state = "zoomba" + has_dead_sprite = TRUE + +// Wide/dogborg sprites + +/datum/robot_sprite/dogborg/service + module_type = "Service" + sprite_icon = 'icons/mob/robot/service_wide.dmi' + +/datum/robot_sprite/dogborg/service/hound + name = "Blackhound" + sprite_icon_state = "hound" + has_eye_light_sprites = TRUE + has_vore_belly_sprites = FALSE + +/datum/robot_sprite/dogborg/service/houndpink + name = "Pinkhound" + sprite_icon_state = "houndpink" + has_eye_light_sprites = TRUE + has_vore_belly_sprites = FALSE + +/datum/robot_sprite/dogborg/service/vale + name = "ServicehoundV2" + sprite_icon_state = "vale" + has_eye_light_sprites = TRUE + has_vore_belly_sprites = FALSE + +/datum/robot_sprite/dogborg/service/valedark + name = "ServicehoundV2 Darkmode" + sprite_icon_state = "valedark" + has_eye_light_sprites = TRUE + has_vore_belly_sprites = FALSE + +/datum/robot_sprite/dogborg/service/drake + name = "Drake" + sprite_icon_state = "drake" + +/datum/robot_sprite/dogborg/service/booze + name = "Boozehound" + sprite_icon = 'icons/mob/robot/service_wide_booze.dmi' + sprite_icon_state = "booze" + rest_sprite_options = list("Default") + has_extra_customization = TRUE + + var/list/booze_options = list("Beer" = "booze", + "Space Mountain Wind" = "boozegreen", + "Curacao" = "boozeblue", + "Grape Soda" = "boozepurple", + "Demon's Blood" = "boozered", + "Whiskey Soda" = "boozeorange", + "Coffee" = "boozebrown") + +/datum/robot_sprite/dogborg/service/booze/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg) + if(!("boozehound" in ourborg.sprite_extra_customization) || !ourborg.sprite_extra_customization["boozehound"]) + return ..() + else + ourborg.icon_state = booze_options[ourborg.sprite_extra_customization["boozehound"]] + +/datum/robot_sprite/dogborg/service/booze/get_belly_overlay(var/mob/living/silicon/robot/ourborg) + if(!("boozehound" in ourborg.sprite_extra_customization) || !ourborg.sprite_extra_customization["boozehound"]) + return ..() + else + return "[booze_options[ourborg.sprite_extra_customization["boozehound"]]]-sleeper" + +/datum/robot_sprite/dogborg/service/booze/get_rest_sprite(var/mob/living/silicon/robot/ourborg) + if(!(ourborg.rest_style in rest_sprite_options)) + ourborg.rest_style = "Default" + return "[booze_options[ourborg.sprite_extra_customization["boozehound"]]]-rest" + +/datum/robot_sprite/dogborg/service/booze/handle_extra_customization(var/mob/living/silicon/robot/ourborg) + var/choice = tgui_input_list(ourborg, "Choose your drink!", "Drink Choice", booze_options) + if(ourborg && choice && !ourborg.stat) + if(!("boozehound" in ourborg.sprite_extra_customization)) + ourborg.sprite_extra_customization += "boozehound" + ourborg.sprite_extra_customization["boozehound"] = choice + playsound(ourborg.loc, 'sound/effects/bubbles.ogg', 100, 0, 4) + to_chat(ourborg, "Your tank now displays [choice]. Drink up and enjoy!") + ourborg.update_icon() + return 1 + +// Tall sprites + +/datum/robot_sprite/dogborg/tall/service + module_type = "Service" + sprite_icon = 'icons/mob/robot/service_large.dmi' + +/datum/robot_sprite/dogborg/tall/service/raptor + name = "Raptor V-4" + sprite_icon_state = "raptor" + rest_sprite_options = list("Default", "Bellyup") + +/datum/robot_sprite/dogborg/tall/service/fancyraptor + name = "Raptor V-4000" + sprite_icon_state = "fancyraptor" + rest_sprite_options = list("Default", "Bellyup") + +/datum/robot_sprite/dogborg/tall/service/meka + name = "MEKA" + sprite_icon_state = "meka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + has_vore_belly_sprites = FALSE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/service/newmeka + name = "MEKA v2" + sprite_icon_state = "newmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + has_vore_belly_sprites = FALSE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/service/mmeka + name = "NIKO" + sprite_icon_state = "mmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + has_vore_belly_sprites = FALSE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/service/fmeka + name = "NIKA" + sprite_icon_state = "fmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + has_vore_belly_sprites = FALSE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/service/k4t + name = "K4T" + sprite_icon_state = "k4t" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + has_vore_belly_sprites = FALSE + rest_sprite_options = list("Default", "Bellyup") + +/datum/robot_sprite/dogborg/tall/service/k4t_alt1 + name = "K4Talt" + sprite_icon_state = "k4t_alt1" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + has_vore_belly_sprites = FALSE + rest_sprite_options = list("Default", "Bellyup") + + +// Clerical + +// Regular sprites + +/datum/robot_sprite/clerical + module_type = "Clerical" + sprite_icon = 'icons/mob/robot/clerical.dmi' + +/datum/robot_sprite/clerical/default + name = DEFAULT_ROBOT_SPRITE_NAME + default_sprite = TRUE + sprite_icon_state = "default" + +/datum/robot_sprite/clerical/sleek + name = "WTOperator" + sprite_icon_state = "sleek" + +/datum/robot_sprite/clerical/spider + name = "XI-GUS" + sprite_icon_state = "spider" + +/datum/robot_sprite/clerical/drone + name = "Drone" + sprite_icon_state = "drone-crisis" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/clerical/glitterfly + name = "Pyralis" + sprite_icon_state = "glitterfly" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/clerical/decapod + name = "Decapod" + sprite_icon_state = "decapod" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/clerical/pneuma + name = "Pneuma" + sprite_icon_state = "pneuma" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/clerical/drider + name = "Tower" + sprite_icon_state = "drider" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/clerical/zoomba + name = "ZOOM-BA" + sprite_icon_state = "zoomba" + has_dead_sprite = TRUE + +// Wide/dogborg sprites +/* +/datum/robot_sprite/dogborg/clerical + module_type = "Clerical" + sprite_icon = 'icons/mob/robot/clerical_wide.dmi' + + // None yet +*/ +// Tall sprites +/* +/datum/robot_sprite/dogborg/tall/clerical + module_type = "Clerical" + sprite_icon = 'icons/mob/robot/clerical_large.dmi' + + // None yet +*/ \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/sprites/combat.dm b/code/modules/mob/living/silicon/robot/sprites/combat.dm new file mode 100644 index 00000000000..f71b4b9a6f6 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/sprites/combat.dm @@ -0,0 +1,113 @@ +// Regular sprites + +/datum/robot_sprite/combat + module_type = "Combat" + sprite_icon = 'icons/mob/robot/combat.dmi' + + var/has_speed_sprite = FALSE + var/has_shield_sprite = FALSE + +/datum/robot_sprite/combat/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg) + if(has_speed_sprite) + if(istype(ourborg.module_active,/obj/item/borg/combat/mobility)) + ourborg.icon_state = "[sprite_icon_state]-roll" + if(has_shield_sprite) + if(ourborg.has_active_type(/obj/item/borg/combat/shield)) + var/obj/item/borg/combat/shield/shield = locate() in ourborg + if(shield && shield.active) + ourborg.add_overlay("[sprite_icon_state]-shield") + +/datum/robot_sprite/combat/default + name = DEFAULT_ROBOT_SPRITE_NAME + default_sprite = TRUE + sprite_icon_state = "default" + +/datum/robot_sprite/combat/marina + name = "Haruka" + sprite_icon_state = "marina" + has_speed_sprite = TRUE + has_shield_sprite = TRUE + +/datum/robot_sprite/combat/droid + name = "Android" + sprite_icon_state = "droid" + has_speed_sprite = TRUE + has_shield_sprite = TRUE + +/datum/robot_sprite/combat/droid/get_eyes_overlay(var/mob/living/silicon/robot/ourborg) + if(istype(ourborg.module_active,/obj/item/borg/combat/mobility)) + return + else + return ..() + +/datum/robot_sprite/combat/insekt + name = "Insekt" + sprite_icon_state = "insekt" + has_shield_sprite = TRUE + +/datum/robot_sprite/combat/decapod + name = "Decapod" + sprite_icon_state = "decapod" + has_custom_open_sprites = TRUE + has_shield_sprite = TRUE + +/datum/robot_sprite/combat/mechoid + name = "Acheron" + sprite_icon_state = "mechoid" + has_speed_sprite = TRUE + has_shield_sprite = TRUE + +/datum/robot_sprite/combat/zoomba + name = "ZOOM-BA" + sprite_icon_state = "zoomba" + has_dead_sprite = TRUE + has_speed_sprite = TRUE + has_shield_sprite = TRUE + +/datum/robot_sprite/combat/worm + name = "W02M" + sprite_icon_state = "worm" + has_custom_open_sprites = TRUE + has_shield_sprite = TRUE + +/datum/robot_sprite/combat/uptall + name = "Feminine Humanoid" + sprite_icon_state = "uptall" + +// Wide/dogborg sprites +/* +/datum/robot_sprite/dogborg/combat + module_type = "Combat" + sprite_icon = 'icons/mob/robot/combat_wide.dmi' + + // None yet +*/ +// Tall sprites + +/datum/robot_sprite/dogborg/tall/combat + module_type = "Combat" + sprite_icon = 'icons/mob/robot/combat_large.dmi' + + var/has_gun_sprite = FALSE + +/datum/robot_sprite/dogborg/tall/combat/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg) + if(has_gun_sprite && (istype(ourborg.module_active, /obj/item/weapon/gun/energy/laser/mounted) || istype(ourborg.module_active, /obj/item/weapon/gun/energy/taser/mounted/cyborg/ertgun) || istype(ourborg.module_active, /obj/item/weapon/gun/energy/lasercannon/mounted))) + ourborg.add_overlay("[sprite_icon_state]-gun") + +/datum/robot_sprite/dogborg/tall/combat/derg + name = "ERT" + sprite_icon_state = "derg" + rest_sprite_options = list("Default") + has_gun_sprite = TRUE + +/datum/robot_sprite/dogborg/tall/combat/hound + name = "Combat Hound" + sprite_icon_state = "hound" + rest_sprite_options = list("Default") + +/datum/robot_sprite/dogborg/tall/combat/borgi + name = "Borgi" + sprite_icon_state = "borgi" + rest_sprite_options = list("Default") + has_eye_sprites = FALSE + has_eye_light_sprites = TRUE \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/sprites/medical.dm b/code/modules/mob/living/silicon/robot/sprites/medical.dm index 9f9f72981a9..61f04a568b9 100644 --- a/code/modules/mob/living/silicon/robot/sprites/medical.dm +++ b/code/modules/mob/living/silicon/robot/sprites/medical.dm @@ -79,13 +79,13 @@ has_custom_open_sprites = TRUE // Wide/dogborg sprites - +/* /datum/robot_sprite/dogborg/medical module_type = list("Crisis", "Surgeon") sprite_icon = 'icons/mob/robot/medical_wide.dmi' // None yet - +*/ // Tall sprites /datum/robot_sprite/dogborg/tall/medical @@ -189,10 +189,20 @@ module_type = "Surgeon" sprite_icon = 'icons/mob/robot/surgical_wide.dmi' + var/has_sleeper_light_indicator = FALSE + +/datum/robot_sprite/dogborg/surgical/get_belly_overlay(var/mob/living/silicon/robot/ourborg) + if(has_sleeper_light_indicator) + if(ourborg.sleeper_state == 2 && !(ourborg.vore_selected?.silicon_belly_overlay_preference == "Vorebelly")) return "[sprite_icon_state]-sleeper_g" + else return "[sprite_icon_state]-sleeper_r" + else + return ..() + /datum/robot_sprite/dogborg/surgical/vale name = "Traumahound" sprite_icon_state = "vale" has_eye_light_sprites = TRUE + has_sleeper_light_indicator = TRUE /datum/robot_sprite/dogborg/surgical/borgi name = "Borgi" @@ -273,32 +283,32 @@ module_type = "Crisis" sprite_icon = 'icons/mob/robot/crisis_wide.dmi' + var/has_sleeper_light_indicator = FALSE + +/datum/robot_sprite/dogborg/crisis/get_belly_overlay(var/mob/living/silicon/robot/ourborg) + if(has_sleeper_light_indicator) + if(ourborg.sleeper_state == 2 && !(ourborg.vore_selected?.silicon_belly_overlay_preference == "Vorebelly")) return "[sprite_icon_state]-sleeper_g" + else return "[sprite_icon_state]-sleeper_r" + else + return ..() + /datum/robot_sprite/dogborg/crisis/hound name = "CargoHound" sprite_icon_state = "hound" has_eye_light_sprites = TRUE - -/datum/robot_sprite/dogborg/crisis/hound/get_belly_overlay(var/mob/living/silicon/robot/ourborg) - if(ourborg.sleeper_state == 2 && !(ourborg.vore_selected?.silicon_belly_overlay_preference == "Vorebelly")) return "[sprite_icon_state]-sleeper_g" - else return "[sprite_icon_state]-sleeper_r" + has_sleeper_light_indicator = TRUE /datum/robot_sprite/dogborg/crisis/hounddark name = "CargoHoundDark" sprite_icon_state = "hounddark" has_eye_light_sprites = TRUE - -/datum/robot_sprite/dogborg/crisis/hounddark/get_belly_overlay(var/mob/living/silicon/robot/ourborg) - if(ourborg.sleeper_state == 2 && !(ourborg.vore_selected?.silicon_belly_overlay_preference == "Vorebelly")) return "[sprite_icon_state]-sleeper_g" - else return "[sprite_icon_state]-sleeper_r" + has_sleeper_light_indicator = TRUE /datum/robot_sprite/dogborg/crisis/vale name = "KMine" sprite_icon_state = "vale" has_eye_light_sprites = TRUE - -/datum/robot_sprite/dogborg/crisis/vale/get_belly_overlay(var/mob/living/silicon/robot/ourborg) - if(ourborg.sleeper_state == 2 && !(ourborg.vore_selected?.silicon_belly_overlay_preference == "Vorebelly")) return "[sprite_icon_state]-sleeper_g" - else return "[sprite_icon_state]-sleeper_r" + has_sleeper_light_indicator = TRUE /datum/robot_sprite/dogborg/crisis/borgi name = "Borgi" diff --git a/code/modules/mob/living/silicon/robot/sprites/standard.dm b/code/modules/mob/living/silicon/robot/sprites/standard.dm index d37ff1dd861..4e729ecf4e8 100644 --- a/code/modules/mob/living/silicon/robot/sprites/standard.dm +++ b/code/modules/mob/living/silicon/robot/sprites/standard.dm @@ -109,4 +109,21 @@ /datum/robot_sprite/standard/uptall2 name = "Feminine Humanoid, Variant 2" - sprite_icon_state = "uptall2" \ No newline at end of file + sprite_icon_state = "uptall2" + +// Wide/dogborg sprites +/* +/datum/robot_sprite/dogborg/standard + module_type = "Standard" + sprite_icon = 'icons/mob/robot/standard_wide.dmi' + + // None yet +*/ +// Tall sprites +/* +/datum/robot_sprite/dogborg/tall/standard + module_type = "Standard" + sprite_icon = 'icons/mob/robot/standard_large.dmi' + + // None yet +*/ \ No newline at end of file diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index fb8410e0fac..164ca19b159 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -50,7 +50,7 @@ return for(var/t in organs) qdel(t) - + //VOREStation Edit Start - Hologram examine flavor var/mob/living/silicon/ai/O = ..(move) if(O) @@ -195,7 +195,7 @@ O.fuzzy = B.fuzzy //VOREStation Addition: add size prefs to borgs callHook("borgify", list(O)) - O.Namepick() + O.namepick() spawn(0) // Mobs still instantly del themselves, thus we need to spawn or O will never be returned qdel(src) diff --git a/icons/mob/robot/civilian.dmi b/icons/mob/robot/civilian.dmi new file mode 100644 index 00000000000..760706a9d6c Binary files /dev/null and b/icons/mob/robot/civilian.dmi differ diff --git a/icons/mob/robot/clerical.dmi b/icons/mob/robot/clerical.dmi new file mode 100644 index 00000000000..d44682892e0 Binary files /dev/null and b/icons/mob/robot/clerical.dmi differ diff --git a/icons/mob/robot/combat.dmi b/icons/mob/robot/combat.dmi new file mode 100644 index 00000000000..098ae0f5c28 Binary files /dev/null and b/icons/mob/robot/combat.dmi differ diff --git a/icons/mob/robot/combat_large.dmi b/icons/mob/robot/combat_large.dmi new file mode 100644 index 00000000000..0b45493b258 Binary files /dev/null and b/icons/mob/robot/combat_large.dmi differ diff --git a/icons/mob/robot/medical_wide.dmi b/icons/mob/robot/medical_wide.dmi deleted file mode 100644 index f1dfc3bf408..00000000000 Binary files a/icons/mob/robot/medical_wide.dmi and /dev/null differ diff --git a/icons/mob/robot/security.dmi b/icons/mob/robot/security.dmi index 422e902f087..a5733994d50 100644 Binary files a/icons/mob/robot/security.dmi and b/icons/mob/robot/security.dmi differ diff --git a/icons/mob/robot/service.dmi b/icons/mob/robot/service.dmi new file mode 100644 index 00000000000..54e262b29f1 Binary files /dev/null and b/icons/mob/robot/service.dmi differ diff --git a/icons/mob/robot/service_large.dmi b/icons/mob/robot/service_large.dmi new file mode 100644 index 00000000000..496acdd7911 Binary files /dev/null and b/icons/mob/robot/service_large.dmi differ diff --git a/icons/mob/robot/service_wide.dmi b/icons/mob/robot/service_wide.dmi new file mode 100644 index 00000000000..f8e9d0b211d Binary files /dev/null and b/icons/mob/robot/service_wide.dmi differ diff --git a/icons/mob/robot/service_wide_booze.dmi b/icons/mob/robot/service_wide_booze.dmi new file mode 100644 index 00000000000..ccf15038782 Binary files /dev/null and b/icons/mob/robot/service_wide_booze.dmi differ diff --git a/icons/mob/robot/surgical_wide.dmi b/icons/mob/robot/surgical_wide.dmi index 6d0b1ae58a9..471ce0fbe4e 100644 Binary files a/icons/mob/robot/surgical_wide.dmi and b/icons/mob/robot/surgical_wide.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 7794023b0ad..f7f27ef9a39 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3031,6 +3031,8 @@ #include "code\modules\mob\living\silicon\robot\robot_modules\swarm.dm" #include "code\modules\mob\living\silicon\robot\robot_modules\syndicate.dm" #include "code\modules\mob\living\silicon\robot\sprites\_sprite_datum.dm" +#include "code\modules\mob\living\silicon\robot\sprites\civilian.dm" +#include "code\modules\mob\living\silicon\robot\sprites\combat.dm" #include "code\modules\mob\living\silicon\robot\sprites\engineering.dm" #include "code\modules\mob\living\silicon\robot\sprites\janitor.dm" #include "code\modules\mob\living\silicon\robot\sprites\medical.dm"