diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm
index a2b4a432067..ecc6301334a 100644
--- a/_maps/map_files/Birdshot/birdshot.dmm
+++ b/_maps/map_files/Birdshot/birdshot.dmm
@@ -55547,10 +55547,6 @@
/obj/effect/mapping_helpers/airlock/access/all/command/captain,
/turf/open/floor/plating,
/area/station/maintenance/hallway/abandoned_command)
-"tyv" = (
-/obj/machinery/lapvend,
-/turf/open/floor/iron/white,
-/area/station/hallway/primary/starboard)
"tyx" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -111811,7 +111807,7 @@ rVX
stP
wbu
tbD
-tyv
+ygu
xdc
ugC
xSZ
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index ecc76d9ec38..7a48d2b1cb7 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -2533,7 +2533,6 @@
/turf/open/space,
/area/space/nearstation)
"aFs" = (
-/obj/machinery/lapvend,
/obj/effect/turf_decal/trimline/blue/filled/warning{
dir = 4
},
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index 45fea9b4bcb..976be0016d3 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -75421,7 +75421,6 @@
/turf/open/floor/plating,
/area/station/ai_monitored/turret_protected/aisat_interior)
"xlf" = (
-/obj/machinery/lapvend,
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 8
},
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 11cd505784b..039edcaf5f6 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -2419,7 +2419,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable,
-/obj/machinery/destructive_scanner,
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 1
},
@@ -6973,10 +6972,10 @@
c_tag = "Science Lobby";
network = list("ss13","rd")
},
-/obj/machinery/vending/modularpc,
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 1
},
+/obj/machinery/destructive_scanner,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"cAG" = (
@@ -56553,11 +56552,11 @@
/turf/open/floor/iron/white,
/area/station/medical/chemistry)
"ulX" = (
-/obj/machinery/lapvend,
/obj/structure/cable,
/obj/effect/turf_decal/tile/purple/half/contrasted{
dir = 1
},
+/obj/machinery/vending/modularpc,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"umS" = (
diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm
index 999cfc770cf..fd28020a1c7 100644
--- a/_maps/map_files/NorthStar/north_star.dmm
+++ b/_maps/map_files/NorthStar/north_star.dmm
@@ -4160,7 +4160,6 @@
/turf/open/floor/catwalk_floor,
/area/station/maintenance/floor3/port/aft)
"bcm" = (
-/obj/machinery/lapvend,
/obj/machinery/camera/autoname/directional/west,
/turf/open/floor/iron/dark/side{
dir = 8
@@ -47394,7 +47393,6 @@
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/hop)
"msf" = (
-/obj/machinery/lapvend,
/obj/machinery/light/directional/north,
/obj/effect/turf_decal/trimline/purple/filled/corner{
dir = 1
diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm
index 6696791501b..f8a008a44a4 100644
--- a/_maps/map_files/tramstation/tramstation.dmm
+++ b/_maps/map_files/tramstation/tramstation.dmm
@@ -55508,7 +55508,7 @@
/obj/effect/turf_decal/trimline/purple/filled/line{
dir = 1
},
-/obj/machinery/lapvend,
+/obj/machinery/vending/robotics,
/turf/open/floor/iron/white,
/area/station/science/lobby)
"sSH" = (
diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm
deleted file mode 100644
index 28a6e12843f..00000000000
--- a/code/modules/modular_computers/laptop_vendor.dm
+++ /dev/null
@@ -1,152 +0,0 @@
-// A vendor machine for modular computer portable devices - Laptops and Tablets
-
-/obj/machinery/lapvend
- name = "computer vendor"
- desc = "A vending machine with microfabricator capable of dispensing various NT-branded computers."
- icon = 'icons/obj/machines/vending.dmi'
- icon_state = "robotics"
- layer = 2.9
- density = TRUE
-
- // The actual laptop/tablet
- var/obj/item/modular_computer/laptop/fabricated_laptop
- var/obj/item/modular_computer/pda/fabricated_tablet
-
- // Utility vars
- var/state = 0 // 0: Select device type, 1: Select loadout, 2: Payment, 3: Thankyou screen
- var/devtype = 0 // 0: None(unselected), 1: Laptop, 2: Tablet
- var/total_price = 0 // Price of currently vended device.
- var/credits = 0
-
-// Removes all traces of old order and allows you to begin configuration from scratch.
-/obj/machinery/lapvend/proc/reset_order()
- state = 0
- devtype = 0
- if(fabricated_laptop)
- qdel(fabricated_laptop)
- fabricated_laptop = null
- if(fabricated_tablet)
- qdel(fabricated_tablet)
- fabricated_tablet = null
-
-// Recalculates the price and optionally even fabricates the device.
-/obj/machinery/lapvend/proc/fabricate_and_recalc_price(fabricate = FALSE)
- total_price = 0
- if(devtype == 1) // Laptop, generally cheaper to make it accessible for most station roles
- if(fabricate)
- fabricated_laptop = new /obj/item/modular_computer/laptop/buildable(src)
- total_price = 99
-
- return total_price
- else if(devtype == 2) // Tablet, more expensive, not everyone could probably afford this.
- if(fabricate)
- fabricated_tablet = new(src)
- total_price = 199
- return FALSE
-
-/obj/machinery/lapvend/ui_act(action, params)
- . = ..()
- if(.)
- return
-
- switch(action)
- if("pick_device")
- if(state) // We've already picked a device type
- return FALSE
- devtype = text2num(params["pick"])
- state = 1
- fabricate_and_recalc_price(FALSE)
- return TRUE
- if("clean_order")
- reset_order()
- return TRUE
- if("purchase")
- try_purchase()
- return TRUE
- if((state != 1) && devtype) // Following IFs should only be usable when in the Select Loadout mode
- return FALSE
- switch(action)
- if("confirm_order")
- state = 2 // Wait for ID swipe for payment processing
- fabricate_and_recalc_price(FALSE)
- return TRUE
- return FALSE
-
-/obj/machinery/lapvend/ui_interact(mob/user, datum/tgui/ui)
- if(machine_stat & (BROKEN | NOPOWER | MAINT))
- if(ui)
- ui.close()
- return FALSE
-
- ui = SStgui.try_update_ui(user, src, ui)
- if (!ui)
- ui = new(user, src, "ComputerFabricator")
- ui.open()
-
-/obj/machinery/lapvend/attackby(obj/item/I, mob/user)
- if(istype(I, /obj/item/stack/spacecash))
- var/obj/item/stack/spacecash/c = I
- if(!user.temporarilyRemoveItemFromInventory(c))
- return
- credits += c.value
- visible_message(span_info("[span_name("[user]")] inserts [c.value] cr into [src]."))
- qdel(c)
- return
- else if(istype(I, /obj/item/holochip))
- var/obj/item/holochip/HC = I
- credits += HC.credits
- visible_message(span_info("[user] inserts a [HC.credits] cr holocredit chip into [src]."))
- qdel(HC)
- return
- else if(isidcard(I))
- if(state != 2)
- return
- var/obj/item/card/id/ID = I
- var/datum/bank_account/account = ID.registered_account
- var/target_credits = total_price - credits
- if(!account.adjust_money(-target_credits, "Vending: Laptop Vendor"))
- say("Insufficient credits on card to purchase!")
- return
- credits += target_credits
- say("[target_credits] cr have been withdrawn from your account.")
- return
- return ..()
-
-// Simplified payment processing, returns 1 on success.
-/obj/machinery/lapvend/proc/process_payment()
- if(total_price > credits)
- say("Insufficient credits.")
- return FALSE
- else
- return TRUE
-
-/obj/machinery/lapvend/ui_data(mob/user)
-
- var/list/data = list()
- data["state"] = state
- if(state == 1)
- data["devtype"] = devtype
- if(state == 1 || state == 2)
- data["totalprice"] = total_price
- data["credits"] = credits
-
- return data
-
-
-/obj/machinery/lapvend/proc/try_purchase()
- // Awaiting payment state
- if(state == 2)
- if(process_payment())
- fabricate_and_recalc_price(1)
- if((devtype == 1) && fabricated_laptop)
- fabricated_laptop.forceMove(src.loc)
- fabricated_laptop = null
- else if((devtype == 2) && fabricated_tablet)
- fabricated_tablet.forceMove(src.loc)
- fabricated_tablet = null
- credits -= total_price
- say("Enjoy your new product!")
- state = 3
- addtimer(CALLBACK(src, PROC_REF(reset_order)), 100)
- return TRUE
- return FALSE
diff --git a/tgstation.dme b/tgstation.dme
index 870b0a6c6fe..6068c4d2138 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4601,7 +4601,6 @@
#include "code\modules\mod\modules\modules_supply.dm"
#include "code\modules\mod\modules\modules_timeline.dm"
#include "code\modules\mod\modules\modules_visor.dm"
-#include "code\modules\modular_computers\laptop_vendor.dm"
#include "code\modules\modular_computers\computers\item\computer.dm"
#include "code\modules\modular_computers\computers\item\computer_files.dm"
#include "code\modules\modular_computers\computers\item\computer_power.dm"
diff --git a/tgui/packages/tgui/interfaces/ComputerFabricator.js b/tgui/packages/tgui/interfaces/ComputerFabricator.js
deleted file mode 100644
index 8f27f59a984..00000000000
--- a/tgui/packages/tgui/interfaces/ComputerFabricator.js
+++ /dev/null
@@ -1,202 +0,0 @@
-import { multiline } from 'common/string';
-import { useBackend } from '../backend';
-import { Box, Button, Grid, Section, Table, Tooltip } from '../components';
-import { Window } from '../layouts';
-
-export const ComputerFabricator = (props, context) => {
- const { act, data } = useBackend(context);
- return (
-
-
-
- Your perfect device, only three steps away...
-
- {data.state !== 0 && (
-
-
- );
-};
-
-// This had a pretty gross backend so this was unfortunately one of the
-// best ways of doing it.
-const CfStep1 = (props, context) => {
- const { act, data } = useBackend(context);
- return (
-
-
- Choose your Device
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-const CfStep2 = (props, context) => {
- const { act, data } = useBackend(context);
- return (
-
- {data.totalprice} cr
-
- }>
-
-
-
-
- Hard Drive:
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-const CfStep3 = (props, context) => {
- const { act, data } = useBackend(context);
- return (
-
-
- Your device is ready for fabrication...
-
-
- Please insert the required{' '}
-
- {data.totalprice} cr
-
-
-
- Current:
-
- = data.totalprice ? 'good' : 'bad'}>
- {data.credits} cr
-
-
- );
-};
-
-const CfStep4 = (props, context) => {
- return (
-
-
- Thank you for your purchase!
-
-
- If you experience any difficulties with your new device, please contact
- your local network administrator.
-
-
- );
-};
diff --git a/tools/UpdatePaths/Scripts/78382_remove_lapvend.txt b/tools/UpdatePaths/Scripts/78382_remove_lapvend.txt
new file mode 100644
index 00000000000..63ba4e3c5c5
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/78382_remove_lapvend.txt
@@ -0,0 +1 @@
+/obj/machinery/lapvend : @DELETE