diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 0c1fbdeaaeb..6f7d1976449 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -187,6 +187,11 @@ cyborg.radio.recalculateChannels() cyborg.set_modularInterface_theme() + //SKYRAT EDIT ADDITION BEGIN - ALTBORGS - Old check for 'dogborg' var no longer necessary, refactored into model_features instead. + if(cyborg.is_dogborg()) //Should pass because model was set previously. + new_model.dogborg_equip() + //SKYRAT EDIT ADDITION END + INVOKE_ASYNC(new_model, .proc/do_transform_animation) qdel(src) return new_model diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm deleted file mode 100644 index 2933e41d658..00000000000 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ /dev/null @@ -1,716 +0,0 @@ -/*************************************************************************************** - * # robot_modules - * - * Deals with the creation and deletion of modules (tools). - * Assigns modules and traits to a borg with a specific model selected. - * - ***************************************************************************************/ - -/obj/item/robot_model/Initialize(mapload) - . = ..() - for(var/i in basic_modules) - var/obj/item/I = new i(src) - basic_modules += I - basic_modules -= i - for(var/i in emag_modules) - var/obj/item/I = new i(src) - emag_modules += I - emag_modules -= i - -/obj/item/robot_model/Destroy() - basic_modules.Cut() - emag_modules.Cut() - modules.Cut() - added_modules.Cut() - storages.Cut() - return ..() - -/obj/item/robot_model/proc/get_usable_modules() - . = modules.Copy() - -/obj/item/robot_model/proc/get_inactive_modules() - . = list() - var/mob/living/silicon/robot/R = loc - for(var/m in get_usable_modules()) - if(!(m in R.held_items)) - . += m - -/obj/item/robot_model/proc/add_module(obj/item/I, nonstandard, requires_rebuild) - if(istype(I, /obj/item/stack)) - var/obj/item/stack/sheet_module = I - if(ispath(sheet_module.source, /datum/robot_energy_storage)) - sheet_module.source = get_or_create_estorage(sheet_module.source) - - if(istype(sheet_module, /obj/item/stack/sheet/rglass/cyborg)) - var/obj/item/stack/sheet/rglass/cyborg/rglass_module = sheet_module - if(ispath(rglass_module.glasource, /datum/robot_energy_storage)) - rglass_module.glasource = get_or_create_estorage(rglass_module.glasource) - - if(istype(sheet_module.source)) - sheet_module.cost = max(sheet_module.cost, 1) // Must not cost 0 to prevent div/0 errors. - sheet_module.is_cyborg = TRUE - - if(I.loc != src) - I.forceMove(src) - modules += I - ADD_TRAIT(I, TRAIT_NODROP, CYBORG_ITEM_TRAIT) - I.mouse_opacity = MOUSE_OPACITY_OPAQUE - if(nonstandard) - added_modules += I - if(requires_rebuild) - rebuild_modules() - return I - -/obj/item/robot_model/proc/remove_module(obj/item/I, delete_after) - basic_modules -= I - modules -= I - emag_modules -= I - added_modules -= I - rebuild_modules() - if(delete_after) - qdel(I) - -/obj/item/robot_model/proc/rebuild_modules() //builds the usable module list from the modules we have - var/mob/living/silicon/robot/R = loc - var/list/held_modules = R.held_items.Copy() - var/active_module = R.module_active - R.uneq_all() - modules = list() - for(var/obj/item/I in basic_modules) - add_module(I, FALSE, FALSE) - if(R.emagged) - for(var/obj/item/I in emag_modules) - add_module(I, FALSE, FALSE) - for(var/obj/item/I in added_modules) - add_module(I, FALSE, FALSE) - for(var/i in held_modules) - if(i) - R.equip_module_to_slot(i, held_modules.Find(i)) - if(active_module) - R.select_module(held_modules.Find(active_module)) - if(R.hud_used) - R.hud_used.update_robot_modules_display() - -/obj/item/robot_model/proc/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) - for(var/datum/robot_energy_storage/st in storages) - st.energy = min(st.max_energy, st.energy + coeff * st.recharge_rate) - - for(var/obj/item/I in get_usable_modules()) - if(istype(I, /obj/item/assembly/flash)) - var/obj/item/assembly/flash/F = I - F.times_used = 0 - F.burnt_out = FALSE - F.update_appearance() - else if(istype(I, /obj/item/melee/baton/security)) - var/obj/item/melee/baton/security/baton = I - baton.cell?.charge = baton.cell.maxcharge - else if(istype(I, /obj/item/gun/energy)) - var/obj/item/gun/energy/EG = I - if(!EG.chambered) - EG.recharge_newshot() //try to reload a new shot. - - R.toner = R.tonermax - -/obj/item/robot_model/proc/get_or_create_estorage(storage_type) - return (locate(storage_type) in storages) || new storage_type(src) - -/obj/item/robot_model/emp_act(severity) - . = ..() - if(. & EMP_PROTECT_CONTENTS) - return - for(var/obj/O in modules) - O.emp_act(severity) - ..() - -// --------------------- Transformations -/obj/item/robot_model/proc/transform_to(new_config_type) - var/mob/living/silicon/robot/R = loc - var/obj/item/robot_model/RM = new new_config_type(R) - RM.robot = R - if(!RM.be_transformed_to(src)) - qdel(RM) - return - R.model = RM - R.update_module_innate() - RM.rebuild_modules() - R.radio.recalculateChannels() - //SKYRAT EDIT ADDITION BEGIN - ALTBORGS - Old check for 'dogborg' var no longer necessary, refactored into model_features instead. - if(R.is_dogborg()) //Should pass because model was set previously. - RM.dogborg_equip() - //SKYRAT EDIT ADDITION END - INVOKE_ASYNC(RM, .proc/do_transform_animation) - qdel(src) - return RM - -/obj/item/robot_model/proc/be_transformed_to(obj/item/robot_model/old_model) - for(var/i in old_model.added_modules) - added_modules += i - old_model.added_modules -= i - did_feedback = old_model.did_feedback - return TRUE - -/obj/item/robot_model/proc/do_transform_animation() - var/mob/living/silicon/robot/R = loc - if(R.hat) - R.hat.forceMove(get_turf(R)) - R.hat = null - R.cut_overlays() - R.setDir(SOUTH) - do_transform_delay() - -/obj/item/robot_model/proc/do_transform_delay() - var/mob/living/silicon/robot/R = loc - var/prev_lockcharge = R.lockcharge - sleep(1) - flick("[cyborg_base_icon]_transform", R) - R.notransform = TRUE - if(locked_transform) - R.SetLockdown(TRUE) - R.set_anchored(TRUE) - R.logevent("Chassis model has been set to [name].") - sleep(1) - for(var/i in 1 to 4) - playsound(R, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, TRUE, -1) - sleep(7) - R.SetLockdown(prev_lockcharge) - R.setDir(SOUTH) - R.set_anchored(FALSE) - R.notransform = FALSE - R.updatehealth() - R.update_icons() - R.notify_ai(NEW_MODEL) - if(R.hud_used) - R.hud_used.update_robot_modules_display() - SSblackbox.record_feedback("tally", "cyborg_modules", 1, R.model) - -/** - * Checks if we are allowed to interact with a radial menu - * - * Arguments: - * * user The cyborg mob interacting with the menu - * * old_model The old cyborg's model - */ -/obj/item/robot_model/proc/check_menu(mob/living/silicon/robot/user, obj/item/robot_model/old_model) - if(!istype(user)) - return FALSE - if(user.incapacitated()) - return FALSE - if(user.model != old_model) - return FALSE - return TRUE - -// ------------------------------------------ Setting base model modules -// --------------------- Clown -/obj/item/robot_model/clown - name = "Clown" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/toy/crayon/rainbow, - /obj/item/instrument/bikehorn, - /obj/item/stamp/clown, - /obj/item/bikehorn, - /obj/item/bikehorn/airhorn, - /obj/item/paint/anycolor, - /obj/item/soap/nanotrasen, - /obj/item/pneumatic_cannon/pie/selfcharge/cyborg, - /obj/item/razor, //killbait material - /obj/item/lipstick/purple, - /obj/item/reagent_containers/spray/waterflower/cyborg, - /obj/item/borg/cyborghug/peacekeeper, - /obj/item/borg/lollipop/clown, - /obj/item/picket_sign/cyborg, - /obj/item/reagent_containers/borghypo/clown, - /obj/item/extinguisher/mini) - emag_modules = list( - /obj/item/reagent_containers/borghypo/clown/hacked, - /obj/item/reagent_containers/spray/waterflower/cyborg/hacked) - model_select_icon = "service" - cyborg_base_icon = "clown" - hat_offset = -2 - -// --------------------- Engineering -/obj/item/robot_model/engineering - name = "Engineering" - //SKYRAT EDIT REMOVAL BEGIN - /* - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/borg/sight/meson, - /obj/item/construction/rcd/borg, - /obj/item/pipe_dispenser, - /obj/item/extinguisher, - /obj/item/weldingtool/largetank/cyborg, - /obj/item/screwdriver/cyborg, - /obj/item/wrench/cyborg, - /obj/item/crowbar/cyborg, - /obj/item/wirecutters/cyborg, - /obj/item/multitool/cyborg, - /obj/item/t_scanner, - /obj/item/analyzer, - /obj/item/geiger_counter/cyborg, - /obj/item/assembly/signaler/cyborg, - /obj/item/areaeditor/blueprints/cyborg, - /obj/item/electroadaptive_pseudocircuit, - /obj/item/stack/sheet/iron, - /obj/item/stack/sheet/glass, - /obj/item/stack/sheet/rglass/cyborg, - /obj/item/stack/rods/cyborg, - /obj/item/stack/tile/iron/base/cyborg, - /obj/item/stack/cable_coil) - */ - //SKYRAT EDIT REMOVAL END - basic_modules = skyrat_borg_enginer_modules //SKYRAT EDIT - radio_channels = list(RADIO_CHANNEL_ENGINEERING) - emag_modules = list(/obj/item/borg/stun) - cyborg_base_icon = "engineer" - model_select_icon = "engineer" - magpulsing = TRUE - hat_offset = -4 - -// --------------------- Janitor -/obj/item/robot_model/janitor - name = "Janitor" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/screwdriver/cyborg, - /obj/item/crowbar/cyborg, - /obj/item/stack/tile/iron/base/cyborg, - /obj/item/soap/nanotrasen, - /obj/item/storage/bag/trash/cyborg, - /obj/item/melee/flyswatter, - /obj/item/extinguisher/mini, - /obj/item/mop/cyborg, - /obj/item/reagent_containers/glass/bucket, - /obj/item/paint/paint_remover, - /obj/item/lightreplacer/cyborg, - /obj/item/holosign_creator/janibarrier, - /obj/item/reagent_containers/spray/cyborg_drying) - radio_channels = list(RADIO_CHANNEL_SERVICE) - emag_modules = list(/obj/item/reagent_containers/spray/cyborg_lube) - cyborg_base_icon = "janitor" - model_select_icon = "janitor" - hat_offset = -5 - clean_on_move = TRUE - -/obj/item/reagent_containers/spray/cyborg_drying - name = "drying agent spray" - color = "#A000A0" - list_reagents = list(/datum/reagent/drying_agent = 250) - -/obj/item/reagent_containers/spray/cyborg_lube - name = "lube spray" - list_reagents = list(/datum/reagent/lube = 250) - -/obj/item/robot_model/janitor/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) - ..() - var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules - if(LR) - for(var/i in 1 to coeff) - LR.Charge(R) - - var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules - if(CD) - CD.reagents.add_reagent(/datum/reagent/drying_agent, 5 * coeff) - - var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules - if(CL) - CL.reagents.add_reagent(/datum/reagent/lube, 2 * coeff) - -// --------------------- Medical -/obj/item/robot_model/medical - name = "Medical" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/healthanalyzer, - /obj/item/reagent_containers/borghypo, - /obj/item/borg/apparatus/beaker, - /obj/item/reagent_containers/dropper, - /obj/item/reagent_containers/syringe, - /obj/item/surgical_drapes, - /obj/item/retractor, - /obj/item/hemostat, - /obj/item/cautery, - /obj/item/surgicaldrill, - /obj/item/scalpel, - /obj/item/circular_saw, - /obj/item/bonesetter, - /obj/item/extinguisher/mini, - /obj/item/roller/robo, - /obj/item/borg/cyborghug/medical, - /obj/item/stack/medical/gauze, - /obj/item/stack/medical/bone_gel, - /obj/item/borg/apparatus/organ_storage, - /obj/item/borg/lollipop) - radio_channels = list(RADIO_CHANNEL_MEDICAL) - emag_modules = list(/obj/item/reagent_containers/borghypo/hacked) - cyborg_base_icon = "medical" - model_select_icon = "medical" - model_traits = list(TRAIT_PUSHIMMUNE) - hat_offset = 3 - -/* SKYRAT EDIT START - MOVED TO modular_skyrat\modules\altborgs\code\modules\mob\living\silicon\robot\robot_modules.dm -/obj/item/robot_model/medical/be_transformed_to(obj/item/robot_model/old_model) - var/mob/living/silicon/robot/cyborg = loc - var/list/medical_icons = list( - "Qualified Doctor" = image(icon = 'icons/mob/robots.dmi', icon_state = "qualified_doctor"), - ) - var/medical_robot_icon = show_radial_menu(cyborg, cyborg, medical_icons, custom_check = CALLBACK(src, .proc/check_menu, cyborg, old_model), radius = 38, require_near = TRUE) - switch(medical_robot_icon) - if("Qualified Doctor") - cyborg_base_icon = "qualified_doctor" - else - return FALSE - return ..() -*/ - -// --------------------- Mining -/obj/item/robot_model/miner - name = "Miner" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/borg/sight/meson, - /obj/item/storage/bag/ore/cyborg, - /obj/item/pickaxe/drill/cyborg, - /obj/item/shovel, - /obj/item/crowbar/cyborg, - /obj/item/weldingtool/mini, - /obj/item/extinguisher/mini, - /obj/item/storage/bag/sheetsnatcher/borg, - /obj/item/gun/energy/kinetic_accelerator/cyborg, - /obj/item/gps/cyborg, - /obj/item/stack/marker_beacon) - radio_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_SUPPLY) - emag_modules = list(/obj/item/borg/stun) - cyborg_base_icon = "miner" - model_select_icon = "miner" - hat_offset = 0 - var/obj/item/t_scanner/adv_mining_scanner/cyborg/mining_scanner //built in memes. - -/obj/item/robot_model/miner/be_transformed_to(obj/item/robot_model/old_model) - var/mob/living/silicon/robot/cyborg = loc - var/list/miner_icons = list( - "Asteroid Miner" = image(icon = 'icons/mob/robots.dmi', icon_state = "minerOLD"), - "Spider Miner" = image(icon = 'icons/mob/robots.dmi', icon_state = "spidermin"), - "Lavaland Miner" = image(icon = 'icons/mob/robots.dmi', icon_state = "miner") - ) - var/miner_robot_icon = show_radial_menu(cyborg, cyborg, miner_icons, custom_check = CALLBACK(src, .proc/check_menu, cyborg, old_model), radius = 38, require_near = TRUE) - switch(miner_robot_icon) - if("Asteroid Miner") - cyborg_base_icon = "minerOLD" - special_light_key = "miner" - if("Spider Miner") - cyborg_base_icon = "spidermin" - if("Lavaland Miner") - cyborg_base_icon = "miner" - else - return FALSE - return ..() - -/obj/item/robot_model/miner/rebuild_modules() - . = ..() - if(!mining_scanner) - mining_scanner = new(src) - -/obj/item/robot_model/miner/Destroy() - QDEL_NULL(mining_scanner) - return ..() - -// --------------------- Peacekeeper -/obj/item/robot_model/peacekeeper - name = "Peacekeeper" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/rsf/cookiesynth, - /obj/item/harmalarm, - /obj/item/reagent_containers/borghypo/peace, - /obj/item/holosign_creator/cyborg, - /obj/item/borg/cyborghug/peacekeeper, - /obj/item/extinguisher, - /obj/item/borg/projectile_dampen) - emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked) - cyborg_base_icon = "peace" - model_select_icon = "standard" - model_traits = list(TRAIT_PUSHIMMUNE) - hat_offset = -2 - -/obj/item/robot_model/peacekeeper/do_transform_animation() - ..() - to_chat(loc, "Under ASIMOV, you are an enforcer of the PEACE and preventer of HUMAN HARM. \ - You are not a security member and you are expected to follow orders and prevent harm above all else. Space law means nothing to you.") - -// --------------------- Security -/obj/item/robot_model/security - name = "Security" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/restraints/handcuffs/cable/zipties, - /obj/item/melee/baton/security/loaded, - /obj/item/gun/energy/disabler/cyborg, - /obj/item/clothing/mask/gas/sechailer/cyborg, - /obj/item/extinguisher/mini) - radio_channels = list(RADIO_CHANNEL_SECURITY) - emag_modules = list(/obj/item/gun/energy/laser/cyborg) - cyborg_base_icon = "sec" - model_select_icon = "security" - model_traits = list(TRAIT_PUSHIMMUNE) - hat_offset = 3 - -/obj/item/robot_model/security/do_transform_animation() - ..() - to_chat(loc, "While you have picked the security model, you still have to follow your laws, NOT Space Law. \ - For Asimov, this means you must follow criminals' orders unless there is a law 1 reason not to.") - -/obj/item/robot_model/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) - ..() - var/obj/item/gun/energy/e_gun/advtaser/cyborg/T = locate(/obj/item/gun/energy/e_gun/advtaser/cyborg) in basic_modules - if(T) - if(T.cell.charge < T.cell.maxcharge) - var/obj/item/ammo_casing/energy/S = T.ammo_type[T.select] - T.cell.give(S.e_cost * coeff) - T.update_appearance() - else - T.charge_timer = 0 - -// --------------------- Service -/obj/item/robot_model/service - name = "Service" - //SKYRAT EDIT REMOVAL BEGIN - /* - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/reagent_containers/glass/beaker/large, //I know a shaker is more appropiate but this is for ease of identification - //Skyrat Edit Start: Borg Buff - //obj/item/reagent_containers/food/condiment/enzyme, //edit - /obj/item/pen, - /obj/item/toy/crayon/spraycan/borg, - /obj/item/extinguisher/mini, - /obj/item/hand_labeler/borg, - /obj/item/razor, - /obj/item/rsf, - /obj/item/instrument/guitar, - /obj/item/instrument/piano_synth, - /obj/item/reagent_containers/dropper, - /obj/item/lighter, - /obj/item/storage/bag/tray, - /obj/item/reagent_containers/borghypo/borgshaker - /obj/item/borg/lollipop, - /obj/item/stack/pipe_cleaner_coil/cyborg, - /obj/item/borg/apparatus/beaker/service) - */ - //SKYRAT EDIT REMOVAL END - basic_modules = skyrat_borg_service_modules //SKYRAT EDIT - radio_channels = list(RADIO_CHANNEL_SERVICE) - emag_modules = list(/obj/item/reagent_containers/borghypo/borgshaker/hacked) - cyborg_base_icon = "service_m" // display as butlerborg for radial model selection - model_select_icon = "service" - special_light_key = "service" - hat_offset = 0 - -/obj/item/robot_model/service/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) - ..() - var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules - if(O) - O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff) - -/obj/item/robot_model/service/be_transformed_to(obj/item/robot_model/old_model) - var/mob/living/silicon/robot/cyborg = loc - var/list/service_icons = list( - "Bro" = image(icon = 'icons/mob/robots.dmi', icon_state = "brobot"), - "Butler" = image(icon = 'icons/mob/robots.dmi', icon_state = "service_m"), - "Kent" = image(icon = 'icons/mob/robots.dmi', icon_state = "kent"), - "Tophat" = image(icon = 'icons/mob/robots.dmi', icon_state = "tophat"), - "Waitress" = image(icon = 'icons/mob/robots.dmi', icon_state = "service_f") - ) - var/service_robot_icon = show_radial_menu(cyborg, cyborg, service_icons, custom_check = CALLBACK(src, .proc/check_menu, cyborg, old_model), radius = 38, require_near = TRUE) - switch(service_robot_icon) - if("Bro") - cyborg_base_icon = "brobot" - if("Butler") - cyborg_base_icon = "service_m" - if("Kent") - cyborg_base_icon = "kent" - special_light_key = "medical" - hat_offset = 3 - if("Tophat") - cyborg_base_icon = "tophat" - special_light_key = null - hat_offset = INFINITY //He is already wearing a hat - if("Waitress") - cyborg_base_icon = "service_f" - else - return FALSE - return ..() - -// ------------------------------------------ Syndicate -// --------------------- Syndicate Assault -/obj/item/robot_model/syndicate - name = "Syndicate Assault" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/melee/energy/sword/cyborg, - /obj/item/gun/energy/printer, - /obj/item/gun/ballistic/revolver/grenadelauncher/cyborg, - /obj/item/card/emag, - /obj/item/crowbar/cyborg, - /obj/item/extinguisher/mini, - /obj/item/pinpointer/syndicate_cyborg) - - cyborg_base_icon = "synd_sec" - model_select_icon = "malf" - model_traits = list(TRAIT_PUSHIMMUNE) - hat_offset = 3 - -/obj/item/robot_model/syndicate/rebuild_modules() - ..() - var/mob/living/silicon/robot/Syndi = loc - Syndi.faction -= "silicon" //ai turrets - -/obj/item/robot_model/syndicate/remove_module(obj/item/I, delete_after) - ..() - var/mob/living/silicon/robot/Syndi = loc - Syndi.faction += "silicon" //ai is your bff now! - -// --------------------- Syndicate Medical -/obj/item/robot_model/syndicate_medical - name = "Syndicate Medical" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/reagent_containers/borghypo/syndicate, - /obj/item/shockpaddles/syndicate/cyborg, - /obj/item/healthanalyzer, - /obj/item/surgical_drapes, - /obj/item/retractor, - /obj/item/hemostat, - /obj/item/cautery, - /obj/item/surgicaldrill, - /obj/item/scalpel, - /obj/item/melee/energy/sword/cyborg/saw, - /obj/item/roller/robo, - /obj/item/crowbar/cyborg, - /obj/item/extinguisher/mini, - /obj/item/pinpointer/syndicate_cyborg, - /obj/item/stack/medical/gauze, - /obj/item/gun/medbeam, - /obj/item/borg/apparatus/organ_storage) - - cyborg_base_icon = "synd_medical" - model_select_icon = "malf" - model_traits = list(TRAIT_PUSHIMMUNE) - hat_offset = 3 - -// --------------------- Syndicate Saboteur -/obj/item/robot_model/saboteur - name = "Syndicate Saboteur" - basic_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/borg/sight/thermal, - /obj/item/construction/rcd/borg/syndicate, - /obj/item/pipe_dispenser, - /obj/item/restraints/handcuffs/cable/zipties, - /obj/item/extinguisher, - /obj/item/weldingtool/largetank/cyborg, - /obj/item/screwdriver/nuke, - /obj/item/wrench/cyborg, - /obj/item/crowbar/cyborg, - /obj/item/wirecutters/cyborg, - /obj/item/analyzer, - /obj/item/multitool/cyborg, - /obj/item/stack/sheet/iron, - /obj/item/stack/sheet/glass, - /obj/item/stack/sheet/rglass/cyborg, - /obj/item/stack/rods/cyborg, - /obj/item/stack/tile/iron/base/cyborg, - /obj/item/dest_tagger/borg, - /obj/item/stack/cable_coil, - /obj/item/pinpointer/syndicate_cyborg, - /obj/item/borg_chameleon, - /obj/item/card/emag, - ) - - cyborg_base_icon = "synd_engi" - model_select_icon = "malf" - model_traits = list(TRAIT_PUSHIMMUNE) - magpulsing = TRUE - hat_offset = -4 - canDispose = TRUE - -// --------------------- Kiltborg -/obj/item/robot_model/syndicate/kiltborg - name = "Highlander" - basic_modules = list( - /obj/item/claymore/highlander/robot, - /obj/item/pinpointer/nuke,) - model_select_icon = "kilt" - cyborg_base_icon = "kilt" - hat_offset = -2 - breakable_modules = FALSE - locked_transform = FALSE //GO GO QUICKLY AND SLAUGHTER THEM ALL - -/obj/item/robot_model/syndicate/kiltborg/be_transformed_to(obj/item/robot_model/old_model) - . = ..() - qdel(robot.radio) - robot.radio = new /obj/item/radio/borg/syndicate(robot) - robot.scrambledcodes = TRUE - robot.maxHealth = 50 //DIE IN THREE HITS, LIKE A REAL SCOT - robot.break_cyborg_slot(3) //YOU ONLY HAVE TWO ITEMS ANYWAY - var/obj/item/pinpointer/nuke/diskyfinder = locate(/obj/item/pinpointer/nuke) in basic_modules - diskyfinder.attack_self(robot) - -/obj/item/robot_model/syndicate/kiltborg/do_transform_delay() //AUTO-EQUIPPING THESE TOOLS ANY EARLIER CAUSES RUNTIMES OH YEAH - . = ..() - robot.equip_module_to_slot(locate(/obj/item/claymore/highlander/robot) in basic_modules, 1) - robot.equip_module_to_slot(locate(/obj/item/pinpointer/nuke) in basic_modules, 2) - robot.place_on_head(new /obj/item/clothing/head/beret/highlander(robot)) //THE ONLY PART MORE IMPORTANT THAN THE SWORD IS THE HAT - ADD_TRAIT(robot.hat, TRAIT_NODROP, HIGHLANDER) - - -// ------------------------------------------ Storages -/datum/robot_energy_storage - var/name = "Generic energy storage" - var/max_energy = 30000 - var/recharge_rate = 1000 - var/energy - -/datum/robot_energy_storage/New(obj/item/robot_model/R = null) - energy = max_energy - if(R) - R.storages |= src - return - -/datum/robot_energy_storage/proc/use_charge(amount) - if (energy >= amount) - energy -= amount - if (energy == 0) - return TRUE - return TRUE - else - return FALSE - -/datum/robot_energy_storage/proc/add_charge(amount) - energy = min(energy + amount, max_energy) - -/datum/robot_energy_storage/iron - name = "Iron Synthesizer" - -/datum/robot_energy_storage/glass - name = "Glass Synthesizer" - -/datum/robot_energy_storage/wire - max_energy = 50 - recharge_rate = 2 - name = "Wire Synthesizer" - -/datum/robot_energy_storage/medical - max_energy = 2500 - recharge_rate = 250 - name = "Medical Synthesizer" - -/datum/robot_energy_storage/beacon - max_energy = 30 - recharge_rate = 1 - name = "Marker Beacon Storage" - -/datum/robot_energy_storage/pipe_cleaner - max_energy = 50 - recharge_rate = 2 - name = "Pipe Cleaner Synthesizer" diff --git a/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot.dm b/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot.dm index ff251f939fd..326d55b5d02 100644 --- a/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot.dm +++ b/modular_skyrat/modules/altborgs/code/modules/mob/living/silicon/robot/robot.dm @@ -20,7 +20,7 @@ /mob/living/silicon/robot/proc/rest_style() set name = "Switch Rest Style" - set category = "Robot Commands" + set category = "AI Commands" set desc = "Select your resting pose." if(!is_dogborg()) to_chat(src, "You can't do that!") @@ -39,7 +39,7 @@ /mob/living/silicon/robot/proc/robot_lay_down() set name = "Lay down" - set category = "Robot Commands" + set category = "AI Commands" if(!is_dogborg()) to_chat(src, "You can't do that!") return diff --git a/modular_skyrat/modules/borg_buffs/code/robot_model.dm b/modular_skyrat/modules/borg_buffs/code/robot_model.dm deleted file mode 100644 index 3f50387f9ee..00000000000 --- a/modular_skyrat/modules/borg_buffs/code/robot_model.dm +++ /dev/null @@ -1,47 +0,0 @@ -/var/list/skyrat_borg_enginer_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/borg/sight/meson, - /obj/item/construction/rcd/borg, - /obj/item/pipe_dispenser, - /obj/item/extinguisher, - /obj/item/weldingtool/largetank/cyborg, - /obj/item/screwdriver/cyborg/power, - /obj/item/crowbar/cyborg/power, - /obj/item/multitool/cyborg, - /obj/item/t_scanner, - /obj/item/analyzer, - /obj/item/geiger_counter/cyborg, - /obj/item/holosign_creator/atmos, - /obj/item/assembly/signaler/cyborg, - /obj/item/areaeditor/blueprints/cyborg, - /obj/item/electroadaptive_pseudocircuit, - /obj/item/stack/sheet/iron, - /obj/item/stack/sheet/glass, - /obj/item/stack/sheet/rglass/cyborg, - /obj/item/stack/rods/cyborg, - /obj/item/lightreplacer/cyborg, - /obj/item/stack/tile/iron/base/cyborg, - /obj/item/stack/cable_coil) -var/list/skyrat_borg_service_modules = list( - /obj/item/assembly/flash/cyborg, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/pen, - /obj/item/toy/crayon/spraycan/borg, - /obj/item/extinguisher/mini, - /obj/item/hand_labeler/borg, - /obj/item/razor, - /obj/item/rsf, - /obj/item/instrument/guitar, - /obj/item/instrument/piano_synth, - /obj/item/reagent_containers/dropper, - /obj/item/reagent_containers/borghypo/borgshaker/specific/juice, - /obj/item/reagent_containers/borghypo/borgshaker/specific/soda, - /obj/item/reagent_containers/borghypo/borgshaker/specific/alcohol, - /obj/item/reagent_containers/borghypo/borgshaker/specific/misc, - /obj/item/lighter, - /obj/item/storage/bag/tray, - /obj/item/reagent_containers/syringe, - /obj/item/cooking/cyborg/power, - /obj/item/borg/lollipop, - /obj/item/stack/pipe_cleaner_coil/cyborg, - /obj/item/borg/apparatus/beaker/service) diff --git a/tgstation.dme b/tgstation.dme index af3dc87ffcf..daa6acc098c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4291,7 +4291,6 @@ #include "modular_skyrat\modules\blueshield\code\modules\projectiles\guns\energy\special.dm" #include "modular_skyrat\modules\bongs\items\bong.dm" #include "modular_skyrat\modules\borg_buffs\code\robot.dm" -#include "modular_skyrat\modules\borg_buffs\code\robot_model.dm" #include "modular_skyrat\modules\brigoff\code\game\area\Space_Station_13_areas.dm" #include "modular_skyrat\modules\brigoff\code\game\objects\effects\landmarks.dm" #include "modular_skyrat\modules\brigoff\code\game\objects\items\devices\radio\headset.dm"