mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
Laptop vendor, access tweaks and computer recipes.
This commit is contained in:
@@ -245,7 +245,7 @@ var/const/access_trade_sol = 160
|
||||
access_pilot, access_ntrep, access_magistrate, access_mineral_storeroom, access_minisat, access_network)
|
||||
|
||||
/proc/get_all_centcom_access()
|
||||
return list(access_cent_general, access_cent_living, access_cent_medical, access_cent_security, access_cent_storage, access_cent_shuttles, access_cent_telecomms, access_cent_teleporter, access_cent_specops, access_cent_specops_commander, access_cent_blackops, access_cent_thunder, access_cent_bridge, access_cent_commander, access_network)
|
||||
return list(access_cent_general, access_cent_living, access_cent_medical, access_cent_security, access_cent_storage, access_cent_shuttles, access_cent_telecomms, access_cent_teleporter, access_cent_specops, access_cent_specops_commander, access_cent_blackops, access_cent_thunder, access_cent_bridge, access_cent_commander)
|
||||
|
||||
/proc/get_all_syndicate_access()
|
||||
return list(access_syndicate, access_syndicate_leader, access_vox)
|
||||
@@ -267,13 +267,13 @@ var/const/access_trade_sol = 160
|
||||
if(REGION_MEDBAY) //medbay
|
||||
return list(access_medical, access_genetics, access_morgue, access_chemistry, access_psychiatrist, access_virology, access_surgery, access_cmo, access_paramedic)
|
||||
if(REGION_RESEARCH) //research
|
||||
return list(access_research, access_tox, access_tox_storage, access_genetics, access_robotics, access_xenobiology, access_xenoarch, access_minisat, access_rd)
|
||||
return list(access_research, access_tox, access_tox_storage, access_genetics, access_robotics, access_xenobiology, access_xenoarch, access_minisat, access_rd, access_network)
|
||||
if(REGION_ENGINEERING) //engineering and maintenance
|
||||
return list(access_construction, access_maint_tunnels, access_engine, access_engine_equip, access_external_airlocks, access_tech_storage, access_atmospherics, access_minisat, access_ce, access_mechanic)
|
||||
if(REGION_SUPPLY) //supply
|
||||
return list(access_mailsorting, access_mining, access_mining_station, access_mineral_storeroom, access_cargo, access_qm)
|
||||
if(REGION_COMMAND) //command
|
||||
return list(access_heads, access_RC_announce, access_keycard_auth, access_change_ids, access_ai_upload, access_teleporter, access_eva, access_tcomsat, access_network, access_gateway, access_all_personal_lockers, access_heads_vault, access_blueshield, access_ntrep, access_hop, access_captain)
|
||||
return list(access_heads, access_RC_announce, access_keycard_auth, access_change_ids, access_ai_upload, access_teleporter, access_eva, access_tcomsat, access_gateway, access_all_personal_lockers, access_heads_vault, access_blueshield, access_ntrep, access_hop, access_captain)
|
||||
if(REGION_CENTCOMM) //because why the heck not
|
||||
return get_all_centcom_access() + get_all_accesses()
|
||||
|
||||
@@ -428,7 +428,7 @@ var/const/access_trade_sol = 160
|
||||
if(access_tcomsat)
|
||||
return "Telecommunications"
|
||||
if(access_network)
|
||||
return "Network"
|
||||
return "Network Access"
|
||||
if(access_gateway)
|
||||
return "Gateway"
|
||||
if(access_sec_doors)
|
||||
|
||||
@@ -12,11 +12,13 @@
|
||||
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_mineral_storeroom)
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch,
|
||||
access_minisat, access_mineral_storeroom, access_network)
|
||||
minimal_access = list(access_eva, access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_maint_tunnels, access_mineral_storeroom)
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch,
|
||||
access_minisat, access_maint_tunnels, access_mineral_storeroom, access_network)
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 600
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
@@ -50,6 +50,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list(
|
||||
new /datum/stack_recipe/rods("metal rod", /obj/item/stack/rods, 1, 2, 60),
|
||||
null,
|
||||
new /datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("modular console", /obj/machinery/modular_computer/console/buildable/, 10, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
|
||||
@@ -0,0 +1,306 @@
|
||||
// A vendor machine for modular computer portable devices - Laptops and Tablets
|
||||
|
||||
/obj/machinery/lapvend
|
||||
name = "computer vendor"
|
||||
desc = "A vending machine with a built-in microfabricator, capable of dispensing various NT-branded computers."
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "robotics"
|
||||
layer = BELOW_OBJ_LAYER
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
// The actual laptop/tablet
|
||||
var/obj/item/device/modular_computer/laptop/fabricated_laptop = null
|
||||
var/obj/item/device/modular_computer/tablet/fabricated_tablet = null
|
||||
|
||||
// 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.
|
||||
|
||||
// Device loadout
|
||||
var/dev_cpu = 1 // 1: Default, 2: Upgraded
|
||||
var/dev_battery = 1 // 1: Default, 2: Upgraded, 3: Advanced
|
||||
var/dev_disk = 1 // 1: Default, 2: Upgraded, 3: Advanced
|
||||
var/dev_netcard = 0 // 0: None, 1: Basic, 2: Long-Range
|
||||
var/dev_apc_recharger = 0 // 0: None, 1: Standard (LAPTOP ONLY)
|
||||
var/dev_printer = 0 // 0: None, 1: Standard
|
||||
var/dev_card = 0 // 0: None, 1: Standard
|
||||
|
||||
// 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
|
||||
dev_cpu = 1
|
||||
dev_battery = 1
|
||||
dev_disk = 1
|
||||
dev_netcard = 0
|
||||
dev_apc_recharger = 0
|
||||
dev_printer = 0
|
||||
dev_card = 0
|
||||
|
||||
// Recalculates the price and optionally even fabricates the device.
|
||||
/obj/machinery/lapvend/proc/fabricate_and_recalc_price(fabricate = 0)
|
||||
total_price = 0
|
||||
if(devtype == 1) // Laptop, generally cheaper to make it accessible for most station roles
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = null
|
||||
if(fabricate)
|
||||
fabricated_laptop = new /obj/item/device/modular_computer/laptop/buildable(src)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/battery)
|
||||
battery_module = fabricated_laptop.all_components[MC_CELL]
|
||||
total_price = 99
|
||||
switch(dev_cpu)
|
||||
if(1)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
if(2)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/processor_unit)
|
||||
total_price += 299
|
||||
switch(dev_battery)
|
||||
if(1) // Basic(750C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer)
|
||||
if(2) // Upgraded(1100C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/advanced)
|
||||
total_price += 199
|
||||
if(3) // Advanced(1500C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/super)
|
||||
total_price += 499
|
||||
switch(dev_disk)
|
||||
if(1) // Basic(128GQ)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/hard_drive)
|
||||
if(2) // Upgraded(256GQ)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/hard_drive/advanced)
|
||||
total_price += 99
|
||||
if(3) // Advanced(512GQ)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/hard_drive/super)
|
||||
total_price += 299
|
||||
switch(dev_netcard)
|
||||
if(1) // Basic(Short-Range)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/network_card)
|
||||
total_price += 99
|
||||
if(2) // Advanced (Long Range)
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/network_card/advanced)
|
||||
total_price += 299
|
||||
if(dev_apc_recharger)
|
||||
total_price += 399
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/recharger/APC)
|
||||
if(dev_printer)
|
||||
total_price += 99
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/printer/mini)
|
||||
if(dev_card)
|
||||
total_price += 199
|
||||
if(fabricate)
|
||||
fabricated_laptop.install_component(new /obj/item/weapon/computer_hardware/card_slot)
|
||||
|
||||
return total_price
|
||||
else if(devtype == 2) // Tablet, more expensive, not everyone could probably afford this.
|
||||
var/obj/item/weapon/computer_hardware/battery/battery_module = null
|
||||
if(fabricate)
|
||||
fabricated_tablet = new(src)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/battery)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/processor_unit/small)
|
||||
battery_module = fabricated_tablet.all_components[MC_CELL]
|
||||
total_price = 199
|
||||
switch(dev_battery)
|
||||
if(1) // Basic(300C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/nano)
|
||||
if(2) // Upgraded(500C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer/micro)
|
||||
total_price += 199
|
||||
if(3) // Advanced(750C)
|
||||
if(fabricate)
|
||||
battery_module.try_insert(new /obj/item/weapon/stock_parts/cell/computer)
|
||||
total_price += 499
|
||||
switch(dev_disk)
|
||||
if(1) // Basic(32GQ)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/hard_drive/micro)
|
||||
if(2) // Upgraded(64GQ)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/hard_drive/small)
|
||||
total_price += 99
|
||||
if(3) // Advanced(128GQ)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new /obj/item/weapon/computer_hardware/hard_drive)
|
||||
total_price += 299
|
||||
switch(dev_netcard)
|
||||
if(1) // Basic(Short-Range)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/network_card)
|
||||
total_price += 99
|
||||
if(2) // Advanced (Long Range)
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/network_card/advanced)
|
||||
total_price += 299
|
||||
if(dev_printer)
|
||||
total_price += 99
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/printer)
|
||||
if(dev_card)
|
||||
total_price += 199
|
||||
if(fabricate)
|
||||
fabricated_tablet.install_component(new/obj/item/weapon/computer_hardware/card_slot)
|
||||
return total_price
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/lapvend/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
switch(href_list["action"])
|
||||
if("pick_device")
|
||||
if(state) // We've already picked a device type
|
||||
return 0
|
||||
devtype = text2num(href_list["pick"])
|
||||
state = 1
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("clean_order")
|
||||
reset_order()
|
||||
return 1
|
||||
if((state != 1) && devtype) // Following IFs should only be usable when in the Select Loadout mode
|
||||
return 0
|
||||
switch(href_list["action"])
|
||||
if("confirm_order")
|
||||
state = 2 // Wait for ID swipe for payment processing
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("hw_cpu")
|
||||
dev_cpu = text2num(href_list["cpu"])
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("hw_battery")
|
||||
dev_battery = text2num(href_list["battery"])
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("hw_disk")
|
||||
dev_disk = text2num(href_list["disk"])
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("hw_netcard")
|
||||
dev_netcard = text2num(href_list["netcard"])
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("hw_tesla")
|
||||
dev_apc_recharger = text2num(href_list["tesla"])
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("hw_nanoprint")
|
||||
dev_printer = text2num(href_list["print"])
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
if("hw_card")
|
||||
dev_card = text2num(href_list["card"])
|
||||
fabricate_and_recalc_price(0)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/lapvend/attack_hand(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/lapvend/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "computer_fabricator.tmpl", "Personal Computer Vendor", 500, 400)
|
||||
ui.set_auto_update(1)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/lapvend/ui_data(mob/user)
|
||||
var/list/data[0]
|
||||
data["state"] = state
|
||||
if(state == 1)
|
||||
data["devtype"] = devtype
|
||||
data["hw_battery"] = dev_battery
|
||||
data["hw_disk"] = dev_disk
|
||||
data["hw_netcard"] = dev_netcard
|
||||
data["hw_tesla"] = dev_apc_recharger
|
||||
data["hw_nanoprint"] = dev_printer
|
||||
data["hw_card"] = dev_card
|
||||
data["hw_cpu"] = dev_cpu
|
||||
if(state == 1 || state == 2)
|
||||
data["totalprice"] = total_price
|
||||
return data
|
||||
|
||||
obj/machinery/lapvend/attackby(obj/item/I, mob/user)
|
||||
var/obj/item/weapon/card/id/C
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
C = I
|
||||
if(istype(I, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/PDA = I
|
||||
if(PDA.id)
|
||||
C = PDA.id
|
||||
|
||||
if(C && istype(C) && state == 2)
|
||||
if(process_payment(C, I))
|
||||
fabricate_and_recalc_price(1)
|
||||
if((devtype == 1) && fabricated_laptop)
|
||||
fabricated_laptop.forceMove(loc)
|
||||
fabricated_laptop = null
|
||||
else if((devtype == 2) && fabricated_tablet)
|
||||
fabricated_tablet.forceMove(loc)
|
||||
fabricated_tablet = null
|
||||
atom_say("Enjoy your new product!")
|
||||
state = 3
|
||||
return 1
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
|
||||
// Simplified payment processing, returns 1 on success.
|
||||
/obj/machinery/lapvend/proc/process_payment(obj/item/weapon/card/id/I, obj/item/ID_container)
|
||||
visible_message("<span class='info'>\The [usr] swipes \the [ID_container] through \the [src].</span>")
|
||||
var/datum/money_account/customer_account = get_card_account(I)
|
||||
if(!customer_account || customer_account.suspended)
|
||||
atom_say("Connection error. Unable to connect to account.")
|
||||
return 0
|
||||
|
||||
if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2)
|
||||
var/attempt_pin = input("Enter pin code", "Vendor transaction") as num
|
||||
customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
||||
|
||||
if(!customer_account)
|
||||
atom_say("Unable to access account: incorrect credentials.")
|
||||
return 0
|
||||
|
||||
if(total_price > customer_account.money)
|
||||
atom_say("Insufficient funds in account.")
|
||||
return 0
|
||||
else
|
||||
var/paid = customer_account.charge(total_price,
|
||||
transaction_purpose = "Purchase of [(devtype == 1) ? "laptop computer" : "tablet microcomputer"].",
|
||||
terminal_name = name,
|
||||
terminal_id = name,
|
||||
dest_name = vendor_account.owner_name)
|
||||
|
||||
if(paid)
|
||||
vendor_account.money += total_price
|
||||
var/datum/transaction/T = new()
|
||||
T.target_name = customer_account.owner_name
|
||||
T.purpose = "Purchase of [(devtype == 1) ? "laptop computer" : "tablet microcomputer"]"
|
||||
T.amount = "[total_price]"
|
||||
T.source_terminal = name
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
vendor_account.transaction_log.Add(T)
|
||||
return 1
|
||||
return 0
|
||||
@@ -19,6 +19,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
var/list/categories = list(
|
||||
"AI Modules",
|
||||
"Computer Boards",
|
||||
"Computer Parts",
|
||||
"Engineering Machinery",
|
||||
"Exosuit Modules",
|
||||
"Hydroponics Machinery",
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
////////////////////////////////////////
|
||||
///////////Computer Parts///////////////
|
||||
////////////////////////////////////////
|
||||
|
||||
/datum/design/disk/normal
|
||||
name = "hard disk drive"
|
||||
id = "hdd_basic"
|
||||
req_tech = list("programming" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/disk/advanced
|
||||
name = "advanced hard disk drive"
|
||||
id = "hdd_advanced"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/advanced
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/disk/super
|
||||
name = "super hard disk drive"
|
||||
id = "hdd_super"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1600, MAT_GLASS = 400)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/super
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/disk/cluster
|
||||
name = "cluster hard disk drive"
|
||||
id = "hdd_cluster"
|
||||
req_tech = list("programming" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3200, MAT_GLASS = 800)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/cluster
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/disk/small
|
||||
name = "solid state drive"
|
||||
id = "ssd_small"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/small
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/disk/micro
|
||||
name = "micro solid state drive"
|
||||
id = "ssd_micro"
|
||||
req_tech = list("programming" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/micro
|
||||
category = list("Computer Parts")
|
||||
|
||||
|
||||
// Network cards
|
||||
/datum/design/netcard/basic
|
||||
name = "network card"
|
||||
id = "netcard_basic"
|
||||
req_tech = list("programming" = 2, "engineering" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 100, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/network_card
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/netcard/advanced
|
||||
name = "advanced network card"
|
||||
id = "netcard_advanced"
|
||||
req_tech = list("programming" = 4, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 200, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/network_card/advanced
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/netcard/wired
|
||||
name = "wired network card"
|
||||
id = "netcard_wired"
|
||||
req_tech = list("programming" = 5, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 400, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/network_card/wired
|
||||
category = list("Computer Parts")
|
||||
|
||||
|
||||
// Data disks
|
||||
/datum/design/portabledrive/basic
|
||||
name = "data disk"
|
||||
id = "portadrive_basic"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/portabledrive/advanced
|
||||
name = "advanced data disk"
|
||||
id = "portadrive_advanced"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/advanced
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/portabledrive/super
|
||||
name = "super data disk"
|
||||
id = "portadrive_super"
|
||||
req_tech = list("programming" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/super
|
||||
category = list("Computer Parts")
|
||||
|
||||
|
||||
// Card slot
|
||||
/datum/design/cardslot
|
||||
name = "ID card slot"
|
||||
id = "cardslot"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
build_path = /obj/item/weapon/computer_hardware/card_slot
|
||||
category = list("Computer Parts")
|
||||
|
||||
// Intellicard slot
|
||||
/datum/design/aislot
|
||||
name = "Intellicard slot"
|
||||
id = "aislot"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
build_path = /obj/item/weapon/computer_hardware/ai_slot
|
||||
category = list("Computer Parts")
|
||||
|
||||
// Mini printer
|
||||
/datum/design/miniprinter
|
||||
name = "miniprinter"
|
||||
id = "miniprinter"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
build_path = /obj/item/weapon/computer_hardware/printer/mini
|
||||
category = list("Computer Parts")
|
||||
|
||||
|
||||
// APC Link
|
||||
/datum/design/APClink
|
||||
name = "area power connector"
|
||||
id = "APClink"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 3, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000)
|
||||
build_path = /obj/item/weapon/computer_hardware/recharger/APC
|
||||
category = list("Computer Parts")
|
||||
|
||||
|
||||
// Batteries
|
||||
/datum/design/battery/controller
|
||||
name = "power cell controller"
|
||||
id = "bat_control"
|
||||
req_tech = list("powerstorage" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
build_path = /obj/item/weapon/computer_hardware/battery
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/battery/normal
|
||||
name = "battery module"
|
||||
id = "bat_normal"
|
||||
req_tech = list("powerstorage" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
build_path = /obj/item/weapon/stock_parts/cell/computer
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/battery/advanced
|
||||
name = "advanced battery module"
|
||||
id = "bat_advanced"
|
||||
req_tech = list("powerstorage" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800)
|
||||
build_path = /obj/item/weapon/stock_parts/cell/computer/advanced
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/battery/super
|
||||
name = "super battery module"
|
||||
id = "bat_super"
|
||||
req_tech = list("powerstorage" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1600)
|
||||
build_path = /obj/item/weapon/stock_parts/cell/computer/super
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/battery/nano
|
||||
name = "nano battery module"
|
||||
id = "bat_nano"
|
||||
req_tech = list("powerstorage" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/weapon/stock_parts/cell/computer/nano
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/battery/micro
|
||||
name = "micro battery module"
|
||||
id = "bat_micro"
|
||||
req_tech = list("powerstorage" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
build_path = /obj/item/weapon/stock_parts/cell/computer/micro
|
||||
category = list("Computer Parts")
|
||||
|
||||
|
||||
// Processor unit
|
||||
/datum/design/cpu
|
||||
name = "processor board"
|
||||
id = "cpu_normal"
|
||||
req_tech = list("programming" = 3, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/processor_unit
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/cpu/small
|
||||
name = "microprocessor"
|
||||
id = "cpu_small"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/processor_unit/small
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/cpu/photonic
|
||||
name = "photonic processor board"
|
||||
id = "pcpu_normal"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000, "sacid" = 40)
|
||||
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic
|
||||
category = list("Computer Parts")
|
||||
|
||||
/datum/design/cpu/photonic/small
|
||||
name = "photonic microprocessor"
|
||||
id = "pcpu_small"
|
||||
req_tech = list("programming" = 4, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small
|
||||
category = list("Computer Parts")
|
||||
@@ -18,6 +18,7 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
|
||||
var/list/categories = list(
|
||||
"Bluespace",
|
||||
"Computer Parts",
|
||||
"Equipment",
|
||||
"Janitorial",
|
||||
"Medical",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{{if data.printing}}
|
||||
<h5 class='average'>The computer is currently busy.</h5>
|
||||
<div class='notice'>
|
||||
<center><span class='bad'>Printing...</span></center>
|
||||
<center>Printing...</center>
|
||||
</div>
|
||||
<p>
|
||||
Thank you for your patience!
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
{{:helper.link('Clear Order', 'circle', {'action' : 'clean_order'})}}<br><br>
|
||||
<i>Your new computer device you always dreamed of is just four steps away...</i><hr>
|
||||
{{if data.state == 0}}
|
||||
<div class='item'>
|
||||
<h2>Step 1: Select your device type</h2>
|
||||
{{:helper.link('Laptop', 'laptop', {'action' : 'pick_device', 'pick' : 1})}}
|
||||
{{:helper.link('LTablet', 'tablet', {'action' : 'pick_device', 'pick' : 2})}}
|
||||
</div>
|
||||
{{else data.state == 1}}
|
||||
<div class='item'>
|
||||
<h2>Step 2: Personalise your device</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Current Price:</b>
|
||||
<td>{{:data.totalprice}}C
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Battery:</b>
|
||||
<td>{{:helper.link('Standard', 'bolt', {'action' : 'hw_battery', 'battery' : 1}, data.hw_battery == 1 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Upgraded', 'bolt', {'action' : 'hw_battery', 'battery' : 2}, data.hw_battery == 2 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Advanced', 'bolt', {'action' : 'hw_battery', 'battery' : 3}, data.hw_battery == 3 ? "selected" : null)}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Hard Drive:</b>
|
||||
<td>{{:helper.link('Standard', 'hdd-o', {'action' : 'hw_disk', 'disk' : 1}, data.hw_disk == 1 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Upgraded', 'hdd-o', {'action' : 'hw_disk', 'disk' : 2}, data.hw_disk == 2 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Advanced', 'hdd-o', {'action' : 'hw_disk', 'disk' : 3}, data.hw_disk == 3 ? "selected" : null)}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Network Card:</b>
|
||||
<td>{{:helper.link('None', 'times', {'action' : 'hw_netcard', 'netcard' : 0}, data.hw_netcard == 0 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Standard', 'signal', {'action' : 'hw_netcard', 'netcard' : 1}, data.hw_netcard == 1 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Advanced', 'signal', {'action' : 'hw_netcard', 'netcard' : 2}, data.hw_netcard == 2 ? "selected" : null)}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Nano Printer:</b>
|
||||
<td>{{:helper.link('None', 'times', {'action' : 'hw_nanoprint', 'print' : 0}, data.hw_nanoprint == 0 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Standard', 'print', {'action' : 'hw_nanoprint', 'print' : 1}, data.hw_nanoprint == 1 ? "selected" : null)}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Card Reader:</b>
|
||||
<td>{{:helper.link('None', 'times', {'action' : 'hw_card', 'card' : 0}, data.hw_card == 0 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Standard', 'credit-card', {'action' : 'hw_card', 'card' : 1}, data.hw_card == 1 ? "selected" : null)}}
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{{if data.devtype != 2}}
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Processor Unit:</b>
|
||||
<td>{{:helper.link('Standard', 'tasks', {'action' : 'hw_cpu', 'cpu' : 1}, data.hw_cpu == 1 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Advanced', 'tasks', {'action' : 'hw_cpu', 'cpu' : 2}, data.hw_cpu == 2 ? "selected" : null)}}
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Tesla Relay:</b>
|
||||
<td>{{:helper.link('None', 'times', {'action' : 'hw_tesla', 'tesla' : 0}, data.hw_tesla == 0 ? "selected" : null)}}
|
||||
<td>{{:helper.link('Standard', 'plug', {'action' : 'hw_tesla', 'tesla' : 1}, data.hw_tesla == 1 ? "selected" : null)}}
|
||||
</tr>
|
||||
</table>
|
||||
{{/if}}
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Confirm Order:</b>
|
||||
<td>{{:helper.link('CONFIRM', 'check', {'action' : 'confirm_order'})}}
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
<b>Battery</b> allows your device to operate without external utility power source. Advanced batteries increase battery life.<br>
|
||||
<b>Hard Drive</b> stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.<br>
|
||||
<b>Network Card</b> allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.<br>
|
||||
<b>Processor Unit</b> is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.<br>
|
||||
<b>Tesla Relay</b> is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.<br>
|
||||
<b>Nano Printer</b> is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.<br>
|
||||
<b>Card Reader</b> adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards.
|
||||
</div>
|
||||
{{else data.state == 2}}
|
||||
<h2>Step 3: Payment</h2>
|
||||
<b>Your device is now ready for fabrication..</b><br>
|
||||
<i>Please swipe your identification card to finish purchase.</i><br>
|
||||
<i>Total price: <b>{{:data.totalprice}}T</b></i>
|
||||
{{else data.state == 3}}
|
||||
<h2>Step 4: Thank you for your purchase</h2>
|
||||
<b>Should you experience any issues with your new device, contact technical support at support@computerservice.nt</b>
|
||||
{{/if}}
|
||||
+2
-1
@@ -1218,7 +1218,6 @@
|
||||
#include "code\modules\computer3\computer3_notes.dm"
|
||||
#include "code\modules\computer3\file.dm"
|
||||
#include "code\modules\computer3\laptop.dm"
|
||||
#include "code\modules\computer3\lapvend.dm"
|
||||
#include "code\modules\computer3\networking.dm"
|
||||
#include "code\modules\computer3\NTOS.dm"
|
||||
#include "code\modules\computer3\program.dm"
|
||||
@@ -1754,6 +1753,7 @@
|
||||
#include "code\modules\mob\new_player\poll.dm"
|
||||
#include "code\modules\mob\new_player\preferences_setup.dm"
|
||||
#include "code\modules\mob\new_player\sprite_accessories.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_components.dm"
|
||||
#include "code\modules\modular_computers\computers\item\computer_damage.dm"
|
||||
@@ -2012,6 +2012,7 @@
|
||||
#include "code\modules\research\designs\biogenerator_designs.dm"
|
||||
#include "code\modules\research\designs\bluespace_designs.dm"
|
||||
#include "code\modules\research\designs\comp_board_designs.dm"
|
||||
#include "code\modules\research\designs\computer_part_designs.dm"
|
||||
#include "code\modules\research\designs\equipment_designs.dm"
|
||||
#include "code\modules\research\designs\janitorial_designs.dm"
|
||||
#include "code\modules\research\designs\machine_designs.dm"
|
||||
|
||||
Reference in New Issue
Block a user