diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 6222adea935..1500ebb504f 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -52,43 +52,44 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G // Subsystem init_order, from highest priority to lowest priority // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. -#define INIT_ORDER_WEBHOOKS 50 -#define INIT_ORDER_SQLITE 40 -#define INIT_ORDER_GARBAGE 39 -#define INIT_ORDER_MEDIA_TRACKS 38 // Gotta get that lobby music up, yo -#define INIT_ORDER_INPUT 37 -#define INIT_ORDER_CHEMISTRY 35 -#define INIT_ORDER_VIS 32 -#define INIT_ORDER_MAPPING 25 -#define INIT_ORDER_SOUNDS 23 -#define INIT_ORDER_INSTRUMENTS 22 -#define INIT_ORDER_DECALS 20 -#define INIT_ORDER_PLANTS 19 // Must initialize before atoms. -#define INIT_ORDER_PLANETS 18 -#define INIT_ORDER_JOB 17 -#define INIT_ORDER_ALARM 16 // Must initialize before atoms. -#define INIT_ORDER_TRANSCORE 15 // VOREStation Edit -#define INIT_ORDER_ATOMS 14 // VOREStation Edit -#define INIT_ORDER_MACHINES 10 -#define INIT_ORDER_SHUTTLES 3 -#define INIT_ORDER_TIMER 1 -#define INIT_ORDER_DEFAULT 0 -#define INIT_ORDER_LIGHTING 0 -#define INIT_ORDER_AIR -1 -#define INIT_ORDER_ASSETS -3 -#define INIT_ORDER_HOLOMAPS -5 -#define INIT_ORDER_NIGHTSHIFT -6 -#define INIT_ORDER_OVERLAY -7 -#define INIT_ORDER_XENOARCH -20 -#define INIT_ORDER_CIRCUIT -21 -#define INIT_ORDER_AI -22 -#define INIT_ORDER_AI_FAST -23 -#define INIT_ORDER_GAME_MASTER -24 -#define INIT_ORDER_PERSISTENCE -25 -#define INIT_ORDER_SKYBOX -30 //Visual only, irrelevant to gameplay, but needs to be late enough to have overmap populated fully -#define INIT_ORDER_TICKER -50 -#define INIT_ORDER_MAPRENAME -60 //Initiating after Ticker to ensure everything is loaded and everything we rely on us working -#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. +#define INIT_ORDER_WEBHOOKS 50 +#define INIT_ORDER_SQLITE 40 +#define INIT_ORDER_GARBAGE 39 +#define INIT_ORDER_MEDIA_TRACKS 38 // Gotta get that lobby music up, yo +#define INIT_ORDER_INPUT 37 +#define INIT_ORDER_CHEMISTRY 35 +#define INIT_ORDER_ROBOT_SPRITES 34 +#define INIT_ORDER_VIS 32 +#define INIT_ORDER_MAPPING 25 +#define INIT_ORDER_SOUNDS 23 +#define INIT_ORDER_INSTRUMENTS 22 +#define INIT_ORDER_DECALS 20 +#define INIT_ORDER_PLANTS 19 // Must initialize before atoms. +#define INIT_ORDER_PLANETS 18 +#define INIT_ORDER_JOB 17 +#define INIT_ORDER_ALARM 16 // Must initialize before atoms. +#define INIT_ORDER_TRANSCORE 15 +#define INIT_ORDER_ATOMS 14 +#define INIT_ORDER_MACHINES 10 +#define INIT_ORDER_SHUTTLES 3 +#define INIT_ORDER_TIMER 1 +#define INIT_ORDER_DEFAULT 0 +#define INIT_ORDER_LIGHTING 0 +#define INIT_ORDER_AIR -1 +#define INIT_ORDER_ASSETS -3 +#define INIT_ORDER_HOLOMAPS -5 +#define INIT_ORDER_NIGHTSHIFT -6 +#define INIT_ORDER_OVERLAY -7 +#define INIT_ORDER_XENOARCH -20 +#define INIT_ORDER_CIRCUIT -21 +#define INIT_ORDER_AI -22 +#define INIT_ORDER_AI_FAST -23 +#define INIT_ORDER_GAME_MASTER -24 +#define INIT_ORDER_PERSISTENCE -25 +#define INIT_ORDER_SKYBOX -30 //Visual only, irrelevant to gameplay, but needs to be late enough to have overmap populated fully +#define INIT_ORDER_TICKER -50 +#define INIT_ORDER_MAPRENAME -60 //Initiating after Ticker to ensure everything is loaded and everything we rely on us working +#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. diff --git a/code/controllers/subsystems/robot_sprites.dm b/code/controllers/subsystems/robot_sprites.dm new file mode 100644 index 00000000000..46489110467 --- /dev/null +++ b/code/controllers/subsystems/robot_sprites.dm @@ -0,0 +1,103 @@ +#define DEFAULT_ROBOT_SPRITE_NAME "M-USE NanoTrasen" + +SUBSYSTEM_DEF(robot_sprites) + name = "Robot Sprites" + init_order = INIT_ORDER_ROBOT_SPRITES + flags = SS_NO_FIRE + var/list/all_cyborg_sprites = list() + var/list/cyborg_sprites_by_module = list() + var/list/whitelisted_sprites_by_module = list() + +/datum/controller/subsystem/robot_sprites/Initialize() + initialize_borg_sprites() + ..() + +/datum/controller/subsystem/robot_sprites/proc/initialize_borg_sprites() + + var/list/all_paths = typesof(/datum/robot_sprite) + + //Let's sort this a little + var/list/dogborg_paths = typesof(/datum/robot_sprite/dogborg) + var/list/tallborg_paths = typesof(/datum/robot_sprite/dogborg/tall) + all_paths -= dogborg_paths + dogborg_paths -= tallborg_paths + all_paths |= dogborg_paths + all_paths |= tallborg_paths + + + for(var/spath in all_paths) + var/datum/robot_sprite/RS = new spath() + + if(!(RS.name) || !(RS.module_type)) // We're a technical kinda datum + qdel(RS) + continue + + all_cyborg_sprites |= src + + if(islist(RS.module_type)) + for(var/M in RS.module_type) + if(RS.is_whitelisted) + if(!(M in whitelisted_sprites_by_module)) + whitelisted_sprites_by_module += M + whitelisted_sprites_by_module[M] = list() + whitelisted_sprites_by_module[M] |= RS + else + if(!(M in cyborg_sprites_by_module)) + cyborg_sprites_by_module += M + cyborg_sprites_by_module[M] = list() + cyborg_sprites_by_module[M] |= RS + else + if(!(RS.module_type in cyborg_sprites_by_module)) + cyborg_sprites_by_module += RS.module_type + cyborg_sprites_by_module[RS.module_type] = list() + cyborg_sprites_by_module[RS.module_type] |= RS + +/datum/controller/subsystem/robot_sprites/proc/get_module_sprites(var/module) + . = list() + + if(!module || !(module in cyborg_sprites_by_module)) + return + + . |= cyborg_sprites_by_module[module] + + return + +/datum/controller/subsystem/robot_sprites/proc/get_module_sprites_len(var/module) + if(!module || !(module in cyborg_sprites_by_module)) + return 0 + + var/list/sprite_list = cyborg_sprites_by_module[module] + + if(!islist(sprite_list)) + return 0 + + return sprite_list.len + +/datum/controller/subsystem/robot_sprites/proc/get_default_module_sprite(var/module) + + var/list/module_sprites = get_module_sprites(module) + + if(!module_sprites || !module_sprites.len) + return + + var/chosen_sprite + for(var/datum/robot_sprite/sprite in module_sprites) + if(sprite.default_sprite) + chosen_sprite = sprite + break + if(!chosen_sprite) + chosen_sprite = module_sprites[1] + + return chosen_sprite + +/datum/controller/subsystem/robot_sprites/proc/get_whitelisted_sprites(var/ckey, var/spritename, var/module) + . = list() + + if(!ckey || !spritename || !module || !(module in whitelisted_sprites_by_module)) + return + + for(var/datum/robot_sprite/RS in whitelisted_sprites_by_module[module]) + if(RS.whitelist_ckey == ckey && RS.whitelist_charname == spritename) + . |= RS + + return \ No newline at end of file diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index cfce2394b39..c13d67483a7 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -203,42 +203,42 @@ /area/proc/fire_alert() if(!fire) fire = 1 //used for firedoor checks - updateicon() + update_icon() firedoors_update() /area/proc/fire_reset() if (fire) fire = 0 //used for firedoor checks - updateicon() + update_icon() firedoors_update() /area/proc/readyalert() if(!eject) eject = 1 - updateicon() + update_icon() return /area/proc/readyreset() if(eject) eject = 0 - updateicon() + update_icon() return /area/proc/partyalert() if (!( party )) party = 1 - updateicon() + update_icon() firedoors_update() return /area/proc/partyreset() if (party) party = 0 - updateicon() + update_icon() firedoors_update() return -/area/proc/updateicon() +/area/update_icon() if ((fire || eject || party) && (!requires_power||power_environ) && !istype(src, /area/space))//If it doesn't require power, can still activate this proc. if(fire && !eject && !party) icon_state = null // Let lights take care of it @@ -282,7 +282,7 @@ for(var/obj/machinery/M in src) // for each machine in the area M.power_change() // reverify power status (to update icons etc.) if (fire || eject || party) - updateicon() + update_icon() /area/proc/usage(var/chan, var/include_static = TRUE) var/used = 0 diff --git a/code/game/gamemodes/cult/hell_universe.dm b/code/game/gamemodes/cult/hell_universe.dm index df056073118..0cf1e2d0fd6 100644 --- a/code/game/gamemodes/cult/hell_universe.dm +++ b/code/game/gamemodes/cult/hell_universe.dm @@ -58,7 +58,7 @@ In short: if(!istype(A,/area) || istype(A, /area/space)) continue - A.updateicon() + A.update_icon() /datum/universal_state/hell/OverlayAndAmbientSet() spawn(0) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm index 280d2ed6bd5..cd289689933 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm @@ -88,7 +88,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked if(!istype(A,/area) || istype(A, /area/space) || istype(A,/area/beach)) continue - A.updateicon() + A.update_icon() /datum/universal_state/supermatter_cascade/OverlayAndAmbientSet() return diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index f1066caffcd..24b4ca979b4 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -27,10 +27,10 @@ // update the invisibility and icon /obj/machinery/bluespace_beacon/hide(var/intact) invisibility = intact ? 101 : 0 - updateicon() + update_icon() // update the icon_state -/obj/machinery/bluespace_beacon/proc/updateicon() +/obj/machinery/bluespace_beacon/update_icon() var/state="floor_beacon" if(invisibility) @@ -48,4 +48,4 @@ if(Beacon.loc != src.loc) Beacon.loc = src.loc - updateicon() \ No newline at end of file + update_icon() \ No newline at end of file diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index e8a3544e435..9a535161451 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -30,14 +30,14 @@ name = "light switch ([area.name])" on = area.lightswitch - updateicon() + update_icon() /obj/machinery/light_switch/Destroy() area = null overlay = null return ..() -/obj/machinery/light_switch/proc/updateicon() +/obj/machinery/light_switch/update_icon() cut_overlays() if(stat & NOPOWER) icon_state = "light-p" @@ -47,9 +47,9 @@ set_light(2, 0.1, on ? "#82FF4C" : "#F86060") . = list() . += emissive_appearance(icon, "light[on]-overlay") - + return add_overlay(.) - + /obj/machinery/light_switch/examine(mob/user) . = ..() @@ -61,12 +61,12 @@ on = !on area.lightswitch = on - area.updateicon() + area.update_icon() playsound(src, 'sound/machines/button.ogg', 100, 1, 0) // VOREStation Edit for(var/obj/machinery/light_switch/L in area) L.on = on - L.updateicon() + L.update_icon() area.power_change() GLOB.lights_switched_on_roundstat++ @@ -79,7 +79,7 @@ else stat |= NOPOWER - updateicon() + update_icon() /obj/machinery/light_switch/emp_act(severity) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index e2b76f3632a..7b6de697ac7 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -43,10 +43,10 @@ // update the invisibility and icon /obj/machinery/magnetic_module/hide(var/intact) invisibility = intact ? 101 : 0 - updateicon() + update_icon() // update the icon_state -/obj/machinery/magnetic_module/proc/updateicon() +/obj/machinery/magnetic_module/update_icon() var/state="floor_magnet" var/onstate="" if(!on) @@ -157,7 +157,7 @@ qdel(src) */ - updateicon() + update_icon() /obj/machinery/magnetic_module/proc/magnetic_process() // proc that actually does the pulling if(pulling) return diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index be37e988b86..b0a1588b4db 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -55,10 +55,10 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w // hide the object if turf is intact /obj/machinery/navbeacon/hide(var/intact) invisibility = intact ? 101 : 0 - updateicon() + update_icon() // update the icon_state -/obj/machinery/navbeacon/proc/updateicon() +/obj/machinery/navbeacon/update_icon() var/state="navbeacon[open]" if(invisibility) @@ -77,7 +77,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w playsound(src, I.usesound, 50, 1) user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") - updateicon() + update_icon() else if(I.GetID()) if(open) diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm index b57145c801c..2e9199479cb 100644 --- a/code/game/objects/effects/chem/foam.dm +++ b/code/game/objects/effects/chem/foam.dm @@ -38,7 +38,7 @@ if(metal) var/obj/structure/foamedmetal/M = new(src.loc) M.metal = metal - M.updateicon() + M.update_icon() flick("[icon_state]-disolve", src) QDEL_IN(src, 5) @@ -151,7 +151,7 @@ update_nearby_tiles(1) return ..() -/obj/structure/foamedmetal/proc/updateicon() +/obj/structure/foamedmetal/update_icon() if(metal == 1) icon_state = "metalfoam" else diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index d5baa6516b4..dda476191b2 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -113,13 +113,13 @@ on = 1 START_PROCESSING(SSobj, src) - updateicon() + update_icon() /obj/item/device/suit_cooling_unit/proc/turn_off(var/failed) if(failed) visible_message("\The [src] clicks and whines as it powers down.") on = 0 STOP_PROCESSING(SSobj, src) - updateicon() + update_icon() /obj/item/device/suit_cooling_unit/attack_self(var/mob/user) if(cover_open && cell) @@ -133,7 +133,7 @@ to_chat(user, "You remove \the [src.cell].") src.cell = null - updateicon() + update_icon() return toggle(user) @@ -154,7 +154,7 @@ cover_open = 1 to_chat(user, "You unscrew the panel.") playsound(src, W.usesound, 50, 1) - updateicon() + update_icon() return if (istype(W, /obj/item/weapon/cell)) @@ -166,12 +166,12 @@ W.loc = src cell = W to_chat(user, "You insert the [cell].") - updateicon() + update_icon() return return ..() -/obj/item/device/suit_cooling_unit/proc/updateicon() +/obj/item/device/suit_cooling_unit/update_icon() cut_overlays() if(cover_open) if(cell) @@ -228,7 +228,7 @@ cell = /obj/item/weapon/cell w_class = ITEMSIZE_NORMAL -/obj/item/device/suit_cooling_unit/emergency/updateicon() +/obj/item/device/suit_cooling_unit/emergency/update_icon() return /obj/item/device/suit_cooling_unit/emergency/get_cell() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 28c89140d00..cabcbe8ce87 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -73,9 +73,9 @@ /obj/item/robot_parts/robot_suit/New() ..() - src.updateicon() + src.update_icon() -/obj/item/robot_parts/robot_suit/proc/updateicon() +/obj/item/robot_parts/robot_suit/update_icon() cut_overlays() if(src.l_arm) add_overlay("l_arm+o") @@ -117,28 +117,28 @@ user.drop_item() W.loc = src src.l_leg = W - src.updateicon() + src.update_icon() if(istype(W, /obj/item/robot_parts/r_leg)) if(src.r_leg) return user.drop_item() W.loc = src src.r_leg = W - src.updateicon() + src.update_icon() if(istype(W, /obj/item/robot_parts/l_arm)) if(src.l_arm) return user.drop_item() W.loc = src src.l_arm = W - src.updateicon() + src.update_icon() if(istype(W, /obj/item/robot_parts/r_arm)) if(src.r_arm) return user.drop_item() W.loc = src src.r_arm = W - src.updateicon() + src.update_icon() if(istype(W, /obj/item/robot_parts/chest)) if(src.chest) return @@ -146,7 +146,7 @@ user.drop_item() W.loc = src src.chest = W - src.updateicon() + src.update_icon() else if(!W:wires) to_chat(user, "You need to attach wires to it first!") else @@ -158,7 +158,7 @@ user.drop_item() W.loc = src src.head = W - src.updateicon() + src.update_icon() else to_chat(user, "You need to attach a flash to it first!") diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index 2859d55dfbe..cccde21044d 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -58,7 +58,7 @@ return A.use_power_oneoff(5000, EQUIP) var/light = A.power_light - A.updateicon() + A.update_icon() flick("echair1", src) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread @@ -74,5 +74,5 @@ visible_message("The electric chair went off!", "You hear a deep sharp shock!") A.power_light = light - A.updateicon() + A.update_icon() return diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index c20b00684d9..ad7d7577b8f 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -104,7 +104,7 @@ dead_mob_list |= src set_respawn_timer() - updateicon() + update_icon() handle_regular_hud_updates() handle_vision() diff --git a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm index 450f47103f5..bfb9ac536b7 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm @@ -7,7 +7,7 @@ H.put_in_hands(hat) H.visible_message("\The [H] removes \the [src]'s [hat].") hat = null - updateicon() + update_icon() else return ..() diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index fc5f82d1327..04bdce0b1f1 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -1365,11 +1365,11 @@ var/mob/living/F = firer if(F.appendage_alt_setting == 1) F.throw_at(M, throw_range, firer.throw_speed, F) //Firer thrown at target. - F.updateicon() + F.update_icon() return if(istype(M)) M.throw_at(firer, throw_range, M.throw_speed, firer) //Fun fact: living things have a throw_speed of 2. - M.updateicon() + M.update_icon() return else //Anything that isn't a /living return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 051fe272b54..37a1d60e158 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -276,7 +276,7 @@ var/list/ai_verbs_default = list( selected_sprite = new/datum/ai_icon("Custom", "[src.ckey]-ai", "4", "[ckey]-ai-crash", "#FFFFFF", "#FFFFFF", "#FFFFFF") else selected_sprite = default_ai_icon - updateicon() + update_icon() /mob/living/silicon/ai/pointed(atom/A as mob|obj|turf in view()) set popup_menu = 0 @@ -351,7 +351,7 @@ var/list/ai_verbs_default = list( if (!custom_sprite) var/new_sprite = tgui_input_list(usr, "Select an icon!", "AI", ai_icons) if(new_sprite) selected_sprite = new_sprite - updateicon() + update_icon() /mob/living/silicon/ai/var/message_cooldown = 0 /mob/living/silicon/ai/proc/ai_announcement() @@ -884,7 +884,7 @@ var/list/ai_verbs_default = list( return ..() -/mob/living/silicon/ai/updateicon() +/mob/living/silicon/ai/update_icon() if(!selected_sprite) selected_sprite = default_ai_icon if(stat == DEAD) diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index e155b8e0057..49bb3eaf164 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -58,18 +58,18 @@ to_chat(src, "Alert cancelled. Power has been restored without our assistance.") aiRestorePowerRoutine = 0 clear_fullscreen("blind") - updateicon() + update_icon() return else if (aiRestorePowerRoutine==3) to_chat(src, "Alert cancelled. Power has been restored.") aiRestorePowerRoutine = 0 clear_fullscreen("blind") - updateicon() + update_icon() return else if (APU_power) aiRestorePowerRoutine = 0 clear_fullscreen("blind") - updateicon() + update_icon() return else var/area/current_area = get_area(src) @@ -79,7 +79,7 @@ aiRestorePowerRoutine = 1 //Blind the AI - updateicon() + update_icon() overlay_fullscreen("blind", /obj/screen/fullscreen/blind) src.sight = src.sight&~SEE_TURFS src.sight = src.sight&~SEE_MOBS @@ -122,9 +122,9 @@ break if (!theAPC) switch(PRP) - if (1) + if (1) to_chat(src, "Unable to locate APC!") - else + else to_chat(src, "Lost connection with the APC!") src:aiRestorePowerRoutine = 2 return @@ -135,11 +135,11 @@ clear_fullscreen("blind") //This, too, is a fix to issue 603 return switch(PRP) - if (1) + if (1) to_chat(src, "APC located. Optimizing route to APC to avoid needless power waste.") - if (2) + if (2) to_chat(src, "Best route identified. Hacking offline APC power port.") - if (3) + if (3) to_chat(src, "Power port upload access confirmed. Loading control program into APC power port software.") if (4) to_chat(src, "Transfer complete. Forcing APC to execute program.") @@ -152,7 +152,7 @@ aiRestorePowerRoutine = 3 to_chat(src, "Here are your current laws:") show_laws() - updateicon() + update_icon() sleep(50) theAPC = null 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 e726c233cd5..4f186ef5b55 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 @@ -506,7 +506,7 @@ 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" @@ -527,5 +527,6 @@ 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!") - updateicon() + update_icon() return 1 +*/ \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index b6194ed43c7..da48b4f230f 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -481,7 +481,7 @@ if(cleaning || (length(contents) > 10) || (decompiler && (length(contents) > 5)) || (analyzer && (length(contents) > 1))) hound.sleeper_r = TRUE hound.sleeper_g = FALSE - hound.updateicon() + hound.update_icon() return //Well, we HAD one, what happened to them? @@ -504,7 +504,7 @@ hound.sleeper_r = TRUE patient_laststat = patient.stat //Update icon - hound.updateicon() + hound.update_icon() //Return original patient return(patient) @@ -529,7 +529,7 @@ hound.sleeper_r = TRUE patient_laststat = patient.stat //Update icon and return new patient - hound.updateicon() + hound.update_icon() return(C) //Couldn't find anyone, and not cleaning @@ -539,7 +539,7 @@ patient_laststat = null patient = null - hound.updateicon() + hound.update_icon() return //Gurgleborg process diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index e8b5f9541c2..16e86674910 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -124,13 +124,13 @@ var/list/mob_hat_cache = list() C.max_damage = 10 verbs -= /mob/living/silicon/robot/verb/Namepick - + if(can_pick_shell) var/random = pick(shell_types) icon_state = shell_types[random] shell_accessories = list("[icon_state]-eyes-blue") - - updateicon() + + update_icon() updatename() /mob/living/silicon/robot/drone/init() @@ -161,7 +161,7 @@ var/list/mob_hat_cache = list() real_name = "[initial(name)] ([serial_number])" name = real_name -/mob/living/silicon/robot/drone/updateicon() +/mob/living/silicon/robot/drone/update_icon() cut_overlays() if(islist(shell_accessories)) @@ -177,9 +177,9 @@ var/list/mob_hat_cache = list() if(!can_pick_shell) to_chat(src, "You already selected a shell or this drone type isn't customizable.") return - + var/list/choices = shell_types.Copy() - + if(can_blitz) choices["Blitz"] = "blitzshell" @@ -199,9 +199,9 @@ var/list/mob_hat_cache = list() var/armor_color = tgui_input_list(src, "Select plating color:", "Eye Color", list("blue", "red", "orange", "green", "brown")) if(armor_color) LAZYADD(shell_accessories, "[icon_state]-shell-[armor_color]") - + can_pick_shell = FALSE - updateicon() + update_icon() /mob/living/silicon/robot/drone/choose_icon() return @@ -214,7 +214,7 @@ var/list/mob_hat_cache = list() return hat = new_hat new_hat.loc = src - updateicon() + update_icon() //Drones cannot be upgraded with borg modules so we need to catch some items before they get used in ..(). /mob/living/silicon/robot/drone/attackby(var/obj/item/weapon/W, var/mob/user) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index d045c14081c..3ec0cfc5678 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -29,7 +29,7 @@ H.put_in_hands(hat) H.visible_message("\The [H] removes \the [src]'s [hat].") hat = null - updateicon() + update_icon() return else return ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 0da27bf9169..6ba531feb7e 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -402,7 +402,7 @@ A.cell.add_fingerprint(user) A.cell.update_icon() - A.updateicon() + A.update_icon() A.cell.loc = src A.cell = null diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 6ddff911922..d4e6a03572b 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -51,7 +51,7 @@ module_state_3:loc = module module_state_3 = null inv3.icon_state = "inv3" - updateicon() + update_icon() hud_used.update_robot_modules_display() /mob/living/silicon/robot/proc/uneq_all() @@ -84,7 +84,7 @@ module_state_3:loc = module module_state_3 = null inv3.icon_state = "inv3" - updateicon() + update_icon() /mob/living/silicon/robot/proc/activated(obj/item/O) if(module_state_1 == O) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index a10d1f2c0b6..e2fc82df32c 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -332,7 +332,7 @@ module_state_2:screen_loc = ui_inv2 if(module_state_3) module_state_3:screen_loc = ui_inv3 - updateicon() + update_icon() /mob/living/silicon/robot/proc/process_killswitch() if(killswitch) diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index f88f8593832..0fb339d9a91 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -10,5 +10,5 @@ // Forces synths to select an icon relevant to their module if(!icon_selected) - choose_icon(icon_selection_tries, module_sprites) + choose_icon(icon_selection_tries) plane_holder.set_vis(VIS_AUGMENTED, TRUE) //VOREStation Add - ROBOT VISION IS AUGMENTED \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 26cbc5385d8..b9fc9004559 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -29,10 +29,9 @@ //Icon stuff - var/icontype //Persistent icontype tracking allows for cleaner icon updates - var/module_sprites[0] //Used to store the associations between sprite names and sprite index. - 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/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 //Hud stuff @@ -114,10 +113,7 @@ robot_modules_background = new() robot_modules_background.icon_state = "block" ident = rand(1, 999) - module_sprites["Basic"] = "robot" - icontype = "Basic" updatename(modtype) - updateicon() radio = new /obj/item/device/radio/borg(src) // communicator = new /obj/item/device/communicator/integrated(src) @@ -166,6 +162,10 @@ hud_list[IMPTRACK_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_IMPTRACK) hud_list[SPECIALROLE_HUD] = gen_hud_image('icons/mob/hud.dmi', src, "hudblank", plane = PLANE_CH_SPECIAL) +/mob/living/silicon/robot/LateInitialize() + . = ..() + update_icon() + /mob/living/silicon/robot/proc/init() aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) laws = new /datum/ai_laws/nanotrasen() @@ -247,6 +247,8 @@ wires = null return ..() +// CONTINUE CODING HERE +/* /mob/living/silicon/robot/proc/set_module_sprites(var/list/new_sprites) if(new_sprites && new_sprites.len) module_sprites = new_sprites.Copy() @@ -257,9 +259,9 @@ else icontype = module_sprites[1] icon_state = module_sprites[icontype] - updateicon() + update_icon() return module_sprites - +*/ /mob/living/silicon/robot/proc/pick_module() if(module) return @@ -271,10 +273,10 @@ modules.Add(robot_module_types) if(crisis || security_level == SEC_LEVEL_RED || crisis_override) to_chat(src, "Crisis mode active. Combat module available.") - modules += emergency_module_types + modules |= emergency_module_types for(var/module_name in whitelisted_module_types) if(is_borg_whitelisted(src, module_name)) - modules += module_name + modules |= module_name //VOREStatation Edit End: shell restrictions modtype = tgui_input_list(usr, "Please, select a module!", "Robot module", modules) @@ -359,7 +361,7 @@ sprite_name = newname updatename() - updateicon() + update_icon() /mob/living/silicon/robot/proc/self_diagnosis() if(!is_component_functioning("diagnosis unit")) @@ -379,7 +381,7 @@ lights_on = !lights_on to_chat(usr, "You [lights_on ? "enable" : "disable"] your integrated light.") handle_light() - updateicon() //VOREStation Add - Since dogborgs have sprites for this + update_icon() /mob/living/silicon/robot/verb/self_diagnosis_verb() set category = "Robot Commands" @@ -557,7 +559,7 @@ if(cell) to_chat(user, "You close the cover.") opened = 0 - updateicon() + update_icon() else if(wiresexposed && wires.is_all_cut()) //Cell is out, wires are exposed, remove MMI, produce damaged chassis, baleet original mob. if(!mmi) @@ -572,7 +574,7 @@ C.r_leg = new/obj/item/robot_parts/r_leg(C) C.l_arm = new/obj/item/robot_parts/l_arm(C) C.r_arm = new/obj/item/robot_parts/r_arm(C) - C.updateicon() + C.update_icon() new/obj/item/robot_parts/chest(loc) qdel(src) else @@ -606,7 +608,7 @@ else to_chat(user, "You open the cover.") opened = 1 - updateicon() + update_icon() else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside var/datum/robot_component/C = components["power cell"] @@ -639,14 +641,14 @@ wiresexposed = !wiresexposed to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]") playsound(src, W.usesound, 50, 1) - updateicon() + update_icon() else if(W.is_screwdriver() && opened && cell) // radio if(radio) radio.attackby(W,user)//Push it to the radio to let it handle everything else to_chat(user, "Unable to locate a radio.") - updateicon() + update_icon() else if(W.is_wrench() && opened && !cell) if(bolt) @@ -678,7 +680,7 @@ if(allowed(usr)) locked = !locked to_chat(user, "You [ locked ? "lock" : "unlock"] [src]'s interface.") - updateicon() + update_icon() else to_chat(user, "Access denied.") @@ -755,7 +757,7 @@ cell = null cell_component.wrapped = null cell_component.installed = 0 - updateicon() + update_icon() else if(cell_component.installed == -1) cell_component.installed = 0 var/obj/item/broken_device = cell_component.wrapped @@ -838,21 +840,84 @@ return 1 return 0 -/mob/living/silicon/robot/updateicon() +/mob/living/silicon/robot/update_icon() + if(!sprite_datum) + return + cut_overlays() + + icon = sprite_datum.sprite_icon + icon_state = sprite_datum.sprite_icon_state + + vis_height = sprite_datum.vis_height + if(default_pixel_x != sprite_datum.pixel_x) + default_pixel_x = sprite_datum.pixel_x + pixel_x = sprite_datum.pixel_x + old_x = sprite_datum.pixel_x + if(stat == CONSCIOUS) - if(!shell || deployed) // Shell borgs that are not deployed will have no eyes. - add_overlay("eyes-[module_sprites[icontype]]") + var/show_belly = FALSE + if(sprite_datum.has_vore_belly_sprites) + if(vore_selected.silicon_belly_overlay_preference == "Sleeper") + if(sleeper_g || sleeper_r) + show_belly = TRUE + else if(vore_selected.silicon_belly_overlay_preference == "Vorebelly") + if(LAZYLEN(vore_selected.contents) >= vore_selected.visible_belly_minimum_prey) + if(vore_selected.overlay_min_prey_size == 0) //if min size is 0, we dont check for size + show_belly = TRUE + else + if(vore_selected.override_min_prey_size && (LAZYLEN(vore_selected.contents) > vore_selected.override_min_prey_num)) + show_belly = TRUE //Override regardless of content size + else + for(var/content in vore_selected.contents) //If ANY in belly are big enough, we set to true + if(!istype(content, /mob/living)) continue + var/mob/living/prey = content + if(prey.size_multiplier >= vore_selected.overlay_min_prey_size) + show_belly = TRUE + break + if(show_belly) + add_overlay(sprite_datum.get_belly_overlay(src)) + + sprite_datum.handle_extra_icon_updates(src) // Various equipment-based sprites go here. + + if(resting && sprite_datum.has_rest_sprites) + cut_overlays() // Hide that gut for it has no ground sprite yo. + icon_state = sprite_datum.get_rest_sprite(src) + if(show_belly && sprite_datum.has_vore_belly_sprites && sprite_datum.has_vore_belly_resting_sprites) // Or DOES IT? + add_overlay(sprite_datum.get_belly_resting_overlay(src)) + + if(sprite_datum.has_eye_sprites) + if(!shell || deployed) // Shell borgs that are not deployed will have no eyes. + var/eyes_overlay = sprite_datum.get_eyes_overlay(src) + if(eyes_overlay) + add_overlay(eyes_overlay) + + if(lights_on && sprite_datum.has_eye_light_sprites) + if(!shell || deployed) // Shell borgs that are not deployed will have no eyes. + var/eyes_overlay = sprite_datum.get_eye_light_overlay(src) + if(eyes_overlay) + add_overlay(eyes_overlay) +/* + if(istype(module_active,/obj/item/weapon/gun/energy/laser/mounted)) + add_overlay("laser") + if(istype(module_active,/obj/item/weapon/gun/energy/taser/mounted/cyborg)) + add_overlay("taser") + if(lights_on) + add_overlay("eyes-[module_sprites[icontype]]-lights") + else + icon_state = "[module_sprites[icontype]]" +*/ + if(stat == DEAD && sprite_datum.has_dead_sprite) + cut_overlays() + icon_state = sprite_datum.get_dead_sprite(src) + if(sprite_datum.has_dead_sprite_overlay) + add_overlay(sprite_datum.get_dead_sprite_overlay(src)) if(opened) - var/panelprefix = custom_sprite ? "[src.ckey]-[src.sprite_name]" : "ov" - if(wiresexposed) - add_overlay("[panelprefix]-openpanel +w") - else if(cell) - add_overlay("[panelprefix]-openpanel +c") - else - add_overlay("[panelprefix]-openpanel -c") - + 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) @@ -863,6 +928,7 @@ icon_state = "[module_sprites[icontype]]-roll" else icon_state = module_sprites[icontype] +*/ /mob/living/silicon/robot/proc/installed_modules() if(weapon_lock) @@ -1034,33 +1100,44 @@ return -/mob/living/silicon/robot/proc/choose_icon(var/triesleft, var/list/module_sprites) - if(!module_sprites.len) - to_chat(src, "Something is badly wrong with the sprite selection. Harass a coder.") +/mob/living/silicon/robot/proc/choose_icon(var/triesleft) + if(!SSrobot_sprites) + to_chat(src, "Robot Sprites have not been initialized yet. How are you choosing a sprite? Harass a coder.") + return + + var/list/module_sprites = SSrobot_sprites.get_module_sprites(modtype) + if(!module_sprites || !module_sprites.len) + to_chat(src, "Your module appears to have no sprite options. Harass a coder.") return icon_selected = 0 - src.icon_selection_tries = triesleft + icon_selection_tries = triesleft if(module_sprites.len == 1 || !client) - if(!(icontype in module_sprites)) - icontype = module_sprites[1] + if(!(sprite_datum in module_sprites)) + sprite_datum = module_sprites[1] else - icontype = tgui_input_list(usr, "Select an icon! [triesleft ? "You have [triesleft] more chance\s." : "This is your last try."]", "Robot Icon", module_sprites) - if(!icontype) - icontype = module_sprites[1] - if(notransform) //VOREStation edit start: sprite animation + var/selection = tgui_input_list(src, "Select an icon! [triesleft ? "You have [triesleft] more chance\s." : "This is your last try."]", "Robot Icon", module_sprites) + sprite_datum = selection + if(notransform) to_chat(src, "Your current transformation has not finished yet!") - choose_icon(icon_selection_tries, module_sprites) + choose_icon(icon_selection_tries) return else transform_with_anim() //VOREStation edit end: sprite animation - +/* if(icontype == "Custom") icon = CUSTOM_ITEM_SYNTH else // This is to fix an issue where someone with a custom borg sprite chooses a non-custom sprite and turns invisible. vr_sprite_check() //VOREStation Edit - icon_state = module_sprites[icontype] - updateicon() +*/ + var/tempheight = vis_height + update_icon() + // This is bad but I dunno other way to 'reset' our resize offset based on vis_height changes other than resizing to normal and back. + if(tempheight != vis_height) + var/tempsize = size_multiplier + resize(1) + resize(tempsize) + if (module_sprites.len > 1 && triesleft >= 1 && client) icon_selection_tries-- @@ -1073,6 +1150,13 @@ icon_selection_tries = 0 to_chat(src, "Your icon has been set. You now require a module reset to change it.") +/mob/living/silicon/robot/proc/set_default_module_icon() + if(!SSrobot_sprites) + return + + sprite_datum = SSrobot_sprites.get_default_module_sprite(modtype) + update_icon() + /mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs set name = "Toggle Sensor Augmentation" //VOREStation Add set category = "Robot Commands" @@ -1217,7 +1301,7 @@ to_chat(src, "Obey these laws:") laws.show_laws(src) to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.") - updateicon() + update_icon() else to_chat(user, "You fail to hack [src]'s interface.") to_chat(src, "Hack attempt detected.") diff --git a/code/modules/mob/living/silicon/robot/robot_modules/event_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/event_vr.dm index a61c1847b4c..84a6c6d8330 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/event_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/event_vr.dm @@ -58,5 +58,4 @@ R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins - R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style \ No newline at end of file + R.verbs |= /mob/living/proc/shred_limb \ No newline at end of file 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 fe06fdac241..67169c73fcc 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -23,12 +23,27 @@ var/global/list/robot_modules = list( icon_state = "std_module" w_class = ITEMSIZE_NO_CONTAINER item_state = "std_mod" + var/pto_type = null var/hide_on_manifest = FALSE var/channels = list() var/networks = list() - var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1, LANGUAGE_ZADDAT = 0) + var/languages = list(LANGUAGE_SOL_COMMON= 1, + LANGUAGE_TRADEBAND = 1, + LANGUAGE_UNATHI = 0, + LANGUAGE_SIIK = 0, + LANGUAGE_SKRELLIAN = 0, + LANGUAGE_GUTTER = 0, + LANGUAGE_SCHECHI = 0, + LANGUAGE_SIGN = 0, + LANGUAGE_BIRDSONG = 0, + LANGUAGE_SAGARU = 0, + LANGUAGE_CANILUNZT = 0, + LANGUAGE_ECUREUILIAN= 0, + LANGUAGE_DAEMON = 0, + LANGUAGE_ENOCHIAN = 0, + LANGUAGE_DRUDAKAR = 0) var/sprites = list() - var/can_be_pushed = 1 + var/can_be_pushed = 0 var/no_slip = 0 var/list/modules = list() var/list/datum/matter_synth/synths = list() @@ -60,10 +75,8 @@ var/global/list/robot_modules = list( channels = R.mainframe.aiRadio.channels R.radio.recalculateChannels() - vr_add_sprites() //Vorestation Edit: For vorestation only sprites - - R.set_module_sprites(sprites) - R.choose_icon(R.module_sprites.len + 1, R.module_sprites) + R.set_default_module_icon() + R.choose_icon(SSrobot_sprites.get_module_sprites_len(R.modtype) + 1) for(var/obj/item/I in modules) I.canremove = FALSE @@ -76,7 +89,7 @@ var/global/list/robot_modules = list( if(R.radio) R.radio.recalculateChannels() - R.choose_icon(0, R.set_module_sprites(list("Default" = "robot"))) + R.choose_icon(0) /obj/item/weapon/robot_module/Destroy() for(var/module in modules) @@ -185,27 +198,7 @@ var/global/list/robot_modules = list( /obj/item/weapon/robot_module/robot/standard name = "standard robot module" - sprites = list( - "M-USE NanoTrasen" = "robot", - "Cabeiri" = "eyebot-standard", - "Haruka" = "marinaSD", - "Usagi" = "tallflower", - "Telemachus" = "toiletbot", - "WTOperator" = "sleekstandard", - "WTOmni" = "omoikane", - "XI-GUS" = "spider", - "XI-ALP" = "heavyStandard", - "Basic" = "robot_old", - "Android" = "droid", - "Drone" = "drone-standard", - "Insekt" = "insekt-Default", - "Usagi-II" = "tall2standard", - "Pyralis" = "Glitterfly-Standard", - "Decapod" = "decapod-Standard", - "Pneuma" = "pneuma-Standard", - "Tower" = "drider-Standard" - ) - + pto_type = PTO_CIVILIAN /obj/item/weapon/robot_module/robot/standard/New() ..() @@ -219,7 +212,6 @@ var/global/list/robot_modules = list( channels = list("Medical" = 1) networks = list(NETWORK_MEDICAL) subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) - can_be_pushed = 0 /obj/item/weapon/robot_module/robot/medical/surgeon name = "surgeon robot module" @@ -500,7 +492,6 @@ var/global/list/robot_modules = list( channels = list("Security" = 1) networks = list(NETWORK_SECURITY) subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) - can_be_pushed = 0 supported_upgrades = list(/obj/item/borg/upgrade/tasercooler) /obj/item/weapon/robot_module/robot/security/general @@ -556,24 +547,7 @@ var/global/list/robot_modules = list( /obj/item/weapon/robot_module/robot/janitor name = "janitorial robot module" channels = list("Service" = 1) - sprites = list( - "M-USE NanoTrasen" = "robotJani", - "Arachne" = "crawler", - "Cabeiri" = "eyebot-janitor", - "Haruka" = "marinaJN", - "Telemachus" = "toiletbotjanitor", - "WTOperator" = "sleekjanitor", - "XI-ALP" = "heavyRes", - "Basic" = "JanBot2", - "Mopbot" = "janitorrobot", - "Mop Gear Rex" = "mopgearrex", - "Drone" = "drone-janitor", - "Usagi-II" = "tall2janitor", - "Pyralis" = "Glitterfly-Janitor", - "Decapod" = "decapod-Janitor", - "Pneuma" = "pneuma-Janitor", - "Tower" = "drider-Janitor" - ) + pto_type = PTO_CIVILIAN /obj/item/weapon/robot_module/robot/janitor/general/New() ..() @@ -601,18 +575,22 @@ var/global/list/robot_modules = list( ) languages = list( LANGUAGE_SOL_COMMON = 1, + LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 1, LANGUAGE_SIIK = 1, - LANGUAGE_AKHANI = 1, LANGUAGE_SKRELLIAN = 1, LANGUAGE_ROOTLOCAL = 0, - LANGUAGE_TRADEBAND = 1, LANGUAGE_GUTTER = 1, LANGUAGE_SCHECHI = 1, - LANGUAGE_EAL = 1, - LANGUAGE_TERMINUS = 1, LANGUAGE_SIGN = 0, - LANGUAGE_ZADDAT = 1, + LANGUAGE_BIRDSONG = 1, + LANGUAGE_SAGARU = 1, + LANGUAGE_CANILUNZT = 1, + LANGUAGE_ECUREUILIAN= 1, + LANGUAGE_DAEMON = 1, + LANGUAGE_ENOCHIAN = 1, + LANGUAGE_DRUDAKAR = 1, + LANGUAGE_TAVAN = 1 ) /obj/item/weapon/robot_module/robot/clerical/butler @@ -723,25 +701,8 @@ var/global/list/robot_modules = list( name = "miner robot module" channels = list("Supply" = 1) networks = list(NETWORK_MINE) - sprites = list( - "NM-USE NanoTrasen" = "robotMine", - "Cabeiri" = "eyebot-miner", - "Haruka" = "marinaMN", - "Telemachus" = "toiletbotminer", - "WTOperator" = "sleekminer", - "XI-GUS" = "spidermining", - "XI-ALP" = "heavyMiner", - "Basic" = "Miner_old", - "Advanced Droid" = "droid-miner", - "Treadhead" = "Miner", - "Drone" = "drone-miner", - "Usagi-II" = "tall2miner", - "Pyralis" = "Glitterfly-Miner", - "Decapod" = "decapod-Miner", - "Pneuma" = "pneuma-Miner", - "Tower" = "drider-Miner" - ) supported_upgrades = list(/obj/item/borg/upgrade/pka, /obj/item/borg/upgrade/diamonddrill) + pto_type = PTO_CARGO /obj/item/weapon/robot_module/robot/miner/general/New() ..() @@ -763,23 +724,8 @@ var/global/list/robot_modules = list( /obj/item/weapon/robot_module/robot/research name = "research module" channels = list("Science" = 1) - sprites = list( - "L'Ouef" = "peaceborg", - "Cabeiri" = "eyebot-science", - "Haruka" = "marinaSCI", - "WTDove" = "whitespider", - "WTOperator" = "sleekscience", - "Droid" = "droid-science", - "Drone" = "drone-science", - "Handy" = "handy-science", - "Insekt" = "insekt-Sci", - "Usagi-II" = "tall2peace", - "Pyralis" = "Glitterfly-Research", - "Decapod" = "decapod-Research", - "Pneuma" = "pneuma-Research", - "Tower" = "drider-Research" - ) supported_upgrades = list(/obj/item/borg/upgrade/advrped) + pto_type = PTO_SCIENCE /obj/item/weapon/robot_module/robot/research/general/New() ..() @@ -808,6 +754,9 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/pickaxe/excavationdrill(src) //src.modules += new /obj/item/device/cataloguer(src) //VOREStation Removal + + src.modules += new /obj/item/device/dogborg/sleeper/compactor/analyzer(src) + src.emag = new /obj/item/weapon/hand_tele(src) var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000) 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 841e61e6abf..f80200c4384 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,44 +1,5 @@ /obj/item/weapon/robot_module - languages = list(LANGUAGE_SOL_COMMON= 1, - LANGUAGE_TRADEBAND = 1, - LANGUAGE_UNATHI = 0, - LANGUAGE_SIIK = 0, - LANGUAGE_SKRELLIAN = 0, - LANGUAGE_GUTTER = 0, - LANGUAGE_SCHECHI = 0, - LANGUAGE_SIGN = 0, - LANGUAGE_BIRDSONG = 0, - LANGUAGE_SAGARU = 0, - LANGUAGE_CANILUNZT = 0, - LANGUAGE_ECUREUILIAN= 0, - LANGUAGE_DAEMON = 0, - LANGUAGE_ENOCHIAN = 0, - LANGUAGE_DRUDAKAR = 0 - ) var/vr_sprites = list() - var/pto_type = null - -/obj/item/weapon/robot_module/robot/clerical - languages = list( - LANGUAGE_SOL_COMMON = 1, - LANGUAGE_TRADEBAND = 1, - LANGUAGE_UNATHI = 1, - LANGUAGE_SIIK = 1, - LANGUAGE_SKRELLIAN = 1, - LANGUAGE_ROOTLOCAL = 0, - LANGUAGE_GUTTER = 1, - LANGUAGE_SCHECHI = 1, - LANGUAGE_EAL = 1, - LANGUAGE_SIGN = 0, - LANGUAGE_BIRDSONG = 1, - LANGUAGE_SAGARU = 1, - LANGUAGE_CANILUNZT = 1, - LANGUAGE_ECUREUILIAN= 1, - LANGUAGE_DAEMON = 1, - LANGUAGE_ENOCHIAN = 1, - LANGUAGE_DRUDAKAR = 1, - LANGUAGE_TAVAN = 1 - ) /hook/startup/proc/robot_modules_vr() robot_modules["Medihound"] = /obj/item/weapon/robot_module/robot/medical/medihound @@ -58,10 +19,6 @@ /obj/item/weapon/robot_module/proc/vr_new() // Any Global modules, just add them before the return (This will also affect all the borgs in this file) return -/obj/item/weapon/robot_module/proc/vr_add_sprites() // Adds sprites from this file into list of avialible ones for global modules - sprites += vr_sprites - return - /obj/item/weapon/robot_module/robot/medical/surgeon/vr_new() //Surgeon Bot src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people. . = ..() //Any Global vore modules will come from here @@ -116,19 +73,6 @@ "Feminine Humanoid" = "uptall-service" ) -/obj/item/weapon/robot_module/robot/janitor - pto_type = PTO_CIVILIAN - -/obj/item/weapon/robot_module/robot/janitor/general - vr_sprites = list( - "Handy" = "handy-janitor", - "Acheron" = "mechoid-Janitor", - "Shellguard Noble" = "Noble-CLN", - "ZOOM-BA" = "zoomba-janitor", - "W02M" = "worm-janitor", - "Feminine Humanoid" = "uptall-janitor" - ) - /obj/item/weapon/robot_module/robot/security pto_type = PTO_SECURITY @@ -150,31 +94,6 @@ "Feminine Humanoid" = "uptall-security" ) -/obj/item/weapon/robot_module/robot/miner - pto_type = PTO_CARGO - -/obj/item/weapon/robot_module/robot/miner/general - vr_sprites = list( - "Handy" = "handy-miner", - "Acheron" = "mechoid-Miner", - "Shellguard Noble" = "Noble-DIG", - "ZOOM-BA" = "zoomba-miner", - "W02M" = "worm-miner", - "Feminine Humanoid" = "uptall-miner" - ) - -/obj/item/weapon/robot_module/robot/standard - pto_type = PTO_CIVILIAN - vr_sprites = list( - "Handy" = "handy-standard", - "Acheron" = "mechoid-Standard", - "Shellguard Noble" = "Noble-STD", - "ZOOM-BA" = "zoomba-standard", - "W02M" = "worm-standard", - "Feminine Humanoid" = "uptall-standard", - "Feminine Humanoid, Variant 2" = "uptall-standard2" - ) - /obj/item/weapon/robot_module/robot/engineering pto_type = PTO_ENGINEERING @@ -187,18 +106,6 @@ "Feminine Humanoid" = "uptall-engineering" ) -/obj/item/weapon/robot_module/robot/research - pto_type = PTO_SCIENCE - -/obj/item/weapon/robot_module/robot/research/general - vr_sprites = list( - "Acheron" = "mechoid-Science", - "ZOOM-BA" = "zoomba-research", - "XI-GUS" = "spiderscience", - "W02M" = "worm-janitor", - "Feminine Humanoid" = "uptall-science" - ) - /obj/item/weapon/robot_module/robot/security/knine name = "k9 robot module" sprites = list( @@ -254,7 +161,6 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() /obj/item/weapon/robot_module/robot/security/knine/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) @@ -351,7 +257,6 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() /obj/item/weapon/robot_module/robot/medical/traumahound @@ -435,7 +340,6 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() /obj/item/weapon/robot_module/robot/security/ert @@ -481,25 +385,10 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() /obj/item/weapon/robot_module/robot/janitor/scrubpup name = "Custodial Hound module" - sprites = list( - "Custodial Hound" = "scrubpup", - "Janihound model V-2" = "J9", - "Borgi" = "borgi-jani", - "Otieborg" = "otiej", - "Drake" = "drakejanit", - "Raptor V-4" = "janiraptor", - "MEKA" = "mekajani", - "MEKA v2" = "newmekajani", - "NIKO" = "mmekajani", - "NIKA" = "fmekajani", - "K4T" = "k4tjani", - "K4Talt" = "k4tjani_alt1" - ) can_be_pushed = 0 /obj/item/weapon/robot_module/robot/janitor/scrubpup/New(var/mob/living/silicon/robot/R) @@ -573,24 +462,10 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() /obj/item/weapon/robot_module/robot/research/sciencehound name = "Research Hound Module" - sprites = list( - "Research Hound" = "science", - "Borgi" = "borgi-sci", - "SciHound" = "scihound", - "SciHoundDark" = "scihounddark", - "Drake" = "drakesci", - "Raptor V-4" = "sciraptor", - "MEKA" = "mekasci", - "MEKA v2" = "newmekasci", - "NIKO" = "mmekasci", - "NIKA" = "fmekasci", - "K4T" = "k4tsci" - ) can_be_pushed = 0 /obj/item/weapon/robot_module/robot/research/sciencehound/New(var/mob/living/silicon/robot/R) @@ -663,7 +538,6 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() /obj/item/weapon/robot_module/robot/engineering/engiedog @@ -819,7 +693,6 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() // Uses modified K9 sprites. @@ -903,24 +776,10 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() /obj/item/weapon/robot_module/robot/miner/kmine name = "Supply Hound Module" - sprites = list( - "KMine" = "kmine", - "CargoHound" = "cargohound", - "CargoHoundDark" = "cargohounddark", - "Drake" = "drakemine", - "Raptor V-4" = "mineraptor", - "MEKA" = "mekamine", - "MEKA v2" = "newmekamine", - "NIKO" = "mmekamine", - "NIKA" = "fmekamine", - "K4T" = "k4tmine", - "K4Talt" = "k4tmine_alt1" - ) can_be_pushed = 0 /obj/item/weapon/robot_module/robot/miner/kmine/New(var/mob/living/silicon/robot/R) @@ -967,7 +826,6 @@ R.verbs |= /mob/living/silicon/robot/proc/robot_mount R.verbs |= /mob/living/proc/toggle_rider_reins R.verbs |= /mob/living/proc/shred_limb - R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() @@ -984,7 +842,6 @@ R.verbs -= /mob/living/silicon/robot/proc/robot_mount R.verbs -= /mob/living/proc/toggle_rider_reins R.verbs -= /mob/living/proc/shred_limb - R.verbs -= /mob/living/silicon/robot/proc/rest_style ..() @@ -1017,7 +874,7 @@ src.modules += new /obj/item/device/dogborg/boop_module(src) src.modules += new /obj/item/device/dogborg/sleeper/compactor/brewer(src) src.emag = new /obj/item/weapon/dogborg/pounce(src) - R.verbs += /mob/living/silicon/robot/proc/reskin_booze + //R.verbs += /mob/living/silicon/robot/proc/reskin_booze var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) M.stored_matter = 30 diff --git a/code/modules/mob/living/silicon/robot/robot_remote_control.dm b/code/modules/mob/living/silicon/robot/robot_remote_control.dm index c605584aa00..5d119753032 100644 --- a/code/modules/mob/living/silicon/robot/robot_remote_control.dm +++ b/code/modules/mob/living/silicon/robot/robot_remote_control.dm @@ -32,7 +32,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells) if(!QDELETED(camera)) camera.c_tag = real_name //update the camera name too notify_ai(ROBOT_NOTIFICATION_AI_SHELL) - updateicon() + update_icon() /mob/living/silicon/robot/proc/revert_shell() if(!shell) @@ -42,7 +42,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells) GLOB.available_ai_shells -= src if(!QDELETED(camera)) camera.c_tag = real_name - updateicon() + update_icon() // This should be called before the AI client/mind is actually moved. /mob/living/silicon/robot/proc/deploy_init(mob/living/silicon/ai/AI) @@ -56,7 +56,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells) // Have the borg have eyes when active. mainframe = AI deployed = TRUE - updateicon() + update_icon() // Laws. connected_ai = mainframe // So they share laws. @@ -91,7 +91,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells) to_chat(src, span("notice", message)) mind.transfer_to(mainframe) deployed = FALSE - updateicon() + update_icon() mainframe.teleop = null mainframe.deployed_shell = null SetName("[modtype] AI Shell [num2text(ident)]") diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm index 534a1e1120b..2bb0c916e2d 100644 --- a/code/modules/mob/living/silicon/robot/robot_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_vr.dm @@ -12,8 +12,7 @@ var/notransform var/original_icon = 'icons/mob/robots.dmi' var/ui_style_vr = FALSE //Do we use our hud icons? - var/sitting = FALSE - var/bellyup = FALSE + var/rest_style = "Default" does_spin = FALSE var/wideborg_dept = 'icons/mob/widerobot_vr.dmi' var/vr_icons = list( @@ -89,24 +88,21 @@ /mob/living/silicon/robot/lay_down() . = ..() - updateicon() + update_icon() -/mob/living/silicon/robot/proc/rest_style() +/mob/living/silicon/robot/verb/rest_style() set name = "Switch Rest Style" - set category = "IC" set desc = "Select your resting pose." - sitting = FALSE - bellyup = FALSE - var/choice = tgui_alert(src, "Select resting pose", "Resting Pose", list("Resting", "Sitting", "Belly up")) - switch(choice) - if("Resting") - return 0 - if("Sitting") - sitting = TRUE - if("Belly up") - bellyup = TRUE + set category = "IC" -/mob/living/silicon/robot/updateicon() + if(!sprite_datum || !sprite_datum.has_rest_sprites || sprite_datum.rest_sprite_options.len <= 1) + return + + rest_style = tgui_alert(src, "Select resting pose", "Resting Pose", sprite_datum.rest_sprite_options) + if(!rest_style) + rest_style = "Default" +/* +/mob/living/silicon/robot/update_icon() vr_sprite_check() ..() if(dogborg == TRUE && stat == CONSCIOUS) @@ -175,7 +171,7 @@ icon = 'icons/mob/robots_vr.dmi' else if(!(icon_state in vr_icons)) icon = original_icon - +*/ /mob/living/silicon/robot/proc/ex_reserve_refill() set name = "Refill Extinguisher" set category = "Object" diff --git a/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm new file mode 100644 index 00000000000..843e75bd41f --- /dev/null +++ b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm @@ -0,0 +1,97 @@ +/datum/robot_sprite + var/name + var/module_type + var/default_sprite = FALSE + + var/sprite_icon + var/sprite_icon_state + var/sprite_hud_icon_state + var/has_eye_sprites = TRUE + var/has_eye_light_sprites = FALSE + var/has_custom_open_sprites = FALSE + var/has_vore_belly_sprites = FALSE + var/has_vore_belly_resting_sprites = FALSE + var/has_rest_sprites = FALSE + var/list/rest_sprite_options + var/has_dead_sprite = FALSE + var/has_dead_sprite_overlay = FALSE + var/vis_height = 32 + var/pixel_x = 0 + + var/is_whitelisted = FALSE + var/whitelist_ckey + var/whitelist_charname + +/datum/robot_sprite/proc/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg) + return + +/datum/robot_sprite/proc/get_belly_overlay(var/mob/living/silicon/robot/ourborg) + return "[sprite_icon_state]-sleeper" + +/datum/robot_sprite/proc/get_belly_resting_overlay(var/mob/living/silicon/robot/ourborg) + return + +/datum/robot_sprite/proc/get_eyes_overlay(var/mob/living/silicon/robot/ourborg) + if(!(ourborg.resting && has_rest_sprites)) + return "[sprite_icon_state]-eyes" + else + return + +/datum/robot_sprite/proc/get_eye_light_overlay(var/mob/living/silicon/robot/ourborg) + if(!(ourborg.resting && has_rest_sprites)) + return "[sprite_icon_state]-lights" + else + return + +/datum/robot_sprite/proc/get_rest_sprite(var/mob/living/silicon/robot/ourborg) + return + +/datum/robot_sprite/proc/get_dead_sprite(var/mob/living/silicon/robot/ourborg) + return "[sprite_icon_state]-wreck" + +/datum/robot_sprite/proc/get_dead_sprite_overlay(var/mob/living/silicon/robot/ourborg) + return "wreck-overlay" + +/datum/robot_sprite/proc/get_open_sprite(var/mob/living/silicon/robot/ourborg) + if(!ourborg.opened) + return + if(ourborg.wiresexposed) + . = "openpanel_w" + else if(ourborg.cell) + . = "openpanel_c" + else + . = "openpanel_nc" + + if(has_custom_open_sprites) + . = "[sprite_icon_state]-[.]" + + return + +// Dogborgs and not-dogborgs that use dogborg stuff. Oh no. + +/datum/robot_sprite/dogborg + has_vore_belly_sprites = TRUE + has_rest_sprites = TRUE + rest_sprite_options = list("Default", "Sit", "Bellyup") + has_dead_sprite = TRUE + has_dead_sprite_overlay = TRUE + pixel_x = -16 + //This is a secret tool that will help us later + +/datum/robot_sprite/dogborg/get_rest_sprite(var/mob/living/silicon/robot/ourborg) + if(!(ourborg.rest_style in rest_sprite_options)) + ourborg.rest_style = "Default" + switch(ourborg.rest_style) + if("Sit") + return "[sprite_icon_state]-sit" + if("Bellyup") + return "[sprite_icon_state]-bellyup" + else + return "[sprite_icon_state]-rest" + +/datum/robot_sprite/dogborg/get_belly_overlay(var/mob/living/silicon/robot/ourborg) + return "[sprite_icon_state]-sleeper" + +/datum/robot_sprite/dogborg/tall + has_dead_sprite_overlay = FALSE + vis_height = 64 \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/sprites/janitor.dm b/code/modules/mob/living/silicon/robot/sprites/janitor.dm new file mode 100644 index 00000000000..2325877e89b --- /dev/null +++ b/code/modules/mob/living/silicon/robot/sprites/janitor.dm @@ -0,0 +1,195 @@ +// Regular sprites + +/datum/robot_sprite/janitor + module_type = "Janitor" + sprite_icon = 'icons/mob/robot/janitor.dmi' + +/datum/robot_sprite/janitor/default + name = DEFAULT_ROBOT_SPRITE_NAME + default_sprite = TRUE + sprite_icon_state = "default" + +/datum/robot_sprite/janitor/crawler + name = "Arachne" + sprite_icon_state = "crawler" + +/datum/robot_sprite/janitor/eyebot + name = "Cabeiri" + sprite_icon_state = "eyebot" + +/datum/robot_sprite/janitor/marina + name = "Haruka" + sprite_icon_state = "marina" + +/datum/robot_sprite/janitor/toiletbot + name = "Telemachus" + sprite_icon_state = "toiletbot" + +/datum/robot_sprite/janitor/sleek + name = "WTOperator" + sprite_icon_state = "sleek" + +/datum/robot_sprite/janitor/heavy + name = "XI-ALP" + sprite_icon_state = "heavy" + +/datum/robot_sprite/janitor/old + name = "Basic" + sprite_icon_state = "old" + has_eye_sprites = FALSE + +/datum/robot_sprite/janitor/mopbot + name = "Mopbot" + sprite_icon_state = "mopbot" + has_eye_sprites = FALSE + +/datum/robot_sprite/janitor/mopgearrex + name = "Mop Gear Rex" + sprite_icon_state = "mopgearrex" + +/datum/robot_sprite/janitor/drone + name = "Drone" + sprite_icon_state = "drone" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/janitor/tall2 + name = "Usagi-II" + sprite_icon_state = "tall2" + +/datum/robot_sprite/janitor/glitterfly + name = "Pyralis" + sprite_icon_state = "glitterfly" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/janitor/decapod + name = "Decapod" + sprite_icon_state = "decapod" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/janitor/pneuma + name = "Pneuma" + sprite_icon_state = "pneuma" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/janitor/drider + name = "Tower" + sprite_icon_state = "drider" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/janitor/handy + name = "Handy" + sprite_icon_state = "handy" + +/datum/robot_sprite/janitor/mechoid + name = "Acheron" + sprite_icon_state = "mechoid" + +/datum/robot_sprite/janitor/noble + name = "Shellguard Noble" + sprite_icon_state = "noble" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/janitor/zoomba + name = "ZOOM-BA" + sprite_icon_state = "zoomba" + has_dead_sprite = TRUE + +/datum/robot_sprite/janitor/worm + name = "W02M" + sprite_icon_state = "worm" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/janitor/uptall + name = "Feminine Humanoid" + sprite_icon_state = "uptall" + +// Wide/dogborg sprites + +/datum/robot_sprite/dogborg/janitor + module_type = "Janitor" + sprite_icon = 'icons/mob/robot/janitor_wide.dmi' + +/datum/robot_sprite/dogborg/janitor/scrubpup + name = "Custodial Hound" + sprite_icon_state = "scrubpup" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/janitor/vale + name = "Janihound Model V-2" + sprite_icon_state = "vale" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/janitor/borgi + name = "Borgi" + sprite_icon_state = "borgi" + has_eye_sprites = FALSE + has_eye_light_sprites = TRUE + has_dead_sprite_overlay = FALSE + +/datum/robot_sprite/dogborg/janitor/otie + name = "Otieborg" + sprite_icon_state = "otie" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/janitor/drake + name = "Drake" + sprite_icon_state = "drake" + +// Tall sprites + +/datum/robot_sprite/dogborg/tall/janitor + module_type = "Janitor" + sprite_icon = 'icons/mob/robot/janitor_large.dmi' + +/datum/robot_sprite/dogborg/tall/janitor/raptor + name = "Raptor V-4" + sprite_icon_state = "raptor" + rest_sprite_options = list("Default", "Bellyup") + +/datum/robot_sprite/dogborg/tall/janitor/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/janitor/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/janitor/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/janitor/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/janitor/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/mining/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") \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/sprites/mining.dm b/code/modules/mob/living/silicon/robot/sprites/mining.dm new file mode 100644 index 00000000000..ed91ff3fb6c --- /dev/null +++ b/code/modules/mob/living/silicon/robot/sprites/mining.dm @@ -0,0 +1,184 @@ +// Regular sprites + +/datum/robot_sprite/mining + module_type = "Miner" + sprite_icon = 'icons/mob/robot/mining.dmi' + +/datum/robot_sprite/mining/default + name = DEFAULT_ROBOT_SPRITE_NAME + default_sprite = TRUE + sprite_icon_state = "default" + +/datum/robot_sprite/mining/eyebot + name = "Cabeiri" + sprite_icon_state = "eyebot" + +/datum/robot_sprite/mining/marina + name = "Haruka" + sprite_icon_state = "marina" + +/datum/robot_sprite/mining/toiletbot + name = "Telemachus" + sprite_icon_state = "toiletbot" + +/datum/robot_sprite/mining/sleek + name = "WTOperator" + sprite_icon_state = "sleek" + +/datum/robot_sprite/mining/spider + name = "XI-GUS" + sprite_icon_state = "spider" + +/datum/robot_sprite/mining/heavy + name = "XI-ALP" + sprite_icon_state = "heavy" + +/datum/robot_sprite/mining/old + name = "Basic" + sprite_icon_state = "old" + has_eye_sprites = FALSE + +/datum/robot_sprite/mining/droid + name = "Advanced Droid" + sprite_icon_state = "droid" + +/datum/robot_sprite/mining/treadhead + name = "Treadhead" + sprite_icon_state = "treadhead" + +/datum/robot_sprite/mining/drone + name = "Drone" + sprite_icon_state = "drone" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/mining/tall2 + name = "Usagi-II" + sprite_icon_state = "tall2" + +/datum/robot_sprite/mining/glitterfly + name = "Pyralis" + sprite_icon_state = "glitterfly" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/mining/decapod + name = "Decapod" + sprite_icon_state = "decapod" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/mining/pneuma + name = "Pneuma" + sprite_icon_state = "pneuma" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/mining/drider + name = "Tower" + sprite_icon_state = "drider" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/mining/handy + name = "Handy" + sprite_icon_state = "handy" + +/datum/robot_sprite/mining/mechoid + name = "Acheron" + sprite_icon_state = "mechoid" + +/datum/robot_sprite/mining/noble + name = "Shellguard Noble" + sprite_icon_state = "noble" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/mining/zoomba + name = "ZOOM-BA" + sprite_icon_state = "zoomba" + has_dead_sprite = TRUE + +/datum/robot_sprite/mining/worm + name = "W02M" + sprite_icon_state = "worm" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/mining/uptall + name = "Feminine Humanoid" + sprite_icon_state = "uptall" + +// Wide/dogborg sprites + +/datum/robot_sprite/dogborg/mining + module_type = "Miner" + sprite_icon = 'icons/mob/robot/mining_wide.dmi' + +/datum/robot_sprite/dogborg/mining/vale + name = "KMine" + sprite_icon_state = "vale" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/mining/hound + name = "CargoHound" + sprite_icon_state = "hound" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/mining/hounddark + name = "CargoHoundDark" + sprite_icon_state = "hounddark" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/mining/drake + name = "Drake" + sprite_icon_state = "drake" + +// Tall sprites + +/datum/robot_sprite/dogborg/tall/mining + module_type = "Miner" + sprite_icon = 'icons/mob/robot/mining_large.dmi' + +/datum/robot_sprite/dogborg/tall/mining/raptor + name = "Raptor V-4" + sprite_icon_state = "raptor" + rest_sprite_options = list("Default", "Bellyup") + +/datum/robot_sprite/dogborg/tall/mining/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/mining/newmeka + name = "MEKA v2" + sprite_icon_state = "newmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/mining/mmeka + name = "NIKO" + sprite_icon_state = "mmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/mining/fmeka + name = "NIKA" + sprite_icon_state = "fmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/mining/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/mining/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") \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/sprites/science.dm b/code/modules/mob/living/silicon/robot/sprites/science.dm new file mode 100644 index 00000000000..613da0472a2 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/sprites/science.dm @@ -0,0 +1,173 @@ +// Regular sprites + +/datum/robot_sprite/science + module_type = "Research" + sprite_icon = 'icons/mob/robot/science.dmi' + +/datum/robot_sprite/science/default + name = DEFAULT_ROBOT_SPRITE_NAME + default_sprite = TRUE + sprite_icon_state = "default" + +/datum/robot_sprite/science/peaceborg + name = "L'Ouef" + sprite_icon_state = "peaceborg" + +/datum/robot_sprite/science/eyebot + name = "Cabeiri" + sprite_icon_state = "eyebot" + +/datum/robot_sprite/science/marina + name = "Haruka" + sprite_icon_state = "marina" + +/datum/robot_sprite/science/whitespider + name = "WTDove" + sprite_icon_state = "whitespider" + +/datum/robot_sprite/science/sleek + name = "WTOperator" + sprite_icon_state = "sleek" + +/datum/robot_sprite/science/droid + name = "Droid" + sprite_icon_state = "droid" + +/datum/robot_sprite/science/drone + name = "Drone" + sprite_icon_state = "drone" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/science/handy + name = "Handy" + sprite_icon_state = "handy" + +/datum/robot_sprite/science/insekt + name = "Insekt" + sprite_icon_state = "insekt" + +/datum/robot_sprite/science/tall2 + name = "Usagi-II" + sprite_icon_state = "tall2" + +/datum/robot_sprite/science/glitterfly + name = "Pyralis" + sprite_icon_state = "glitterfly" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/science/decapod + name = "Decapod" + sprite_icon_state = "decapod" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/science/pneuma + name = "Pneuma" + sprite_icon_state = "pneuma" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/science/drider + name = "Tower" + sprite_icon_state = "drider" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/science/mechoid + name = "Acheron" + sprite_icon_state = "mechoid" + +/datum/robot_sprite/science/zoomba + name = "ZOOM-BA" + sprite_icon_state = "zoomba" + has_dead_sprite = TRUE + +/datum/robot_sprite/science/spider + name = "XI-GUS" + sprite_icon_state = "spider" + +/datum/robot_sprite/science/worm + name = "W02M" + sprite_icon_state = "worm" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/science/uptall + name = "Feminine Humanoid" + sprite_icon_state = "uptall" + +// Wide sprites + +/datum/robot_sprite/dogborg/science + module_type = "Research" + sprite_icon = 'icons/mob/robot/science_wide.dmi' + +/datum/robot_sprite/dogborg/science/vale + name = "Research Hound" + sprite_icon_state = "vale" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/science/borgi + name = "Borgi" + sprite_icon_state = "borgi" + has_eye_sprites = FALSE + has_eye_light_sprites = TRUE + has_dead_sprite_overlay = FALSE + +/datum/robot_sprite/dogborg/science/hound + name = "SciHound" + sprite_icon_state = "hound" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/science/darkhound + name = "SciHoundDark" + sprite_icon_state = "darkhound" + has_eye_light_sprites = TRUE + +/datum/robot_sprite/dogborg/science/drake + name = "Drake" + sprite_icon_state = "drake" + +// Tall sprites + +/datum/robot_sprite/dogborg/tall/science + module_type = "Research" + sprite_icon = 'icons/mob/robot/science_large.dmi' + +/datum/robot_sprite/dogborg/tall/science/raptor + name = "Raptor V-4" + sprite_icon_state = "raptor" + rest_sprite_options = list("Default", "Bellyup") + +/datum/robot_sprite/dogborg/tall/science/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/science/newmeka + name = "MEKA v2" + sprite_icon_state = "newmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/science/mmeka + name = "NIKO" + sprite_icon_state = "mmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/science/fmeka + name = "NIKA" + sprite_icon_state = "fmeka" + has_eye_light_sprites = TRUE + has_custom_open_sprites = TRUE + rest_sprite_options = list("Default", "Sit") + +/datum/robot_sprite/dogborg/tall/science/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") \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/sprites/standard.dm b/code/modules/mob/living/silicon/robot/sprites/standard.dm new file mode 100644 index 00000000000..d37ff1dd861 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/sprites/standard.dm @@ -0,0 +1,112 @@ +/datum/robot_sprite/standard + module_type = "Standard" + sprite_icon = 'icons/mob/robot/standard.dmi' + +/datum/robot_sprite/standard/default + name = DEFAULT_ROBOT_SPRITE_NAME + default_sprite = TRUE + sprite_icon_state = "default" + +/datum/robot_sprite/standard/eyebot + name = "Cabeiri" + sprite_icon_state = "eyebot" + +/datum/robot_sprite/standard/marina + name = "Haruka" + sprite_icon_state = "marina" + +/datum/robot_sprite/standard/tallflower + name = "Usagi" + sprite_icon_state = "tallflower" + +/datum/robot_sprite/standard/toiletbot + name = "Telemachus" + sprite_icon_state = "toiletbot" + +/datum/robot_sprite/standard/sleek + name = "WTOperator" + sprite_icon_state = "sleek" + +/datum/robot_sprite/standard/omoikane + name = "WTOmni" + sprite_icon_state = "omoikane" + +/datum/robot_sprite/standard/spider //There's like 4 different spider borg types, but this one has seniority + name = "XI-GUS" + sprite_icon_state = "spider" + +/datum/robot_sprite/standard/heavy + name = "XI-ALP" + sprite_icon_state = "heavy" + +/datum/robot_sprite/standard/old + name = "Basic" + sprite_icon_state = "old" + +/datum/robot_sprite/standard/droid + name = "Android" + sprite_icon_state = "droid" + +/datum/robot_sprite/standard/drone + name = "Drone" + sprite_icon_state = "drone" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/standard/insekt + name = "Insekt" + sprite_icon_state = "insekt" + +/datum/robot_sprite/standard/tall2 + name = "Usagi-II" + sprite_icon_state = "tall2" + +/datum/robot_sprite/standard/glitterfly + name = "Pyralis" + sprite_icon_state = "glitterfly" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/standard/decapod + name = "Decapod" + sprite_icon_state = "decapod" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/standard/pneuma + name = "Pneuma" + sprite_icon_state = "pneuma" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/standard/drider + name = "Tower" + sprite_icon_state = "drider" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/standard/handy + name = "Handy" + sprite_icon_state = "handy" + +/datum/robot_sprite/standard/mechoid + name = "Acheron" + sprite_icon_state = "mechoid" + +/datum/robot_sprite/standard/noble + name = "Shellguard Noble" + sprite_icon_state = "noble" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/standard/zoomba + name = "ZOOM-BA" + sprite_icon_state = "zoomba" + has_dead_sprite = TRUE + +/datum/robot_sprite/standard/worm + name = "W02M" + sprite_icon_state = "worm" + has_custom_open_sprites = TRUE + +/datum/robot_sprite/standard/uptall + name = "Feminine Humanoid" + sprite_icon_state = "uptall" + +/datum/robot_sprite/standard/uptall2 + name = "Feminine Humanoid, Variant 2" + sprite_icon_state = "uptall2" \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm b/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm index d9d38faae22..cf0a9c778f7 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm @@ -69,7 +69,7 @@ if(!mmi) mmi = new /obj/item/device/mmi/digital/robot(src) SetName("inactive [initial(name)]") - updateicon() + update_icon() // Copypasting from root proc to avoid calling ..() and accidentally creating duplicate armour etc. /mob/living/silicon/robot/platform/initialize_components() diff --git a/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_icon.dm b/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_icon.dm index 3a9882ff089..a8056885df0 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_icon.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_icon.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot/platform/update_icon() - updateicon() + update_icon() -/mob/living/silicon/robot/platform/updateicon() +/mob/living/silicon/robot/platform/update_icon() cut_overlays() underlays.Cut() @@ -106,4 +106,4 @@ else . = FALSE if(.) - updateicon() + update_icon() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm index b9297da8527..14774781090 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm @@ -168,7 +168,7 @@ poss_ai.play_dead_until = world.time + rand(1 MINUTE, 2 MINUTES) update_icon() -/mob/living/simple_mob/animal/passive/opossum/updateicon() +/mob/living/simple_mob/animal/passive/opossum/update_icon() update_icon() /mob/living/simple_mob/animal/passive/opossum/update_icon() diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm index 83910850e3d..f8e2ce6220b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm @@ -103,7 +103,7 @@ real_name = name for(var/spell in construct_spells) src.add_spell(new spell, "const_spell_ready") - updateicon() + update_icon() /* /mob/living/simple_mob/construct/update_icon() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f8e44c02c1c..219a11db305 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1003,9 +1003,6 @@ return 0 -/mob/proc/updateicon() - return - // Please always use this proc, never just set the var directly. /mob/proc/set_stat(var/new_stat) . = (stat != new_stat) diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index f748baf6e86..20241cdc2c5 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -68,7 +68,7 @@ GLOBAL_LIST_EMPTY(all_turbines) circ1 = null circ2 = null -/obj/machinery/power/generator/proc/updateicon() +/obj/machinery/power/generator/update_icon() icon_state = anchored ? "teg-assembled" : "teg-unassembled" cut_overlays() if (circ1) @@ -163,7 +163,7 @@ GLOBAL_LIST_EMPTY(all_turbines) genlev = 1 if(genlev != lastgenlev) lastgenlev = genlev - updateicon() + update_icon() add_avail(effective_gen) /obj/machinery/power/generator/attack_ai(mob/user) @@ -184,7 +184,7 @@ GLOBAL_LIST_EMPTY(all_turbines) reconnect() lastgenlev = 0 effective_gen = 0 - updateicon() + update_icon() else ..() @@ -238,7 +238,7 @@ GLOBAL_LIST_EMPTY(all_turbines) /obj/machinery/power/generator/power_change() ..() - updateicon() + update_icon() /obj/machinery/power/generator/verb/rotate_clockwise() diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m_cells.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m_cells.dm index b7bc0f1597f..e66908daef7 100644 --- a/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m_cells.dm +++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/ml3m_cells.dm @@ -323,7 +323,7 @@ if(istype(target, /mob/living/carbon/human)) target.resize(0.5) target.show_message("The beam fires into your body, changing your size!") - target.updateicon() + target.update_icon() else return 1 @@ -337,7 +337,7 @@ if(istype(target, /mob/living/carbon/human)) target.resize(2.0) target.show_message("The beam fires into your body, changing your size!") - target.updateicon() + target.update_icon() else return 1 @@ -351,6 +351,6 @@ if(istype(target, /mob/living/carbon/human)) target.resize(1) target.show_message("The beam fires into your body, changing your size!") - target.updateicon() + target.update_icon() else return 1 diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 86d298d0542..551a251a50b 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -303,7 +303,7 @@ P.base_icon_state = base_state P.set_dir(dir) P.dpdir = dpdir - P.updateicon() + P.update_icon() //Needs some special treatment ;) if(ptype==DISPOSAL_PIPE_SORTER || ptype==DISPOSAL_PIPE_SORTER_FLIPPED) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 51666ab3c00..d900a3fc0a4 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -839,13 +839,13 @@ // change visibility status and force update of icon /obj/structure/disposalpipe/hide(var/intact) invisibility = intact ? 101: 0 // hide if floor is intact - updateicon() + update_icon() // update actual icon_state depending on visibility // if invisible, append "f" to icon_state to show faded version // this will be revealed if a T-scanner is used // if visible, use regular icon_state -/obj/structure/disposalpipe/proc/updateicon() +/obj/structure/disposalpipe/update_icon() /* if(invisibility) //we hide things with alpha now, no need for transparent icons icon_state = "[base_icon_state]f" else diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index eba4bb12a73..9660d976913 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -1180,7 +1180,7 @@ owner.update_icon() for(var/mob/living/M in contents) M.updateVRPanel() - owner.updateicon() + owner.update_icon() //Autotransfer callback /obj/belly/proc/check_autotransfer(var/prey, var/autotransferlocation) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index b39e87ddd97..ecfb0cfaad3 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -661,7 +661,7 @@ else belly.nom_mob(prey, user) - user.updateicon() + user.update_icon() // Inform Admins if(pred == user) diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 61938990944..7a621d31ca8 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -1147,7 +1147,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", if(belly_choice == null) return FALSE host.vore_selected.silicon_belly_overlay_preference = belly_choice - host.updateicon() + host.update_icon() . = TRUE if("b_min_belly_number_flat") var/new_min_belly = tgui_input_number(user, "Choose the amount of prey your belly must contain \ @@ -1157,7 +1157,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", return FALSE var/new_new_min_belly = CLAMP(new_min_belly, 1, 100) //Clamping at 100 rather than infinity. Should be close to infinity tho. host.vore_selected.visible_belly_minimum_prey = new_new_min_belly - host.updateicon() + host.update_icon() . = TRUE if("b_min_belly_prey_size") var/new_belly_size = tgui_input_number(user, "Choose the required size prey must be to trigger belly overlay, \ @@ -1169,11 +1169,11 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", else var/new_new_belly_size = CLAMP(new_belly_size, 25, 200) host.vore_selected.overlay_min_prey_size = (new_new_belly_size/100) - host.updateicon() + host.update_icon() . = TRUE if("b_override_min_belly_prey_size") host.vore_selected.override_min_prey_size = !host.vore_selected.override_min_prey_size - host.updateicon() + host.update_icon() . = TRUE if("b_min_belly_number_override") var/new_min_prey = tgui_input_number(user, "Choose the amount of prey your belly must contain to override min prey size \ @@ -1183,7 +1183,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", return FALSE var/new_new_min_prey = CLAMP(new_min_prey, 1, 100) //Clamping at 100 rather than infinity. Should be close to infinity tho. host.vore_selected.override_min_prey_num = new_new_min_prey - host.updateicon() + host.update_icon() . = TRUE if("b_fancy_sound") host.vore_selected.fancy_vore = !host.vore_selected.fancy_vore diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm index 4088c22aed8..f75ecaeed02 100644 --- a/code/modules/vore/resizing/sizegun_vr.dm +++ b/code/modules/vore/resizing/sizegun_vr.dm @@ -156,7 +156,7 @@ return if(!M.resize(set_size, uncapped = M.has_large_resize_bounds(), ignore_prefs = ignoring_prefs)) to_chat(M, "The beam fires into your body, changing your size!") - M.updateicon() + M.update_icon() return return 1 @@ -176,7 +176,7 @@ M.resize(set_size, uncapped = TRUE, ignore_prefs = TRUE) // Always ignores prefs, caution is advisable to_chat(M, "The beam fires into your body, changing your size!") - M.updateicon() + M.update_icon() return return 1 diff --git a/icons/mob/robot/janitor.dmi b/icons/mob/robot/janitor.dmi new file mode 100644 index 00000000000..52cdca4b26b Binary files /dev/null and b/icons/mob/robot/janitor.dmi differ diff --git a/icons/mob/robot/janitor_large.dmi b/icons/mob/robot/janitor_large.dmi new file mode 100644 index 00000000000..092c221d48a Binary files /dev/null and b/icons/mob/robot/janitor_large.dmi differ diff --git a/icons/mob/robot/janitor_wide.dmi b/icons/mob/robot/janitor_wide.dmi new file mode 100644 index 00000000000..0e878aa8a4b Binary files /dev/null and b/icons/mob/robot/janitor_wide.dmi differ diff --git a/icons/mob/robot/mining.dmi b/icons/mob/robot/mining.dmi new file mode 100644 index 00000000000..1454a4471ec Binary files /dev/null and b/icons/mob/robot/mining.dmi differ diff --git a/icons/mob/robot/mining_large.dmi b/icons/mob/robot/mining_large.dmi new file mode 100644 index 00000000000..be011eeb854 Binary files /dev/null and b/icons/mob/robot/mining_large.dmi differ diff --git a/icons/mob/robot/mining_wide.dmi b/icons/mob/robot/mining_wide.dmi new file mode 100644 index 00000000000..a8055a0d842 Binary files /dev/null and b/icons/mob/robot/mining_wide.dmi differ diff --git a/icons/mob/robot/science.dmi b/icons/mob/robot/science.dmi new file mode 100644 index 00000000000..ac1ff9dc16d Binary files /dev/null and b/icons/mob/robot/science.dmi differ diff --git a/icons/mob/robot/science_large.dmi b/icons/mob/robot/science_large.dmi new file mode 100644 index 00000000000..1434d63f441 Binary files /dev/null and b/icons/mob/robot/science_large.dmi differ diff --git a/icons/mob/robot/science_wide.dmi b/icons/mob/robot/science_wide.dmi new file mode 100644 index 00000000000..6a37be0edd6 Binary files /dev/null and b/icons/mob/robot/science_wide.dmi differ diff --git a/icons/mob/robot/standard.dmi b/icons/mob/robot/standard.dmi new file mode 100644 index 00000000000..bbcb4ef1628 Binary files /dev/null and b/icons/mob/robot/standard.dmi differ diff --git a/icons/mob/robots_vr.dmi b/icons/mob/robots_vr.dmi index e5efcc435d7..2c5cb7b3ee5 100644 Binary files a/icons/mob/robots_vr.dmi and b/icons/mob/robots_vr.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 4ba0ccfaf0c..991f57a8bf8 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -285,6 +285,7 @@ #include "code\controllers\subsystems\plants.dm" #include "code\controllers\subsystems\player_tips.dm" #include "code\controllers\subsystems\radiation.dm" +#include "code\controllers\subsystems\robot_sprites.dm" #include "code\controllers\subsystems\shuttles.dm" #include "code\controllers\subsystems\skybox.dm" #include "code\controllers\subsystems\sounds.dm" @@ -3028,6 +3029,11 @@ #include "code\modules\mob\living\silicon\robot\robot_modules\station_vr.dm" #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\janitor.dm" +#include "code\modules\mob\living\silicon\robot\sprites\mining.dm" +#include "code\modules\mob\living\silicon\robot\sprites\science.dm" +#include "code\modules\mob\living\silicon\robot\sprites\standard.dm" #include "code\modules\mob\living\silicon\robot\subtypes\gravekeeper.dm" #include "code\modules\mob\living\silicon\robot\subtypes\lost_drone.dm" #include "code\modules\mob\living\silicon\robot\subtypes\lost_drone_vr.dm" @@ -4230,13 +4236,13 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" -#include "maps\groundbase\groundbase.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" #include "maps\southern_cross\items\clothing\sc_under.dm" #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" +#include "maps\stellar_delight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\engine_submaps\engine.dm"