diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 9b44c7cff3..5907cccd10 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -205,15 +205,14 @@ "Medical" = /obj/item/robot_module/medical, \ "Miner" = /obj/item/robot_module/miner, \ "Janitor" = /obj/item/robot_module/janitor, \ - "Service" = /obj/item/robot_module/butler, \ - "MediHound" = /obj/item/robot_module/medihound, \ - "Security K9" = /obj/item/robot_module/k9, \ - "Scrub Puppy" = /obj/item/robot_module/scrubpup) + "Service" = /obj/item/robot_module/butler) if(!CONFIG_GET(flag/disable_peaceborg)) modulelist["Peacekeeper"] = /obj/item/robot_module/peacekeeper if(!CONFIG_GET(flag/disable_secborg)) modulelist["Security"] = /obj/item/robot_module/security + modulelist + get_cit_modules() //Citadel change - adds Citadel's borg modules. + var/input_module = input("Please, select a module!", "Robot", null, null) as null|anything in modulelist if(!input_module || module.type != /obj/item/robot_module) return @@ -593,39 +592,25 @@ /mob/living/silicon/robot/update_icons() cut_overlays() icon_state = module.cyborg_base_icon - if(module.cyborg_base_icon == "medihound") - icon = 'icons/mob/widerobot.dmi' - pixel_x = -16 - if(sleeper_g == 1) - add_overlay("msleeper_g") - if(sleeper_r == 1) - add_overlay("msleeper_r") - if(stat == DEAD) - icon_state = "medihound-wreck" - if(module.cyborg_base_icon == "k9") - icon = 'icons/mob/widerobot.dmi' - pixel_x = -16 - if(laser == 1) - add_overlay("laser") - if(disabler == 1) - add_overlay("disabler") - if(sleeper_g == 1) - add_overlay("ksleeper_g") - if(sleeper_r == 1) - add_overlay("ksleeper_r") - if(stat == DEAD) - icon_state = "k9-wreck" + //Citadel changes start here - Allows modules to use different icon files, and allows modules to specify a pixel offset + icon = (module.cyborg_icon_override ? module.cyborg_icon_override : initial(icon)) - if(module.cyborg_base_icon == "scrubpup") - icon = 'icons/mob/widerobot.dmi' - pixel_x = -16 - if(sleeper_g == 1) - add_overlay("jsleeper_g") - if(sleeper_r == 1) - add_overlay("jsleeper_r") - if(stat == DEAD) - icon_state = "scrubpup-wreck" + if(laser) + add_overlay("laser")//Is this even used??? + if(disabler) + add_overlay("disabler")//ditto + + if(sleeper_g && module.sleeper_overlay) + add_overlay("[module.sleeper_overlay]_g") + if(sleeper_r && module.sleeper_overlay) + add_overlay("[module.sleeper_overlay]_r") + if(stat == DEAD && module.has_snowflake_deadsprite) + icon_state = "[module.cyborg_base_icon]-wreck" + + if(module.cyborg_pixel_offset) + pixel_x = module.cyborg_pixel_offset + //End of citadel changes if(module.cyborg_base_icon == "robot") icon = 'icons/mob/robots.dmi' @@ -1026,6 +1011,7 @@ designation = module.name if(hands) hands.icon_state = module.moduleselect_icon + hands.icon = (module.moduleselect_alternate_icon ? module.moduleselect_alternate_icon : initial(hands.icon)) //CITADEL CHANGE - allows module select icons to use a different icon file if(module.can_be_pushed) status_flags |= CANPUSH else diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 2f1eb7d378..b3fc0ba4ed 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -336,31 +336,6 @@ can_be_pushed = FALSE hat_offset = 3 -/obj/item/robot_module/k9 - name = "Security K-9 Unit module" - basic_modules = list( - /obj/item/restraints/handcuffs/cable/zipties/cyborg/dog, - /obj/item/dogborg/jaws/big, - /obj/item/dogborg/pounce, - /obj/item/clothing/mask/gas/sechailer/cyborg, - /obj/item/soap/tongue, - /obj/item/device/analyzer/nose, - /obj/item/device/dogborg/sleeper/K9, - /obj/item/gun/energy/disabler/cyborg, - /obj/item/pinpointer/crew) - emag_modules = list(/obj/item/gun/energy/laser/cyborg) - ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security, - /obj/item/clockwork/weapon/ratvarian_spear) - cyborg_base_icon = "k9" - moduleselect_icon = "security" - can_be_pushed = FALSE - hat_offset = INFINITY - -/obj/item/robot_module/k9/do_transform_animation() - ..() - to_chat(loc,"While you have picked the security-k9 module, you still have to follow your laws, NOT Space Law. \ - For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.") - /obj/item/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) ..() var/obj/item/gun/energy/e_gun/advtaser/cyborg/T = locate(/obj/item/gun/energy/e_gun/advtaser/cyborg) in basic_modules @@ -372,59 +347,6 @@ else T.charge_tick = 0 -/obj/item/robot_module/medihound - name = "MediHound module" - basic_modules = list( - /obj/item/dogborg/jaws/small, - /obj/item/device/analyzer/nose, - /obj/item/soap/tongue, - /obj/item/device/healthanalyzer, - /obj/item/device/dogborg/sleeper/medihound, - /obj/item/twohanded/shockpaddles/hound, - /obj/item/stack/medical/gauze/cyborg, - /obj/item/device/sensor_device) - emag_modules = list(/obj/item/dogborg/pounce) - ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical, - /obj/item/clockwork/weapon/ratvarian_spear) - cyborg_base_icon = "medihound" - moduleselect_icon = "medical" - can_be_pushed = FALSE - hat_offset = INFINITY - -/obj/item/robot_module/medihound/do_transform_animation() - ..() - to_chat(loc, "Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \ - You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.") - -/obj/item/robot_module/scrubpup - name = "Janitor" - basic_modules = list( - /obj/item/dogborg/jaws/small, - /obj/item/device/analyzer/nose, - /obj/item/soap/tongue/scrubpup, - /obj/item/device/lightreplacer/cyborg, - /obj/item/device/dogborg/sleeper/compactor) - emag_modules = list(/obj/item/dogborg/pounce) - ratvar_modules = list( - /obj/item/clockwork/slab/cyborg/janitor, - /obj/item/clockwork/replica_fabricator/cyborg) - cyborg_base_icon = "scrubpup" - moduleselect_icon = "janitor" - hat_offset = INFINITY - clean_on_move = TRUE - -/obj/item/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) - ..() - var/obj/item/device/lightreplacer/LR = locate(/obj/item/device/lightreplacer) in basic_modules - if(LR) - for(var/i in 1 to coeff) - LR.Charge(R) - -/obj/item/robot_module/scrubpup/do_transform_animation() - ..() - to_chat(loc,"As tempting as it might be, do not begin binging on important items. Eat your garbage responsibly. People are not included under Garbage.") - - /obj/item/robot_module/security/do_transform_animation() ..() to_chat(loc, "While you have picked the security module, you still have to follow your laws, NOT Space Law. \ diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm new file mode 100644 index 0000000000..808a03bd4c --- /dev/null +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -0,0 +1,160 @@ +/mob/living/silicon/robot/proc/get_cit_modules() + var/list/modulelist = list() + modulelist["MediHound"] = /obj/item/robot_module/medihound + if(!CONFIG_GET(flag/disable_secborg)) + modulelist["Security K-9"] = /obj/item/robot_module/k9 + modulelist["Scrub Puppy"] = /obj/item/robot_module/scrubpup + return modulelist + +/obj/item/robot_module + var/sleeper_overlay + var/icon/cyborg_icon_override + var/has_snowflake_deadsprite + var/cyborg_pixel_offset + +/obj/item/robot_module/k9 + name = "Security K-9 Unit module" + basic_modules = list( + /obj/item/restraints/handcuffs/cable/zipties/cyborg/dog, + /obj/item/dogborg/jaws/big, + /obj/item/dogborg/pounce, + /obj/item/clothing/mask/gas/sechailer/cyborg, + /obj/item/soap/tongue, + /obj/item/device/analyzer/nose, + /obj/item/device/dogborg/sleeper/K9, + /obj/item/gun/energy/disabler/cyborg, + /obj/item/pinpointer/crew) + emag_modules = list(/obj/item/gun/energy/laser/cyborg) + ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security, + /obj/item/clockwork/weapon/ratvarian_spear) + cyborg_base_icon = "k9" + moduleselect_icon = "security" + can_be_pushed = FALSE + hat_offset = INFINITY + sleeper_overlay = "ksleeper" + cyborg_icon_override = 'icons/mob/widerobot.dmi' + has_snowflake_deadsprite = TRUE + cyborg_pixel_offset = -16 + +/obj/item/robot_module/k9/do_transform_animation() + ..() + to_chat(loc,"While you have picked the Security K-9 module, you still have to follow your laws, NOT Space Law. \ + For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.") + +/obj/item/robot_module/medihound + name = "MediHound module" + basic_modules = list( + /obj/item/dogborg/jaws/small, + /obj/item/device/analyzer/nose, + /obj/item/soap/tongue, + /obj/item/device/healthanalyzer, + /obj/item/device/dogborg/sleeper/medihound, + /obj/item/twohanded/shockpaddles/hound, + /obj/item/stack/medical/gauze/cyborg, + /obj/item/device/sensor_device) + emag_modules = list(/obj/item/dogborg/pounce) + ratvar_modules = list(/obj/item/clockwork/slab/cyborg/medical, + /obj/item/clockwork/weapon/ratvarian_spear) + cyborg_base_icon = "medihound" + moduleselect_icon = "medical" + can_be_pushed = FALSE + hat_offset = INFINITY + sleeper_overlay = "msleeper" + cyborg_icon_override = 'icons/mob/widerobot.dmi' + has_snowflake_deadsprite = TRUE + cyborg_pixel_offset = -16 + +/obj/item/robot_module/medihound/do_transform_animation() + ..() + to_chat(loc, "Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \ + You are not a security module and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.") + +/obj/item/robot_module/scrubpup + name = "Janitor" + basic_modules = list( + /obj/item/dogborg/jaws/small, + /obj/item/device/analyzer/nose, + /obj/item/soap/tongue/scrubpup, + /obj/item/device/lightreplacer/cyborg, + /obj/item/device/dogborg/sleeper/compactor) + emag_modules = list(/obj/item/dogborg/pounce) + ratvar_modules = list( + /obj/item/clockwork/slab/cyborg/janitor, + /obj/item/clockwork/replica_fabricator/cyborg) + cyborg_base_icon = "scrubpup" + moduleselect_icon = "janitor" + hat_offset = INFINITY + clean_on_move = TRUE + sleeper_overlay = "jsleeper" + cyborg_icon_override = 'icons/mob/widerobot.dmi' + has_snowflake_deadsprite = TRUE + cyborg_pixel_offset = -16 + +/obj/item/robot_module/scrubpup/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) + ..() + var/obj/item/device/lightreplacer/LR = locate(/obj/item/device/lightreplacer) in basic_modules + if(LR) + for(var/i in 1 to coeff) + LR.Charge(R) + +/obj/item/robot_module/scrubpup/do_transform_animation() + ..() + to_chat(loc,"As tempting as it might be, do not begin binging on important items. Eat your garbage responsibly. People are not included under Garbage.") + + +/obj/item/robot_module/medical/be_transformed_to(obj/item/robot_module/old_module) + var/mob/living/silicon/robot/R = loc + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Droid") + if(!borg_icon) + return FALSE + switch(borg_icon) + if("Default") + cyborg_base_icon = "medical" + if("Droid") + cyborg_base_icon = "medical" + cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' + hat_offset = 4 + return ..() + +/obj/item/robot_module/security/be_transformed_to(obj/item/robot_module/old_module) + var/mob/living/silicon/robot/R = loc + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Default - Treads", "Droid") + if(!borg_icon) + return FALSE + switch(borg_icon) + if("Default") + cyborg_base_icon = "sec" + if("Default - Treads") + cyborg_base_icon = "sec-tread" + special_light_key = "sec" + if("Droid") + cyborg_base_icon = "Security" + special_light_key = "service" + hat_offset = 0 + return ..() + +/obj/item/robot_module/engineering/be_transformed_to(obj/item/robot_module/old_module) + var/mob/living/silicon/robot/R = loc + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Default", "Default - Treads") + if(!borg_icon) + return FALSE + switch(borg_icon) + if("Default") + cyborg_base_icon = "engineer" + if("Default - Treads") + cyborg_base_icon = "engi-tread" + special_light_key = "engineer" + return ..() + +/obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module) + var/mob/living/silicon/robot/R = loc + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Asteroid") + if(!borg_icon) + return FALSE + switch(borg_icon) + if("Lavaland") + cyborg_base_icon = "miner" + if("Asteroid") + cyborg_base_icon = "minerOLD" + special_light_key = "miner" + return ..() \ No newline at end of file diff --git a/modular_citadel/icons/mob/robots.dmi b/modular_citadel/icons/mob/robots.dmi new file mode 100644 index 0000000000..ba39886615 Binary files /dev/null and b/modular_citadel/icons/mob/robots.dmi differ diff --git a/tgstation.dme b/tgstation.dme index cebbabd8da..60c6f1abcc 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2468,4 +2468,5 @@ #include "modular_citadel\code\game\objects\items\devices\PDA\PDA.dm" #include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" #include "modular_citadel\code\modules\crafting\recipes.dm" +#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm" // END_INCLUDE