Merge pull request #32 from ParadiseSS13/master

Merge from Master
This commit is contained in:
Fox-McCloud
2014-12-22 19:59:10 -05:00
55 changed files with 6247 additions and 5240 deletions
@@ -130,6 +130,9 @@
if("cancelshuttle" in href_list)
state = STATE_DEFAULT
if(authenticated)
cancel_call_proc(usr)
if(emergency_shuttle.online())
post_status("shuttle")
state = STATE_CANCELSHUTTLE
if("messagelist" in href_list)
currmsg = 0
@@ -286,11 +289,11 @@
dat += "<BR>\[ <A HREF='?src=\ref[src];RestoreBackup'>Restore Backup Routing Data</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];changeseclevel'>Change alert level</A> \]"
if(emergency_shuttle.location())
/*if(emergency_shuttle.location())
if (emergency_shuttle.online())
dat += "<BR>\[ <A HREF='?src=\ref[src];cancelshuttle'>Cancel Shuttle Call</A> \]"
else
dat += "<BR>\[ <A HREF='?src=\ref[src];callshuttle'>Call Emergency Shuttle</A> \]"
dat += "<BR>\[ <A HREF='?src=\ref[src];callshuttle'>Call Emergency Shuttle</A> \]"*/
dat += "<BR>\[ <A HREF='?src=\ref[src];status'>Set Status Display</A> \]"
else
+7 -1
View File
@@ -341,6 +341,12 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
containername = "cat crate"
group = "Organic"
/datum/supply_packs/organic/fox
name = "Fox Crate"
cost = 55 //Foxes are cool.
containertype = /obj/structure/closet/critter/fox
containername = "fox crate"
/datum/supply_packs/seeds
name = "Seeds Crate"
contains = list(/obj/item/seeds/chiliseed,
@@ -1120,7 +1126,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
containertype = /obj/structure/closet/crate
containername = "autodrobe supply crate"
group = "Operations"
/datum/supply_packs/clothingvendor
name = "Clothing Vendor Supply crate"
contains = list(/obj/item/weapon/vending_refill/hatdispenser,
+58
View File
@@ -0,0 +1,58 @@
/datum/wires/autolathe
holder_type = /obj/machinery/autolathe
wire_count = 10
var/const/AUTOLATHE_HACK_WIRE = 1
var/const/AUTOLATHE_SHOCK_WIRE = 2
var/const/AUTOLATHE_DISABLE_WIRE = 4
/datum/wires/autolathe/GetInteractWindow()
var/obj/machinery/autolathe/A = holder
. += ..()
. += text("<BR>The red light is [A.disabled ? "off" : "on"].<BR>The green light is [A.shocked ? "off" : "on"].<BR>The blue light is [A.hacked ? "off" : "on"].<BR>")
/datum/wires/autolathe/CanUse()
var/obj/machinery/autolathe/A = holder
if(A.panel_open)
return 1
return 0
/datum/wires/autolathe/Interact(var/mob/living/user)
if(CanUse(user))
var/obj/machinery/autolathe/V = holder
V.attack_hand(user)
/datum/wires/autolathe/UpdateCut(index, mended)
var/obj/machinery/autolathe/A = holder
switch(index)
if(AUTOLATHE_HACK_WIRE)
A.hacked = !mended
if(AUTOLATHE_SHOCK_WIRE)
A.shocked = !mended
if(AUTOLATHE_DISABLE_WIRE)
A.disabled = !mended
/datum/wires/autolathe/UpdatePulsed(index)
if(IsIndexCut(index))
return
var/obj/machinery/autolathe/A = holder
switch(index)
if(AUTOLATHE_HACK_WIRE)
A.hacked = !A.hacked
spawn(50)
if(A && !IsIndexCut(index))
A.hacked = 0
Interact(usr)
if(AUTOLATHE_SHOCK_WIRE)
A.shocked = !A.shocked
spawn(50)
if(A && !IsIndexCut(index))
A.shocked = 0
Interact(usr)
if(AUTOLATHE_DISABLE_WIRE)
A.disabled = !A.disabled
spawn(50)
if(A && !IsIndexCut(index))
A.disabled = 0
Interact(usr)
+8 -4
View File
@@ -1240,10 +1240,6 @@ var/list/ghostteleportlocs = list()
name = "\improper Mechanic Workshop"
icon_state = "engine"
/area/engine/gravity_generator
name = "\improper Gravity Generator Room"
icon_state = "blue"
//Solars
/area/solar
@@ -2065,6 +2061,14 @@ area/security/podbay
/area/aisat
name = "\improper AI Satellite Exterior"
icon_state = "yellow"
/area/aisat/entrance
name = "\improper AI Satellite Entrance"
icon_state = "ai_foyer"
/area/aisat/maintenance
name = "\improper AI Satellite Maintenance"
icon_state = "storage"
/area/turret_protected/aisat_interior
name = "\improper AI Satellite Antechamber"
+11 -1
View File
@@ -1,6 +1,16 @@
// Areas.dm
// Added to fix mech fabs 05/2013 ~Sayu
// This is necessary due to lighting subareas. If you were to go in assuming that things in
// the same logical /area have the parent /area object... well, you would be mistaken. If you
// want to find machines, mobs, etc, in the same logical area, you will need to check all the
// related areas. This returns a master contents list to assist in that.
/proc/area_contents(var/area/A)
if(!istype(A)) return null
var/list/contents = list()
for(var/area/LSA in A.related)
contents += LSA.contents
return contents
// ===
/area
+8 -6
View File
@@ -223,16 +223,18 @@ Obviously, requires DNA2.
var/list/targets = new /list()
var/list/validtargets = new /list()
for(var/mob/M in living_mob_list)
var/special_role = M.mind.special_role
if (special_role == "Wizard" || special_role == "Ninja" || special_role == "Syndicate" || special_role == "Syndicate Commando" || special_role == "Vox Raider" || special_role == "Alien")
continue
validtargets += M
if(M && M.mind)
var/special_role = M.mind.special_role
if (special_role == "Wizard" || special_role == "Ninja" || special_role == "Syndicate" || special_role == "Syndicate Commando" || special_role == "Vox Raider" || special_role == "Alien")
continue
validtargets += M
if(!validtargets.len || validtargets.len == 1)
usr << "<span class='warning'>There are no valid targets in range!</span>"
usr << "<span class='warning'>There are no valid targets!</span>"
start_recharge()
return
targets += input("Choose the target to talk to.", "Targeting") as mob in validtargets
perform(targets)
@@ -769,6 +769,12 @@ var/list/datum/dna/hivemind_bank = list()
if(!(T in view(changeling.sting_range))) return
if(!sting_can_reach(T, changeling.sting_range)) return
if(!changeling_power(required_chems)) return
if(ishuman(T))
var/mob/living/carbon/human/H = T
if(H.species.flags & IS_SYNTHETIC)
src << "<span class='warning'>This won't work on synthetics.</span>"
return
changeling.chem_charges -= required_chems
changeling.sting_range = 1
@@ -885,7 +891,7 @@ var/list/datum/dna/hivemind_bank = list()
var/mob/living/carbon/T = changeling_sting(5,/mob/proc/changeling_unfat_sting)
if(!T) return 0
T << "<span class='danger'>you feel a small prick as stomach churns violently and you become to feel skinnier.</span>"
T << "<span class='danger'>You feel a small prick as stomach churns violently and you become to feel skinnier.</span>"
T.overeatduration = 0
T.nutrition -= 100
feedback_add_details("changeling_powers","US")
+4 -20
View File
@@ -20,7 +20,7 @@
var/xenoai = 0 //Should the Xenos have their own AI?
var/xenoborg = 0 //Should the Xenos have their own borg?
var/gammaratio = 3 //At what alien to human ratio will the Gamma security level be called and the nuke be made available?
var/gammaratio = 4 //At what alien to human ratio will the Gamma security level be called and the nuke be made available?
/datum/game_mode/xenos/announce()
world << "<B>The current game mode is - Xenos!</B>"
@@ -183,7 +183,9 @@
/datum/game_mode/xenos/check_win()
var/xenosalive = xenos_alive()
var/playersalive = players_alive()
var/playeralienratio = player_alien_ratio()
var/playeralienratio = 0
if(playersalive)
playeralienratio = xenosalive / playersalive
if(emergency_shuttle && emergency_shuttle.returned())
return ..()
if(!xenosalive)
@@ -240,24 +242,6 @@
if(ishuman(M))
livingplayers += 1
return livingplayers.len
/datum/game_mode/xenos/proc/player_alien_ratio()
var/list/livingplayers = list()
var/list/livingxenos = list()
for(var/mob/M in player_list)
if((M) && (M.stat != 2) && M.client)
if(ishuman(M))
livingplayers += 1
for(var/datum/mind/xeno in xenos)
if((xeno) && (xeno.current) && (xeno.current.stat != 2) && (xeno.current.client))
if(istype(xeno.current,/mob/living/carbon/alien) || (xenoborg && isrobot(xeno.current)) || (xenoai && isAI(xeno.current)))
livingxenos += xeno
if(!livingxenos.len || !livingplayers.len)
return 0
var/ratio = livingxenos.len / livingplayers.len
return ratio
/datum/game_mode/xenos/declare_completion()
if(result == 1)
+269 -415
View File
@@ -1,76 +1,3 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
var/global/list/autolathe_recipes = list( \
new /obj/item/stack/sheet/metal(), \
new /obj/item/stack/sheet/glass(), \
new /obj/item/stack/sheet/rglass(), \
new /obj/item/stack/sheet/fur(), \
new /obj/item/stack/rods(), \
new /obj/item/weapon/crowbar(), \
new /obj/item/weapon/screwdriver(), \
new /obj/item/weapon/weldingtool(), \
new /obj/item/weapon/wirecutters(), \
new /obj/item/weapon/wrench(), \
new /obj/item/device/multitool(), \
new /obj/item/device/analyzer(), \
new /obj/item/device/t_scanner(), \
new /obj/item/device/flashlight(), \
new /obj/item/weapon/extinguisher(), \
new /obj/item/clothing/head/welding(), \
new /obj/item/weapon/stock_parts/console_screen(), \
new /obj/item/weapon/airlock_electronics(), \
new /obj/item/weapon/airalarm_electronics(), \
new /obj/item/weapon/firealarm_electronics(), \
new /obj/item/weapon/kitchenknife(), \
new /obj/item/weapon/scalpel(), \
new /obj/item/weapon/circular_saw(), \
new /obj/item/weapon/surgicaldrill(),\
new /obj/item/weapon/retractor(),\
new /obj/item/weapon/cautery(),\
new /obj/item/weapon/hemostat(),\
new /obj/item/weapon/reagent_containers/glass/beaker(), \
new /obj/item/weapon/reagent_containers/glass/beaker/large(), \
new /obj/item/weapon/reagent_containers/glass/bucket(), \
new /obj/item/device/taperecorder(), \
new /obj/item/device/assembly/igniter(), \
new /obj/item/device/assembly/signaler(), \
new /obj/item/device/radio/headset(), \
new /obj/item/device/radio/off(), \
new /obj/item/device/assembly/infra(), \
new /obj/item/device/assembly/timer(), \
new /obj/item/device/assembly/prox_sensor(), \
new /obj/item/device/assembly/voice(), \
new /obj/item/weapon/light/tube(), \
new /obj/item/weapon/light/bulb(), \
new /obj/item/weapon/camera_assembly(), \
new /obj/item/weapon/rcd_ammo(), \
new /obj/item/ammo_casing/shotgun/beanbag(), \
new /obj/item/ammo_box/c38(), \
new /obj/item/clothing/ears/earmuffs/tribblemuffs(), \
new /obj/item/clothing/gloves/furgloves(), \
new /obj/item/clothing/head/furcap(), \
new /obj/item/clothing/shoes/furboots(), \
new /obj/item/clothing/suit/furcoat(), \
new /obj/item/clothing/suit/furcape(), \
)
var/global/list/autolathe_recipes_hidden = list( \
new /obj/item/weapon/flamethrower/full(), \
new /obj/item/weapon/rcd(), \
new /obj/item/device/radio/electropack(), \
new /obj/item/weapon/weldingtool/largetank(), \
new /obj/item/weapon/handcuffs(), \
new /obj/item/weapon/hatchet(), \
new /obj/item/ammo_box/a357(), \
new /obj/item/ammo_box/c10mm(), \
new /obj/item/ammo_box/c45(), \
new /obj/item/ammo_box/c9mm(), \
new /obj/item/ammo_casing/shotgun(), \
new /obj/item/ammo_casing/shotgun/buckshot(), \
new /obj/item/ammo_casing/shotgun/dart(), \
new /obj/item/ammo_casing/shotgun/incendiary(), \
/* new /obj/item/weapon/shield/riot(),*/ \
)
/obj/machinery/autolathe
name = "autolathe"
desc = "It produces items using metal and glass."
@@ -83,18 +10,13 @@ var/global/list/autolathe_recipes_hidden = list( \
var/g_amount = 0.0
var/max_g_amount = 75000.0
var/f_amount = 0.0
var/max_f_amount = 50000.0
var/operating = 0.0
var/opened = 0.0
anchored = 1.0
var/list/L = list()
var/list/LL = list()
var/hacked = 0
var/disabled = 0
var/shocked = 0
var/list/wires = list()
var/hack_wire
var/disable_wire
var/shock_wire
@@ -103,70 +25,278 @@ var/global/list/autolathe_recipes_hidden = list( \
active_power_usage = 100
var/busy = 0
var/prod_coeff
var/datum/wires/autolathe/wires = null
l_color = "#7BF9FF"
power_change()
..()
if(!(stat & (BROKEN|NOPOWER)))
SetLuminosity(2)
else
SetLuminosity(0)
var/datum/design/being_built
var/datum/research/files
var/selected_category
var/screen = 1
var/list/categories = list(
"Communication",
"Construction",
"Electronics",
"Medical",
"Miscellaneous",
"Security",
"Tools"
)
/obj/machinery/autolathe/New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/autolathe(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/weapon/circuitboard/autolathe(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
RefreshParts()
wires = new(src)
src.L = autolathe_recipes
src.LL = autolathe_recipes_hidden
files = new /datum/research/autolathe(src)
/obj/machinery/autolathe/proc/wires_win(mob/user as mob)
var/dat as text
dat += "Autolathe Wires:<BR>"
for(var/wire in src.wires)
dat += text("[wire] Wire: <A href='?src=\ref[src];wire=[wire];act=wire'>[src.wires[wire] ? "Mend" : "Cut"]</A> <A href='?src=\ref[src];wire=[wire];act=pulse'>Pulse</A><BR>")
/obj/machinery/autolathe/interact(mob/user)
if(shocked && !(stat & NOPOWER))
shock(user,50)
dat += text("The red light is [src.disabled ? "off" : "on"].<BR>")
dat += text("The green light is [src.shocked ? "off" : "on"].<BR>")
dat += text("The blue light is [src.hacked ? "off" : "on"].<BR>")
user << browse("<HTML><HEAD><TITLE>Autolathe Hacking</TITLE></HEAD><BODY>[dat]</BODY></HTML>","window=autolathe_hack")
onclose(user, "autolathe_hack")
user.set_machine(src)
var/dat
/obj/machinery/autolathe/proc/regular_win(mob/user as mob)
var/coeff = 2 ** prod_coeff
var/dat as text
dat = text("<B>Metal Amount:</B> [src.m_amount] cm<sup>3</sup> (MAX: [max_m_amount])<BR>\n<FONT color=blue><B>Glass Amount:</B></FONT> [src.g_amount] cm<sup>3</sup> (MAX: [max_g_amount])<BR>\n<FONT color=orange><B>Fur Amount:</B></FONT> [src.f_amount] cm<sup>3</sup> (MAX: [max_f_amount])<HR>")
var/list/objs = list()
objs += src.L
if (src.hacked)
objs += src.LL
for(var/obj/t in objs)
var/title = "[t.name] ([t.m_amt/coeff] m / [t.g_amt/coeff] g / [t.f_amt/coeff] f)"
if (m_amount<t.m_amt || g_amount<t.g_amt || f_amount<t.f_amt)
dat += title + "<br>"
if(panel_open)
dat = wires.GetInteractWindow()
else
if(screen == 1)
dat = main_win(user)
else
dat += category_win(user,selected_category)
var/datum/browser/popup = new(user, "autolathe", name, 500, 500)
popup.set_content(dat)
popup.open()
return
/obj/machinery/autolathe/attackby(obj/item/O, mob/user)
if (busy)
user << "<span class=\"alert\">The autolathe is busy. Please wait for completion of previous operation.</span>"
return 1
if(default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", O))
updateUsrDialog()
return
if(exchange_parts(user, O))
return
if (panel_open)
if(istype(O, /obj/item/weapon/crowbar))
if(m_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc)
G.amount = round(m_amount / MINERAL_MATERIAL_AMOUNT)
if(g_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(g_amount / MINERAL_MATERIAL_AMOUNT)
default_deconstruction_crowbar(O)
return 1
else
attack_hand(user)
return 1
if (stat)
return 1
if (src.m_amount + O.m_amt > max_m_amount)
user << "<span class=\"alert\">The autolathe is full. Please remove metal from the autolathe in order to insert more.</span>"
return 1
if (src.g_amount + O.g_amt > max_g_amount)
user << "<span class=\"alert\">The autolathe is full. Please remove glass from the autolathe in order to insert more.</span>"
return 1
if (O.m_amt == 0 && O.g_amt == 0)
user << "<span class=\"alert\">This object does not contain significant amounts of metal or glass, or cannot be accepted by the autolathe due to size or hazardous materials.</span>"
return 1
var/amount = 1
var/obj/item/stack/stack
var/m_amt = O.m_amt
var/g_amt = O.g_amt
if (istype(O, /obj/item/stack))
stack = O
amount = stack.amount
if (m_amt)
amount = min(amount, round((max_m_amount-src.m_amount)/m_amt))
flick("autolathe_o",src)//plays metal insertion animation
if (g_amt)
amount = min(amount, round((max_g_amount-src.g_amount)/g_amt))
flick("autolathe_r",src)//plays glass insertion animation
stack.use(amount)
else
if(!user.before_take_item(O))
user << "<span class='notice'>/the [O] is stuck to your hand, you can't put it in \the [src]!</span>"
O.loc = src
icon_state = "autolathe"
busy = 1
use_power(max(1000, (m_amt+g_amt)*amount/10))
src.m_amount += m_amt * amount
src.g_amount += g_amt * amount
user << "You insert [amount] sheet[amount>1 ? "s" : ""] to the autolathe."
if (O && O.loc == src)
qdel(O)
busy = 0
src.updateUsrDialog()
/obj/machinery/autolathe/attack_paw(mob/user)
return attack_hand(user)
/obj/machinery/autolathe/attack_hand(mob/user)
if(..(user, 0))
return
interact(user)
/obj/machinery/autolathe/Topic(href, href_list)
if(..())
return
if (!busy)
if(href_list["menu"])
screen = text2num(href_list["menu"])
if(href_list["category"])
selected_category = href_list["category"]
if(href_list["make"])
var/turf/T = get_step(src.loc, get_dir(src,usr))
/////////////////
//href protection
being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design
if(!being_built)
return
//multiplier checks : only stacks can have one and its value is 1, 10 ,25 or max_multiplier
var/multiplier = text2num(href_list["multiplier"])
var/max_multiplier = min(50, being_built.materials["$metal"] ?round(m_amount/being_built.materials["$metal"]):INFINITY,being_built.materials["$glass"]?round(g_amount/being_built.materials["$glass"]):INFINITY)
var/is_stack = ispath(being_built.build_path, /obj/item/stack)
if(!is_stack && (multiplier > 1))
return
if (!(multiplier in list(1,10,25,max_multiplier))) //"enough materials ?" is checked further down
return
/////////////////
var/coeff = (is_stack ? 1 : 2 ** prod_coeff) //stacks are unaffected by production coefficient
var/metal_cost = being_built.materials["$metal"]
var/glass_cost = being_built.materials["$glass"]
var/power = max(2000, (metal_cost+glass_cost)*multiplier/5)
if((m_amount >= metal_cost*multiplier/coeff) && (g_amount >= glass_cost*multiplier/coeff))
busy = 1
use_power(power)
icon_state = "autolathe"
flick("autolathe_n",src)
spawn(32/coeff)
use_power(power)
if(is_stack)
m_amount -= metal_cost*multiplier
g_amount -= glass_cost*multiplier
var/obj/item/stack/S = new being_built.build_path(T)
S.amount = multiplier
else
m_amount -= metal_cost/coeff
g_amount -= glass_cost/coeff
var/obj/item/new_item = new being_built.build_path(T)
new_item.m_amt /= coeff
new_item.g_amt /= coeff
if(m_amount < 0)
m_amount = 0
if(g_amount < 0)
g_amount = 0
busy = 0
src.updateUsrDialog()
else
usr << "<span class=\"alert\">The autolathe is busy. Please wait for completion of previous operation.</span>"
src.updateUsrDialog()
return
/obj/machinery/autolathe/RefreshParts()
var/tot_rating = 0
prod_coeff = 0
for(var/obj/item/weapon/stock_parts/matter_bin/MB in component_parts)
tot_rating += MB.rating
tot_rating *= 25000
max_m_amount = tot_rating * 2
max_g_amount = tot_rating
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
prod_coeff += M.rating - 1
/obj/machinery/autolathe/proc/main_win(mob/user)
var/dat = "<div class='statusDisplay'><h3>Autolathe Menu:</h3><br>"
dat += "<b>Metal amount:</b> [src.m_amount] / [max_m_amount] cm<sup>3</sup><br>"
dat += "<b>Glass amount:</b> [src.g_amount] / [max_g_amount] cm<sup>3</sup><hr>"
var/line_length = 1
dat += "<table style='width:100%' align='center'><tr>"
for(var/C in categories)
if(line_length > 2)
dat += "</tr><tr>"
line_length = 1
dat += "<td><A href='?src=\ref[src];category=[C];menu=2'>[C]</A></td>"
line_length++
dat += "</tr></table></div>"
return dat
/obj/machinery/autolathe/proc/category_win(mob/user,var/selected_category)
var/dat = "<A href='?src=\ref[src];menu=1'>Return to category screen</A>"
dat += "<div class='statusDisplay'><h3>Browsing [selected_category]:</h3><br>"
dat += "<b>Metal amount:</b> [src.m_amount] / [max_m_amount] cm<sup>3</sup><br>"
dat += "<b>Glass amount:</b> [src.g_amount] / [max_g_amount] cm<sup>3</sup><hr>"
for(var/datum/design/D in files.known_designs)
if(!(selected_category in D.category))
continue
dat += "<A href='?src=\ref[src];make=\ref[t]'>[title]</A>"
if (istype(t, /obj/item/stack))
var/obj/item/stack/S = t
var/max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY, S.f_amt?round(f_amount/S.f_amt):INFINITY)
if (max_multiplier>1)
dat += " |"
if (max_multiplier>10)
dat += " <A href='?src=\ref[src];make=\ref[t];multiplier=[10]'>x[10]</A>"
if (max_multiplier>25)
dat += " <A href='?src=\ref[src];make=\ref[t];multiplier=[25]'>x[25]</A>"
if (max_multiplier>1)
dat += " <A href='?src=\ref[src];make=\ref[t];multiplier=[max_multiplier]'>x[max_multiplier]</A>"
dat += "<br>"
user << browse("<HTML><HEAD><TITLE>Autolathe Control Panel</TITLE></HEAD><BODY><TT>[dat]</TT></BODY></HTML>", "window=autolathe_regular")
onclose(user, "autolathe_regular")
if(disabled || !can_build(D))
dat += "<span class='linkOff'>[D.name]</span>"
else
dat += "<a href='?src=\ref[src];make=[D.id];multiplier=1'>[D.name]</a>"
if(ispath(D.build_path, /obj/item/stack))
var/max_multiplier = min(50, D.materials["$metal"] ?round(m_amount/D.materials["$metal"]):INFINITY,D.materials["$glass"]?round(g_amount/D.materials["$glass"]):INFINITY)
if (max_multiplier>10 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=10'>x10</a>"
if (max_multiplier>25 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=25'>x25</a>"
if(max_multiplier > 0 && !disabled)
dat += " <a href='?src=\ref[src];make=[D.id];multiplier=[max_multiplier]'>x[max_multiplier]</a>"
dat += "[get_design_cost(D)]<br>"
dat += "</div>"
return dat
/obj/machinery/autolathe/proc/can_build(var/datum/design/D)
var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : 2 ** prod_coeff)
if(D.materials["$metal"] && (m_amount < (D.materials["$metal"] / coeff)))
return 0
if(D.materials["$glass"] && (g_amount < (D.materials["$glass"] / coeff)))
return 0
return 1
/obj/machinery/autolathe/proc/get_design_cost(var/datum/design/D)
var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : 2 ** prod_coeff)
var/dat
if(D.materials["$metal"])
dat += "[D.materials["$metal"] / coeff] metal "
if(D.materials["$glass"])
dat += "[D.materials["$glass"] / coeff] glass"
return dat
/obj/machinery/autolathe/proc/shock(mob/user, prb)
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
@@ -181,290 +311,14 @@ var/global/list/autolathe_recipes_hidden = list( \
else
return 0
/obj/machinery/autolathe/interact(mob/user as mob)
if(..())
return
/obj/machinery/autolathe/proc/adjust_hacked(var/hack)
hacked = hack
if (src.shocked)
src.shock(user,50)
if (src.panel_open)
wires_win(user,50)
return
if (src.disabled)
user << "\red You press the button, but nothing happens."
return
regular_win(user)
return
/obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (stat)
return 1
if (busy)
user << "\red The autolathe is busy. Please wait for completion of previous operation."
return 1
if (istype(O, /obj/item/weapon/screwdriver))
default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", O)
return 1
if(exchange_parts(user, O))
return
if (panel_open)
//Don't eat multitools or wirecutters used on an open lathe.
if(istype(O, /obj/item/device/multitool) || istype(O, /obj/item/weapon/wirecutters))
attack_hand(user)
return
//Dismantle the frame.
if(istype(O, /obj/item/weapon/crowbar))
for(var/obj/I in component_parts)
if(I.reliability != 100 && crit_fail)
I.crit_fail = 1
I.loc = src.loc
if(m_amount >= 3750)
var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc)
G.amount = round(m_amount / 3750)
if(g_amount >= 3750)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(g_amount / 3750)
default_deconstruction_crowbar(O)
return 1
else
user.set_machine(src)
interact(user)
return 1
if (src.m_amount + O.m_amt > max_m_amount)
user << "\red The autolathe is full. Please remove metal from the autolathe in order to insert more."
return 1
if (src.g_amount + O.g_amt > max_g_amount)
user << "\red The autolathe is full. Please remove glass from the autolathe in order to insert more."
return 1
if (src.f_amount + O.f_amt > max_f_amount)
user << "\red The autolathe is full. Please remove fur from the autolathe in order to insert more."
return 1
if (O.m_amt == 0 && O.g_amt == 0 && O.f_amt == 0)
user << "\red This object does not contain significant amounts of metal or glass, or cannot be accepted by the autolathe due to size or hazardous materials."
return 1
/*
if (istype(O, /obj/item/weapon/grab) && src.hacked)
var/obj/item/weapon/grab/G = O
if (prob(25) && G.affecting)
G.affecting.gib()
m_amount += 50000
f_amount += 1000
return
*/
var/amount = 1
var/obj/item/stack/stack
var/m_amt = O.m_amt
var/g_amt = O.g_amt
var/f_amt = O.f_amt
if (istype(O, /obj/item/stack))
stack = O
amount = stack.amount
if (m_amt)
amount = min(amount, round((max_m_amount-src.m_amount)/m_amt))
flick("autolathe_o",src)//plays metal insertion animation
if (g_amt)
amount = min(amount, round((max_g_amount-src.g_amount)/g_amt))
flick("autolathe_r",src)//plays glass insertion animation
if (f_amt)
amount = min(amount, round((max_f_amount-src.f_amount)/f_amt))
flick("autolathe_f",src)//plays fur insertion animation
stack.use(amount)
if(hack)
for(var/datum/design/D in files.possible_designs)
if((D.build_type & 4) && ("hacked" in D.category))
files.known_designs += D
else
usr.before_take_item(O)
O.loc = src
icon_state = "autolathe"
busy = 1
use_power(max(1000, (m_amt+g_amt)*amount/10))
src.m_amount += m_amt * amount
src.g_amount += g_amt * amount
src.f_amount += f_amt * amount
user << "You insert [amount] sheet[amount>1 ? "s" : ""] to the autolathe."
if (O && O.loc == src)
del(O)
busy = 0
src.updateUsrDialog()
/obj/machinery/autolathe/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/autolathe/attack_hand(mob/user as mob)
user.set_machine(src)
interact(user)
/obj/machinery/autolathe/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
if (!busy)
if(href_list["make"])
var/coeff = 2 ** prod_coeff
var/turf/T = get_step(src.loc, get_dir(src,usr))
// critical exploit fix start -walter0o
var/obj/item/template = null
var/attempting_to_build = locate(href_list["make"])
if(!attempting_to_build)
return
if(locate(attempting_to_build, src.L) || locate(attempting_to_build, src.LL)) // see if the requested object is in one of the construction lists, if so, it is legit -walter0o
template = attempting_to_build
else // somebody is trying to exploit, alert admins -walter0o
var/turf/LOC = get_turf(usr)
message_admins("[key_name_admin(usr)] tried to exploit an autolathe to duplicate <a href='?_src_=vars;Vars=\ref[attempting_to_build]'>[attempting_to_build]</a> ! ([LOC ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[LOC.x];Y=[LOC.y];Z=[LOC.z]'>JMP</a>" : "null"])", 0)
log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] !")
return
// now check for legit multiplier, also only stacks should pass with one to prevent raw-materials-manipulation -walter0o
var/multiplier = text2num(href_list["multiplier"])
if (!multiplier) multiplier = 1
var/max_multiplier = 1
if(istype(template, /obj/item/stack)) // stacks are the only items which can have a multiplier higher than 1 -walter0o
var/obj/item/stack/S = template
max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) // pasta from regular_win() to make sure the numbers match -walter0o
if( (multiplier > max_multiplier) || (multiplier <= 0) ) // somebody is trying to exploit, alert admins-walter0o
var/turf/LOC = get_turf(usr)
message_admins("[key_name_admin(usr)] tried to exploit an autolathe with multiplier set to <u>[multiplier]</u> on <u>[template]</u> ! ([LOC ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[LOC.x];Y=[LOC.y];Z=[LOC.z]'>JMP</a>" : "null"])" , 0)
log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] !")
return
var/power = max(2000, (template.m_amt+template.g_amt+template.f_amt)*multiplier/5)
if(src.m_amount >= template.m_amt*multiplier/coeff && src.g_amount >= template.g_amt*multiplier/coeff && src.f_amount >= template.f_amt*multiplier/coeff)
busy = 1
use_power(power)
icon_state = "autolathe"
flick("autolathe_n",src)
spawn(32/coeff)
use_power(power)
if(istype(template, /obj/item/stack))
src.m_amount -= template.m_amt*multiplier
src.g_amount -= template.g_amt*multiplier
src.f_amount -= template.f_amt*multiplier
var/obj/new_item = new template.type(T)
var/obj/item/stack/S = new_item
S.amount = multiplier
else
src.m_amount -= template.m_amt/coeff
src.g_amount -= template.g_amt/coeff
src.f_amount -= template.f_amt/coeff
var/obj/item/new_item = new template.type(T)
new_item.m_amt /= coeff
new_item.g_amt /= coeff
new_item.f_amt /= coeff
if(src.m_amount < 0)
src.m_amount = 0
if(src.g_amount < 0)
src.g_amount = 0
if(src.f_amount < 0)
src.f_amount = 0
busy = 0
if(href_list["act"])
var/temp_wire = href_list["wire"]
if(href_list["act"] == "pulse")
if (!istype(usr.get_active_hand(), /obj/item/device/multitool))
usr << "You need a multitool!"
else
if(src.wires[temp_wire])
usr << "You can't pulse a cut wire."
else
if(src.hack_wire == temp_wire)
src.hacked = !src.hacked
spawn(100) src.hacked = !src.hacked
if(src.disable_wire == temp_wire)
src.disabled = !src.disabled
src.shock(usr,50)
spawn(100) src.disabled = !src.disabled
if(src.shock_wire == temp_wire)
src.shocked = !src.shocked
src.shock(usr,50)
spawn(100) src.shocked = !src.shocked
if(href_list["act"] == "wire")
if (!istype(usr.get_active_hand(), /obj/item/weapon/wirecutters))
usr << "You need wirecutters!"
else
wires[temp_wire] = !wires[temp_wire]
if(src.hack_wire == temp_wire)
src.hacked = !src.hacked
if(src.disable_wire == temp_wire)
src.disabled = !src.disabled
src.shock(usr,50)
if(src.shock_wire == temp_wire)
src.shocked = !src.shocked
src.shock(usr,50)
else
usr << "\red The autolathe is busy. Please wait for completion of previous operation."
src.updateUsrDialog()
return
/obj/machinery/autolathe/RefreshParts()
var/tot_rating = 0
prod_coeff = 0
for(var/obj/item/weapon/stock_parts/matter_bin/MB in component_parts)
tot_rating += MB.rating
tot_rating *= 25000
max_m_amount = tot_rating * 2
max_g_amount = tot_rating
max_f_amount = tot_rating
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
prod_coeff += M.rating - 1
/obj/machinery/autolathe/RefreshParts()
..()
var/tot_rating = 0
for(var/obj/item/weapon/stock_parts/matter_bin/MB in component_parts)
tot_rating += MB.rating
tot_rating *= 25000
max_m_amount = tot_rating * 2
max_g_amount = tot_rating
max_f_amount = tot_rating
/obj/machinery/autolathe/New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/autolathe(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
RefreshParts()
src.L = autolathe_recipes
src.LL = autolathe_recipes_hidden
src.wires["Light Red"] = 0
src.wires["Dark Red"] = 0
src.wires["Blue"] = 0
src.wires["Green"] = 0
src.wires["Yellow"] = 0
src.wires["Black"] = 0
src.wires["White"] = 0
src.wires["Gray"] = 0
src.wires["Orange"] = 0
src.wires["Pink"] = 0
var/list/w = list("Light Red","Dark Red","Blue","Green","Yellow","Black","White","Gray","Orange","Pink")
src.hack_wire = pick(w)
w -= src.hack_wire
src.shock_wire = pick(w)
w -= src.shock_wire
src.disable_wire = pick(w)
w -= src.disable_wire
for(var/datum/design/D in files.known_designs)
if("hacked" in D.category)
files.known_designs -= D
+74 -52
View File
@@ -25,6 +25,7 @@
networks["Fire Alarms"] = list(access_ce,access_hos,access_captain)
networks["Power Alarms"] = list(access_ce,access_hos,access_captain)
networks["Supermatter"] = list(access_ce,access_hos,access_captain)
networks["MiniSat"] = list(access_rd,access_hos,access_captain)
networks["Singularity"] = list(access_ce,access_hos,access_captain)
networks["Anomaly Isolation"] = list(access_rd,access_hos,access_captain)
networks["Toxins"] = list(access_rd,access_hos,access_captain)
@@ -34,10 +35,7 @@
networks["Thunderdome"] = list(access_cent_captain)
attack_ai(var/mob/user as mob)
if(isAI(user))
return ui_interact(user)
else
return attack_hand(user)
return attack_hand(user)
attack_paw(var/mob/user as mob)
return attack_hand(user)
@@ -50,6 +48,7 @@
// Network configuration
attackby(I as obj, user as mob)
access = list()
if(istype(I,/obj/item/weapon/card/emag)) // If hit by an emag.
var/obj/item/weapon/card/emag/E = I
if(!emagged)
@@ -70,18 +69,45 @@
..()
ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
if(..())
return
if(stat & (NOPOWER|BROKEN))
return
if(src.z > 6) return
if(stat & (NOPOWER|BROKEN)) return
if(user.stat) return
var/data[0]
data["current"] = null
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.viewpoints)
if(can_access_camera(C))
L.Add(C)
camera_sort(L)
var/cameras[0]
for(var/obj/machinery/camera/C in L)
var/cam[0]
cam["name"] = C.c_tag
cam["deact"] = !C.can_use()
cam["camera"] = "\ref[C]"
cam["x"] = C.x
cam["y"] = C.y
cam["z"] = C.z
cameras[++cameras.len] = cam
if(C == current)
data["current"] = cam
data["cameras"] = cameras
data.Cut()
tempnets.Cut()
if(emagged)
access = list(access_captain) // Assume captain level access when emagged
data["emagged"] = 1
if(isAI(user))
if(isAI(user) || isrobot (user))
access = list(access_captain) // Assume captain level access when AI
// Loop through the ID's permission, and check which networks the ID has access to.
for(var/l in networks) // Loop through networks.
for(var/m in networks[l]) // Loop through access levels of the networks.
@@ -92,16 +118,36 @@
tempnets.Add(list(list("name" = l, "active" = 0)))
break
data["networks"] = tempnets
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "camera_console.tmpl", "Camera Monitor UI", 660, 280)
if (!ui)
ui = new(user, src, ui_key, "sec_camera.tmpl", "Camera Console", 900, 800)
// adding a template with the key "mapContent" enables the map ui functionality
ui.add_template("mapContent", "sec_camera_map_content.tmpl")
// adding a template with the key "mapHeader" replaces the map header content
ui.add_template("mapHeader", "sec_camera_map_header.tmpl")
ui.set_initial_data(data)
ui.open()
ui.set_auto_update(1)
Topic(href, href_list)
if(..())
return
if(href_list["activate"]) // Activate: enable or disable networks
if(href_list["switchTo"])
if(src.z>6 || stat&(NOPOWER|BROKEN)) return
if(usr.stat || ((get_dist(usr, src) > 1 || !( usr.canmove ) || usr.blinded) && !istype(usr, /mob/living/silicon))) return
var/obj/machinery/camera/C = locate(href_list["switchTo"]) in cameranet.viewpoints
if(!C) return
switch_to_camera(usr, C)
return 1
else if(href_list["reset"])
if(src.z>6 || stat&(NOPOWER|BROKEN)) return
if(usr.stat || ((get_dist(usr, src) > 1 || !( usr.canmove ) || usr.blinded) && !istype(usr, /mob/living/silicon))) return
current = null
usr.check_eye(current)
return 1
else if(href_list["activate"]) // Activate: enable or disable networks
var/net = href_list["activate"] // Network to be enabled or disabled.
var/active = href_list["active"] // Is the network currently active.
for(var/a in networks[net])
@@ -113,50 +159,26 @@
src.network += net
break
nanomanager.update_uis(src)
else
. = ..()
attack_hand(var/mob/user as mob)
if(src.z > 6)
user << "\red <b>Unable to establish a connection:</b> \black You're too far away from the station!"
return
if(stat & (NOPOWER|BROKEN))
access = list()
if (src.z > 6)
user << "\red <b>Unable to establish a connection</b>: \black You're too far away from the station!"
return
if(stat & (NOPOWER|BROKEN)) return
if(!isAI(user))
user.set_machine(src)
if(network.len == 0)
user << "\red No networks configured! Swipe the monitor with an authorized ID to configure them."
return
// Camera listing
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.viewpoints)
L.Add(C)
camera_sort(L)
var/list/D = list()
D["Cancel"] = "Cancel"
for(var/obj/machinery/camera/C in L)
if(can_access_camera(C))
D[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C
C.watcherslist -= user
var/t = input(user, "Which camera should you change to?") as null|anything in D
if(!t)
user.unset_machine()
return 0
var/obj/machinery/camera/C = D[t]
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.wear_id)
var/obj/item/weapon/card/id/gold/C = H.wear_id
access = C.access
if(t == "Cancel")
user.unset_machine()
return 0
if(C)
C.watcherslist += user
switch_to_camera(user, C)
spawn(5)
attack_hand(user)
return
ui_interact(user)
// Check if camera is accessible when jumping
proc/can_access_camera(var/obj/machinery/camera/C)
+1 -1
View File
@@ -1,5 +1,5 @@
/obj/machinery/computer/crew
name = "Crew monitoring computer"
name = "Crew Monitoring Computer"
desc = "Used to monitor active health sensors built into most of the crew's uniforms."
icon_state = "crew"
use_power = 1
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -18,7 +18,7 @@
desc = "HOLY SHEET! That is a lot of glass."
singular_name = "glass sheet"
icon_state = "sheet-glass"
g_amt = 3750
g_amt = MINERAL_MATERIAL_AMOUNT
origin_tech = "materials=1"
var/created_window = /obj/structure/window/basic
var/full_window = /obj/structure/window/full/basic
@@ -127,8 +127,8 @@
desc = "Glass which seems to have rods or something stuck in them."
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
g_amt = 3750
m_amt = 1875
g_amt = MINERAL_MATERIAL_AMOUNT
m_amt = MINERAL_MATERIAL_AMOUNT / 2
origin_tech = "materials=2"
var/created_window = /obj/structure/window/reinforced
var/full_window = /obj/structure/window/full/reinforced
@@ -246,7 +246,7 @@
desc = "A very strong and very resistant sheet of a plasma-glass alloy."
singular_name = "glass sheet"
icon_state = "sheet-plasmaglass"
g_amt = 7500
g_amt = MINERAL_MATERIAL_AMOUNT * 2
origin_tech = "materials=3;plasma=2"
var/created_window = /obj/structure/window/plasmabasic
var/full_window = /obj/structure/window/full/plasmabasic
@@ -335,8 +335,8 @@
desc = "Plasma glass which seems to have rods or something stuck in them."
singular_name = "reinforced plasma glass sheet"
icon_state = "sheet-plasmarglass"
g_amt = 7500
m_amt = 1875
g_amt = MINERAL_MATERIAL_AMOUNT * 2
m_amt = MINERAL_MATERIAL_AMOUNT / 2
origin_tech = "materials=4;plasma=2"
var/created_window = /obj/structure/window/plasmareinforced
var/full_window = /obj/structure/window/full/plasmareinforced
@@ -8,7 +8,7 @@
throw_speed = 3
throw_range = 3
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
var/perunit = 3750
var/perunit = MINERAL_MATERIAL_AMOUNT
var/sheettype = null //this is used for girders in the creation of walls/false walls
@@ -69,4 +69,8 @@
/obj/structure/closet/critter/cat
name = "cat crate"
content_mob = /mob/living/simple_animal/cat
content_mob = /mob/living/simple_animal/cat
/obj/structure/closet/critter/fox
name = "fox crate"
content_mob = /mob/living/simple_animal/fox
@@ -104,11 +104,7 @@
// datum, there might be problems if I don't...
/obj/structure/transit_tube_pod/return_air()
var/datum/gas_mixture/GM = new()
GM.oxygen = air_contents.oxygen
GM.carbon_dioxide = air_contents.carbon_dioxide
GM.nitrogen = air_contents.nitrogen
GM.toxins = air_contents.toxins
GM.temperature = air_contents.temperature
GM.copy_from(air_contents)
return GM
// For now, copying what I found in an unused FEA file (and almost identical in a
+2 -2
View File
@@ -92,7 +92,7 @@ var/list/mechtoys = list(
..()
/obj/machinery/computer/supplycomp
name = "Supply shuttle console"
name = "Supply Shuttle Console"
icon = 'icons/obj/computer.dmi'
icon_state = "supply"
req_access = list(access_cargo)
@@ -104,7 +104,7 @@ var/list/mechtoys = list(
var/last_viewed_group = "categories"
/obj/machinery/computer/ordercomp
name = "Supply ordering console"
name = "Supply Ordering Console"
icon = 'icons/obj/computer.dmi'
icon_state = "request"
circuit = "/obj/item/weapon/circuitboard/ordercomp"
+54 -13
View File
@@ -61,18 +61,21 @@ var/list/karma_spenders = list()
usr << "\red You can't award karma until the game has started."
return
var/list/karma_list = list()
var/list/karma_list = list("Cancel")
for(var/mob/M in player_list) if(M.client && M.mind)
var/special_role = M.mind.special_role
if (special_role == "Wizard" || special_role == "Ninja" || special_role == "Syndicate" || special_role == "Syndicate Commando" || special_role == "Vox Raider" || special_role == "Alien") // Don't include special roles, because players use it to meta
continue
karma_list += M
if(!karma_list.len)
if(!karma_list.len || karma_list.len == 1)
usr << "\red There's no-one to spend your karma on."
return
var/pickedmob = input("Who would you like to award Karma to?", "Award Karma", null) as mob in karma_list
var/pickedmob = input("Who would you like to award Karma to?", "Award Karma", "Cancel") as null|mob in karma_list
if(isnull(pickedmob))
return
if(!istype(pickedmob, /mob))
usr << "\red That's not a mob."
@@ -201,9 +204,33 @@ You've gained <b>[totalkarma]</b> total karma in your time here.<br>"}
if (2) // Karma Refunds
var/list/refundable = list()
/*if(checkpurchased("Barber"))
refundable += "Barber"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Barber;KarmaRefundType=job;KarmaRefundCost=5'>Refund Barber -- 5KP</a><br>"*/
if(checkpurchased("Tajaran Ambassador"))
refundable += "Tajaran Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Tajaran Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Tajaran Ambassador -- 30KP</a><br>"
if(checkpurchased("Unathi Ambassador"))
refundable += "Unathi Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Unathi Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Unathi Ambassador -- 30KP</a><br>"
if(checkpurchased("Skrell Ambassador"))
refundable += "Skrell Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Skrell Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Skrell Ambassador -- 30KP</a><br>"
if(checkpurchased("Diona Ambassador"))
refundable += "Diona Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Diona Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Diona Ambassador -- 30KP</a><br>"
if(checkpurchased("Kidan Ambassador"))
refundable += "Kidan Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Kidan Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Kidan Ambassador -- 30KP</a><br>"
if(checkpurchased("Kidan Ambassador"))
refundable += "Kidan Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Kidan Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Kidan Ambassador -- 30KP</a><br>"
if(checkpurchased("Slime People Ambassador"))
refundable += "Slime People Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Slime People Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Slime People Ambassador -- 30KP</a><br>"
if(checkpurchased("Grey Ambassador"))
refundable += "Grey Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Grey Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Grey Ambassador -- 30KP</a><br>"
if(checkpurchased("Vox Ambassador"))
refundable += "Vox Ambassador"
dat += "<a href='?src=\ref[src];karmashop=shop;KarmaRefund=Vox Ambassador;KarmaRefundType=job;KarmaRefundCost=30'>Refund Vox Ambassador -- 30KP</a><br>"
if(!refundable.len)
dat += "You do not have any refundable karma purchases.<br>"
@@ -303,9 +330,9 @@ You've gained <b>[totalkarma]</b> total karma in your time here.<br>"}
while(query.NextRow())
var/spent = text2num(query.item[4])
if(refund)
spent += cost
else
spent -= cost
else
spent += cost
query = dbcon.NewQuery("UPDATE karmatotals SET karmaspent=[spent] WHERE byondkey='[usr.key]'")
if(!query.Execute())
var/err = query.ErrorMsg()
@@ -318,11 +345,25 @@ You've gained <b>[totalkarma]</b> total karma in your time here.<br>"}
return
/client/proc/karmarefund(var/type,var/name,var/cost)
/*if(name == "Barber")
cost = 5
else*/
usr << "\red That job is not refundable."
return
if(name == "Tajaran Ambassador")
cost = 30
else if(name == "Unathi Ambassador")
cost = 30
else if(name == "Skrell Ambassador")
cost = 30
else if(name == "Diona Ambassador")
cost = 30
else if(name == "Kidan Ambassador")
cost = 30
else if(name == "Slime People Ambassador")
cost = 30
else if(name == "Grey Ambassador")
cost = 30
else if(name == "Vox Ambassador")
cost = 30
else
usr << "\red That job is not refundable."
return
var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'")
query.Execute()
@@ -1605,10 +1605,6 @@
if(istype(idcard, /obj/item/weapon/card/id/syndicate))
threatcount -= 5
// Pingsky now actually harbors anti-human sentiment! -Dave
if(istype(judgebot, /obj/machinery/bot/secbot/pingsky) && istype(src, /mob/living/carbon/human/human/))
threatcount += 1
return threatcount
/mob/living/carbon/human/canBeHandcuffed()
+40 -5
View File
@@ -182,16 +182,51 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
return 1 - pressure_adjustment_coefficient //want 0 to be bad protection, 1 to be good protection
// Calculate how vulnerable the human is to under- and overpressure.
// Returns 0 (equals 0 %) if sealed in an undamaged suit, 1 if unprotected (equals 100%).
// Suitdamage can modifiy this in 10% steps.
/mob/living/carbon/human/proc/get_pressure_weakness()
var/pressure_adjustment_coefficient = 1 // Assume no protection at first.
if(wear_suit && (wear_suit.flags & STOPSPRESSUREDMAGE) && head && (head.flags & STOPSPRESSUREDMAGE)) // Complete set of pressure-proof suit worn, assume fully sealed.
pressure_adjustment_coefficient = 0
// Handles breaches in your space suit. 10 suit damage equals a 100% loss of pressure protection.
if(istype(wear_suit,/obj/item/clothing/suit/space))
var/obj/item/clothing/suit/space/S = wear_suit
if(S.can_breach && S.damage)
pressure_adjustment_coefficient += S.damage * 0.1
pressure_adjustment_coefficient = min(1,max(pressure_adjustment_coefficient,0)) // So it isn't less than 0 or larger than 1.
return pressure_adjustment_coefficient
/mob/living/carbon/human/calculate_affecting_pressure(var/pressure)
..()
var/pressure_difference = abs( pressure - ONE_ATMOSPHERE )
var/pressure_difference
pressure_difference = pressure_difference * (1 - get_pressure_protection())
// First get the absolute pressure difference.
if(pressure < ONE_ATMOSPHERE) // We are in an underpressure.
pressure_difference = ONE_ATMOSPHERE - pressure
else //We are in an overpressure or standard atmosphere.
pressure_difference = pressure - ONE_ATMOSPHERE
if(pressure_difference < 5) // If the difference is small, don't bother calculating the fraction.
pressure_difference = 0
if(pressure > ONE_ATMOSPHERE)
return ONE_ATMOSPHERE + pressure_difference
else
// Otherwise calculate how much of that absolute pressure difference affects us, can be 0 to 1 (equals 0% to 100%).
// This is our relative difference.
pressure_difference *= get_pressure_weakness()
// The difference is always positive to avoid extra calculations.
// Apply the relative difference on a standard atmosphere to get the final result.
// The return value will be the adjusted_pressure of the human that is the basis of pressure warnings and damage.
if(pressure < ONE_ATMOSPHERE)
return ONE_ATMOSPHERE - pressure_difference
else
return ONE_ATMOSPHERE + pressure_difference
/mob/living/carbon/human
+2 -1
View File
@@ -186,8 +186,9 @@ var/list/department_radio_keys = list(
message_mode = null //only humans can use headsets
if(traumatic_shock > 61 && prob(50))
if(message_mode)
src << "<span class='warning'>You try to use your radio, but you are in too much pain.</span>"
message_mode = null //people in shock will have a high chance of not being able to speak on radio; needed since people don't instantly pass out at 100 damage.
src << "<span class='warning'>You try to use your radio, but you are in too much pain.</span>"
message = capitalize(message)
+1 -1
View File
@@ -83,7 +83,7 @@
if (!message)
return
var/obj/machinery/hologram/holopad/T = src.current
var/obj/machinery/hologram/holopad/T = src.holo
if(istype(T) && T.hologram && T.master == src)//If there is a hologram and its master is the user.
var/message_a = say_quote(message)
@@ -0,0 +1,33 @@
//Foxxy
/mob/living/simple_animal/fox
name = "fox"
desc = "It's a fox. I wonder what it says?"
icon_state = "fox"
icon_living = "fox"
icon_dead = "fox_dead"
speak = list("Ack-Ack","Ack-Ack-Ack-Ackawoooo","Geckers","Awoo","Tchoff")
speak_emote = list("geckers", "barks")
emote_hear = list("howls","barks")
emote_see = list("shakes its head", "shivers")
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
//Captain fox
/mob/living/simple_animal/fox/Renault
name = "Renault"
desc = "Renault, the Captain's trustworthy fox. I wonder what it says?"
//Syndi fox
/mob/living/simple_animal/fox/Syndifox
name = "Syndifox"
desc = "Syndifox, the Syndicate's most respected mascot. I wonder what it says?"
icon_state = "Syndifox"
icon_living = "Syndifox"
icon_dead = "Syndifox_dead"
flags = IS_SYNTHETIC|NO_BREATHE
faction = list("syndicate")
+2 -1
View File
@@ -186,7 +186,7 @@ proc/wabbajack(mob/living/M)
if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc)
if("statue") new_mob = new /mob/living/simple_animal/hostile/statue(M.loc)
else
var/animal = pick("parrot","corgi","crab","pug","cat","tomato","mouse","chicken","cow","lizard","chick")
var/animal = pick("parrot","corgi","crab","pug","cat","tomato","mouse","chicken","cow","lizard","chick","fox")
switch(animal)
if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc)
if("corgi") new_mob = new /mob/living/simple_animal/corgi(M.loc)
@@ -197,6 +197,7 @@ proc/wabbajack(mob/living/M)
if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc)
if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc)
if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc)
if("fox") new_mob = new /mob/living/simple_animal/fox(M.loc)
else new_mob = new /mob/living/simple_animal/chick(M.loc)
new_mob.universal_speak = 1
if("human")
+17 -7
View File
@@ -95,13 +95,23 @@
if(istype(I, /obj/item/weapon/storage/bag/trash))
var/obj/item/weapon/storage/bag/trash/T = I
user << "\blue You empty the bag."
for(var/obj/item/O in T.contents)
T.remove_from_storage(O,src)
T.update_icon()
update()
return
if(T.contents.len)
user << "\blue You empty the bag."
for(var/obj/item/O in T.contents)
T.remove_from_storage(O,src)
T.update_icon()
update()
return
if(istype(I, /obj/item/weapon/storage/part_replacer))
var/obj/item/weapon/storage/part_replacer/P = I
if(P.contents.len)
user << "\blue You empty the RPED's contents."
for(var/obj/item/O in P.contents)
P.remove_from_storage(O,src)
update()
return
var/obj/item/weapon/grab/G = I
if(istype(G)) // handle grabbed mob
if(ismob(G.affecting))
+126 -118
View File
@@ -1,142 +1,150 @@
/*///////////////Circuit Imprinter (By Darem)////////////////////////
Used to print new circuit boards (for computers and similar systems) and AI modules. Each circuit board pattern are stored in
a /datum/design on the linked R&D console. You can then print them out in a fasion similar to a regular lathe. However, instead of
a /datum/desgin on the linked R&D console. You can then print them out in a fasion similar to a regular lathe. However, instead of
using metal and glass, it uses glass and reagents (usually sulfuric acis).
*/
/obj/machinery/r_n_d/circuit_imprinter
name = "Circuit Imprinter"
desc = "Manufactures circuit boards for the construction of machines."
icon_state = "circuit_imprinter"
flags = OPENCONTAINER
var/g_amount = 0
var/gold_amount = 0
var/diamond_amount = 0
var/uranium_amount = 0
var/max_material_amount = 75000.0
var/efficiency_coeff
var/list/categories = list(
"AI Modules",
"Computer Boards",
"Engineering Machinery",
"Exosuit Modules",
"Hydroponics Machinery",
"Medical Machinery",
"Misc. Machinery",
"Research Machinery",
"Subspace Telecomms",
"Teleportation Machinery"
)
reagents = new()
New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/circuit_imprinter(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
RefreshParts()
/obj/machinery/r_n_d/circuit_imprinter/New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/circuit_imprinter(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
RefreshParts()
var/T = 0
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
T += G.reagents.maximum_volume
var/datum/reagents/R = new/datum/reagents(T) //Holder for the reagents used as materials.
reagents = R
R.my_atom = src
T = 0
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
T += M.rating
max_material_amount = T * 75000.0
T = 0
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
T += M.rating
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
reagents.my_atom = src
blob_act()
if (prob(50))
del(src)
/obj/machinery/r_n_d/circuit_imprinter/RefreshParts()
var/T = 0
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
G.reagents.trans_to(src, G.reagents.total_volume)
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
T += M.rating
max_material_amount = T * 75000.0
T = 0
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
T += M.rating
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
meteorhit()
del(src)
/obj/machinery/r_n_d/circuit_imprinter/blob_act()
if (prob(50))
qdel(src)
/obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, var/M)
switch(M)
if("$glass")
return (g_amount - (being_built.materials[M]/efficiency_coeff) >= 0) ? 1 : 0
if("$gold")
return (gold_amount - (being_built.materials[M]/efficiency_coeff) >= 0) ? 1 : 0
if("$diamond")
return (diamond_amount - (being_built.materials[M]/efficiency_coeff) >= 0) ? 1 : 0
else
return (reagents.has_reagent(M, (being_built.materials[M]/efficiency_coeff)) != 0) ? 1 : 0
/obj/machinery/r_n_d/circuit_imprinter/proc/TotalMaterials()
return g_amount + gold_amount + diamond_amount
/obj/machinery/r_n_d/circuit_imprinter/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (shocked)
shock(user,50)
if (default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter", O))
if(linked_console)
linked_console.linked_imprinter = null
linked_console = null
return
proc/TotalMaterials()
return g_amount + gold_amount + diamond_amount + uranium_amount
if(exchange_parts(user, O))
return
attackby(var/obj/item/O as obj, var/mob/user as mob)
if(exchange_parts(user, O))
if (panel_open)
if(istype(O, /obj/item/weapon/crowbar))
for(var/obj/I in component_parts)
if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker))
reagents.trans_to(I, reagents.total_volume)
if(I.reliability != 100 && crit_fail)
I.crit_fail = 1
I.loc = src.loc
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
reagents.trans_to(G, G.reagents.maximum_volume)
if(g_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(g_amount / MINERAL_MATERIAL_AMOUNT)
if(gold_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc)
G.amount = round(gold_amount / MINERAL_MATERIAL_AMOUNT)
if(diamond_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc)
G.amount = round(diamond_amount / MINERAL_MATERIAL_AMOUNT)
default_deconstruction_crowbar(O)
return
if (shocked)
shock(user,50)
if (istype(O, /obj/item/weapon/screwdriver))
if (default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter", O))
if(linked_console)
linked_console.linked_imprinter = null
linked_console = null
return
if (panel_open)
if(istype(O, /obj/item/weapon/crowbar))
for(var/obj/I in component_parts)
if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker))
reagents.trans_to(I, reagents.total_volume)
if(I.reliability != 100 && crit_fail)
I.crit_fail = 1
I.loc = src.loc
if(g_amount >= 3750)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(g_amount / 3750)
if(gold_amount >= 2000)
var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc)
G.amount = round(gold_amount / 2000)
if(diamond_amount >= 2000)
var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc)
G.amount = round(diamond_amount / 2000)
if(uranium_amount >= 2000)
var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium(src.loc)
G.amount = round(uranium_amount / 2000)
default_deconstruction_crowbar(O)
return 1
else
user << "\red You can't load the [src.name] while it's opened."
return 1
if (disabled)
user << "\The [name] appears to not be working!"
return
if (!linked_console)
user << "\The [name] must be linked to an R&D console first!"
return 1
if (O.is_open_container())
return 0
if (!istype(O, /obj/item/stack/sheet/glass) && !istype(O, /obj/item/stack/sheet/mineral/gold) && !istype(O, /obj/item/stack/sheet/mineral/diamond) && !istype(O, /obj/item/stack/sheet/mineral/uranium))
user << "\red You cannot insert this item into the [name]!"
return 1
if (stat)
return 1
if (busy)
user << "\red The [name] is busy. Please wait for completion of previous operation."
return 1
var/obj/item/stack/sheet/stack = O
if ((TotalMaterials() + stack.perunit) > max_material_amount)
user << "\red The [name] is full. Please remove glass from the protolathe in order to insert more."
return 1
var/amount = round(input("How many sheets do you want to add?") as num)
if(amount < 0)
amount = 0
if(amount == 0)
return
if(amount > stack.amount)
amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit))
busy = 1
use_power(max(1000, (3750*amount/10)))
var/stacktype = stack.type
stack.use(amount)
if(do_after(usr,16))
user << "\blue You add [amount] sheets to the [src.name]."
switch(stacktype)
if(/obj/item/stack/sheet/glass)
g_amount += amount * 3750
if(/obj/item/stack/sheet/mineral/gold)
gold_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/diamond)
diamond_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/uranium)
uranium_amount += amount * 2000
else
new stacktype(src.loc, amount)
busy = 0
src.updateUsrDialog()
user << "<span class='warning'>You can't load the [src.name] while it's opened.</span>"
return
if (disabled)
return
if (!linked_console)
user << "<span class='warning'>The [name] must be linked to an R&D console first!</span>"
return 1
if (O.is_open_container())
return
if (!istype(O, /obj/item/stack/sheet/glass) && !istype(O, /obj/item/stack/sheet/mineral/gold) && !istype(O, /obj/item/stack/sheet/mineral/diamond))
user << "<span class='warning'>You cannot insert this item into the [name]!</span>"
return
if (stat)
return
if (busy)
user << "<span class='warning'>The [name] is busy. Please wait for completion of previous operation.</span>"
return
var/obj/item/stack/sheet/stack = O
if ((TotalMaterials() + stack.perunit) > max_material_amount)
user << "<span class='warning'>The [name] is full. Please remove glass from the protolathe in order to insert more.</span>"
return
var/amount = round(input("How many sheets do you want to add?") as num)
if(amount <= 0 || stack.amount <= 0)
return
if(amount > stack.amount)
amount = min(stack.amount, round((max_material_amount-TotalMaterials())/stack.perunit))
busy = 1
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10)))
user << "<span class='notice'>You add [amount] sheets to the [src.name].</span>"
if(istype(stack, /obj/item/stack/sheet/glass))
g_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/gold))
gold_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/diamond))
diamond_amount += amount * MINERAL_MATERIAL_AMOUNT
stack.use(amount)
busy = 0
src.updateUsrDialog()
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,153 @@
///////////////////////////////////
//////////AI Module Disks//////////
///////////////////////////////////
/datum/design/freeform_module
name = "AI Module (Freeform)"
desc = "Allows for the construction of a Freeform AI Module."
id = "freeform_module"
req_tech = list("programming" = 4, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/freeform
category = list("AI Modules")
/datum/design/onehuman_module
name = "AI Module (OneHuman)"
desc = "Allows for the construction of a OneHuman AI Module."
id = "onehuman_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/zeroth/oneHuman
category = list("AI Modules")
/datum/design/oxygen_module
name = "AI Module (OxygenIsToxicToHumans)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "oxygen_module"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/oxygen
category = list("AI Modules")
/datum/design/protectstation_module
name = "AI Module (ProtectStation)"
desc = "Allows for the construction of a ProtectStation AI Module."
id = "protectstation_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/protectStation
category = list("AI Modules")
/datum/design/purge_module
name = "AI Module (Purge)"
desc = "Allows for the construction of a Purge AI Module."
id = "purge_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/reset/purge
category = list("AI Modules")
/datum/design/quarantine_module
name = "AI Module (Quarantine)"
desc = "Allows for the construction of a Quarantine AI Module."
id = "quarantine_module"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/quarantine
category = list("AI Modules")
/datum/design/reset_module
name = "AI Module (Reset)"
desc = "Allows for the construction of a Reset AI Module."
id = "reset_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/reset
category = list("AI Modules")
/datum/design/safeguard_module
name = "AI Module (Safeguard)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "safeguard_module"
req_tech = list("programming" = 3, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/safeguard
category = list("AI Modules")
/datum/design/antimov_module
name = "Core AI Module (Antimov)"
desc = "Allows for the construction of a Antimov AI Core Module."
id = "antimov_module"
req_tech = list("programming" = 4, "materials" = 6, "syndicate" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/antimov
category = list("AI Modules")
/datum/design/asimov
name = "Core AI Module (Asimov)"
desc = "Allows for the construction of a Asimov AI Core Module."
id = "asimov_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/asimov
category = list("AI Modules")
/datum/design/corporate_module
name = "Core AI Module (Corporate)"
desc = "Allows for the construction of a Corporate AI Core Module."
id = "corporate_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/corp
category = list("AI Modules")
/datum/design/custom_module
name = "Core AI Module (Custom)"
desc = "Allows for the construction of a Custom AI Core Module."
id = "custom_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/custom
category = list("AI Modules")
/datum/design/freeformcore_module
name = "Core AI Module (Freeform)"
desc = "Allows for the construction of a Freeform AI Core Module."
id = "freeformcore_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/freeformcore
category = list("AI Modules")
/datum/design/paladin_module
name = "Core AI Module (P.A.L.A.D.I.N.)"
desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
id = "paladin_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/paladin
category = list("AI Modules")
/datum/design/tyrant_module
name = "Core AI Module (T.Y.R.A.N.T.)"
desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
id = "tyrant_module"
req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/tyrant
category = list("AI Modules")
@@ -0,0 +1,477 @@
///////////////////////////////////
//////////Autolathe Designs ///////
///////////////////////////////////
/datum/design/analyzer
name = "Analyzer"
id = "analyzer"
build_type = AUTOLATHE
materials = list("$metal" = 30, "$glass" = 20)
build_path = /obj/item/device/analyzer
category = list("initial","Tools")
/datum/design/bucket
name = "Bucket"
id = "bucket"
build_type = AUTOLATHE
materials = list("$metal" = 200)
build_path = /obj/item/weapon/reagent_containers/glass/bucket
category = list("initial","Tools")
/datum/design/crowbar
name = "Pocket crowbar"
id = "crowbar"
build_type = AUTOLATHE
materials = list("$metal" = 50)
build_path = /obj/item/weapon/crowbar
category = list("initial","Tools")
/datum/design/extinguisher
name = "Fire Extinguisher"
id = "extinguisher"
build_type = AUTOLATHE
materials = list("$metal" = 90)
build_path = /obj/item/weapon/extinguisher
category = list("initial","Tools")
/datum/design/flashlight
name = "Flashlight"
id = "flashlight"
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/device/flashlight
category = list("initial","Tools")
/datum/design/multitool
name = "Multitool"
id = "multitool"
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/device/multitool
category = list("initial","Tools")
/datum/design/screwdriver
name = "Screwdriver"
id = "screwdriver"
build_type = AUTOLATHE
materials = list("$metal" = 75)
build_path = /obj/item/weapon/screwdriver
category = list("initial","Tools")
/datum/design/tscanner
name = "T-ray Scanner"
id = "tscanner"
build_type = AUTOLATHE
materials = list("$metal" = 150)
build_path = /obj/item/device/t_scanner
category = list("initial","Tools")
/datum/design/welding_helmet
name = "Welding Helmet"
id = "welding_helmet"
build_type = AUTOLATHE
materials = list("$metal" = 1750, "$glass" = 400)
build_path = /obj/item/clothing/head/welding
category = list("initial","Tools")
/datum/design/weldingtool
name = "Welding Tool"
id = "welding_tool"
build_type = AUTOLATHE
materials = list("$metal" = 70, "$glass" = 20)
build_path = /obj/item/weapon/weldingtool
category = list("initial","Tools")
/datum/design/wirecutters
name = "Wirecutters"
id = "wirecutters"
build_type = AUTOLATHE
materials = list("$metal" = 80)
build_path = /obj/item/weapon/wirecutters
category = list("initial","Tools")
/datum/design/wrench
name = "Wrench"
id = "wrench"
build_type = AUTOLATHE
materials = list("$metal" = 150)
build_path = /obj/item/weapon/wrench
category = list("initial","Tools")
/datum/design/airalarm_electronics
name = "Air Alarm Electronics"
id = "airalarm_electronics"
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/airalarm_electronics
category = list("initial", "Electronics")
/datum/design/airlock_board
name = "Airlock Electronics"
id = "airlock_board"
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/airlock_electronics
category = list("initial", "Electronics")
/datum/design/console_screen
name = "Console Screen"
id = "console_screen"
build_type = AUTOLATHE
materials = list("$glass" = 200)
build_path = /obj/item/weapon/stock_parts/console_screen
category = list("initial", "Electronics")
/datum/design/firealarm_electronics
name = "Fire Alarm Electronics"
id = "firealarm_electronics"
build_type = AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/firealarm_electronics
category = list("initial", "Electronics")
/datum/design/igniter
name = "Igniter"
id = "igniter"
build_type = AUTOLATHE
materials = list("$metal" = 500, "$glass" = 50)
build_path = /obj/item/device/assembly/igniter
category = list("initial", "Miscellaneous")
/datum/design/infrared_emitter
name = "Infrared Emitter"
id = "infrared_emitter"
build_type = AUTOLATHE
materials = list("$metal" = 1000, "$glass" = 500)
build_path = /obj/item/device/assembly/infra
category = list("initial", "Miscellaneous")
/datum/design/kitchen_knife
name = "Kitchen knife"
id = "kitchen_knife"
build_type = AUTOLATHE
materials = list("$metal" = 12000)
build_path = /obj/item/weapon/kitchenknife
category = list("initial","Miscellaneous")
/datum/design/pipe_painter
name = "Pipe Painter"
id = "pipe_painter"
build_type = AUTOLATHE
materials = list("$metal" = 5000, "$glass" = 2000)
build_path = /obj/item/device/pipe_painter
category = list("initial", "Miscellaneous")
/datum/design/prox_sensor
name = "Proximity sensor"
id = "prox_sensor"
build_type = AUTOLATHE
materials = list("$metal" = 800, "$glass" = 200)
build_path = /obj/item/device/assembly/prox_sensor
category = list("initial", "Miscellaneous")
/datum/design/timer
name = "Timer"
id = "timer"
build_type = AUTOLATHE
materials = list("$metal" = 500, "$glass" = 50)
build_path = /obj/item/device/assembly/timer
category = list("initial", "Miscellaneous")
/datum/design/recorder
name = "Universal Recorder"
id = "recorder"
build_type = AUTOLATHE
materials = list("$metal" = 60, "$glass" = 30)
build_path = /obj/item/device/taperecorder
category = list("initial", "Miscellaneous")
/datum/design/voice_analyser
name = "Voice analyser"
id = "voice_analyser"
build_type = AUTOLATHE
materials = list("$metal" = 500, "$glass" = 50)
build_path = /obj/item/device/assembly/voice
category = list("initial", "Miscellaneous")
/datum/design/camera_assembly
name = "Camera Assembly"
id = "camera_assembly"
build_type = AUTOLATHE
materials = list("$metal" = 400, "$glass" = 250)
build_path = /obj/item/weapon/camera_assembly
category = list("initial", "Construction")
/datum/design/glass
name = "Glass"
id = "glass"
build_type = AUTOLATHE
materials = list("$glass" = MINERAL_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/glass
category = list("initial","Construction")
/datum/design/light_bulb
name = "Light Bulb"
id = "light_bulb"
build_type = AUTOLATHE
materials = list("$metal" = 60, "$glass" = 100)
build_path = /obj/item/weapon/light/bulb
category = list("initial", "Construction")
/datum/design/light_tube
name = "Light Tube"
id = "light_tube"
build_type = AUTOLATHE
materials = list("$metal" = 60, "$glass" = 100)
build_path = /obj/item/weapon/light/tube
category = list("initial", "Construction")
/datum/design/metal
name = "Metal"
id = "metal"
build_type = AUTOLATHE
materials = list("$metal" = MINERAL_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/metal
category = list("initial","Construction")
/datum/design/rcd_ammo
name = "Compressed Matter Cardridge"
id = "rcd_ammo"
build_type = AUTOLATHE
materials = list("$metal" = 16000, "$glass"=8000)
build_path = /obj/item/weapon/rcd_ammo
category = list("initial","Construction")
/datum/design/rglass
name = "Reinforced Glass"
id = "rglass"
build_type = AUTOLATHE
materials = list("$metal" = 1000, "$glass" = MINERAL_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/rglass
category = list("initial","Construction")
/datum/design/rods
name = "Metal Rod"
id = "rods"
build_type = AUTOLATHE
materials = list("$metal" = 1000)
build_path = /obj/item/stack/rods
category = list("initial","Construction")
/datum/design/beaker
name = "Beaker"
id = "beaker"
build_type = AUTOLATHE
materials = list("$glass" = 500)
build_path = /obj/item/weapon/reagent_containers/glass/beaker
category = list("initial", "Medical")
/datum/design/cautery
name = "Cautery"
id = "cautery"
build_type = AUTOLATHE
materials = list("$metal" = 2500, "$glass" = 750)
build_path = /obj/item/weapon/cautery
category = list("initial", "Medical")
/datum/design/circular_saw
name = "Circular Saw"
id = "circular_saw"
build_type = AUTOLATHE
materials = list("$metal" = 10000, "$glass" = 6000)
build_path = /obj/item/weapon/circular_saw
category = list("initial", "Medical")
/datum/design/hemostat
name = "Hemostat"
id = "hemostat"
build_type = AUTOLATHE
materials = list("$metal" = 5000, "$glass" = 2500)
build_path = /obj/item/weapon/hemostat
category = list("initial", "Medical")
/datum/design/large_beaker
name = "Large Beaker"
id = "large_beaker"
build_type = AUTOLATHE
materials = list("$glass" = 2500)
build_path = /obj/item/weapon/reagent_containers/glass/beaker/large
category = list("initial", "Medical")
/datum/design/retractor
name = "Retractor"
id = "retractor"
build_type = AUTOLATHE
materials = list("$metal" = 6000, "$glass" = 3000)
build_path = /obj/item/weapon/
category = list("initial", "Medical")
/datum/design/scalpel
name = "Scalpel"
id = "scalpel"
build_type = AUTOLATHE
materials = list("$metal" = 4000, "$glass" = 1000)
build_path = /obj/item/weapon/scalpel
category = list("initial", "Medical")
/datum/design/surgicaldrill
name = "Surgical Drill"
id = "surgicaldrill"
build_type = AUTOLATHE
materials = list("$metal" = 10000, "$glass" = 6000)
build_path = /obj/item/weapon/surgicaldrill
category = list("initial", "Medical")
/datum/design/syringe
name = "Syringe"
id = "syringe"
build_type = AUTOLATHE
materials = list("$metal" = 10, "$glass" = 20)
build_path = /obj/item/weapon/reagent_containers/syringe
category = list("initial", "Medical")
/datum/design/beanbag_slug
name = "Beanbag Slug"
id = "beanbag_slug"
build_type = AUTOLATHE
materials = list("$metal" = 250)
build_path = /obj/item/ammo_casing/shotgun/beanbag
category = list("initial", "Security")
/datum/design/c38
name = "Speed Loader (.38)"
id = "c38"
build_type = AUTOLATHE
materials = list("$metal" = 30000)
build_path = /obj/item/ammo_box/c38
category = list("initial", "Security")
/datum/design/radio_headset
name = "Radio Headset"
id = "radio_headset"
build_type = AUTOLATHE
materials = list("$metal" = 75)
build_path = /obj/item/device/radio/headset
category = list("initial", "Communication")
/datum/design/signaler
name = "Remote Signaling Device"
id = "signaler"
build_type = AUTOLATHE
materials = list("$metal" = 400, "$glass" = 120)
build_path = /obj/item/device/assembly/signaler
category = list("initial", "Communication")
/datum/design/bounced_radio
name = "Station Bounced Radio"
id = "bounced_radio"
build_type = AUTOLATHE
materials = list("$metal" = 75, "$glass" = 25)
build_path = /obj/item/device/radio/off
category = list("initial", "Communication")
//hacked autolathe recipes
/datum/design/c45
name = "Ammo Box (.45)"
id = "c45"
build_type = AUTOLATHE
materials = list("$metal" = 30000)
build_path = /obj/item/ammo_box/c45
category = list("hacked", "Security")
/datum/design/a357
name = "Ammo Box (.357)"
id = "a357"
build_type = AUTOLATHE
materials = list("$metal" = 30000)
build_path = /obj/item/ammo_box/a357
category = list("hacked", "Security")
/datum/design/c9mm
name = "Ammo Box (9mm)"
id = "c9mm"
build_type = AUTOLATHE
materials = list("$metal" = 30000)
build_path = /obj/item/ammo_box/c9mm
category = list("hacked", "Security")
/datum/design/c10mm
name = "Ammo Box (10mm)"
id = "c10mm"
build_type = AUTOLATHE
materials = list("$metal" = 30000)
build_path = /obj/item/ammo_box/c10mm
category = list("hacked", "Security")
/datum/design/buckshot_shell
name = "Buckshot Shell"
id = "buckshot_shell"
build_type = AUTOLATHE
materials = list("$metal" = 4000)
build_path = /obj/item/ammo_casing/shotgun/buckshot
category = list("hacked", "Security")
/datum/design/electropack
name = "Electropack"
id = "electropack"
build_type = AUTOLATHE
materials = list("$metal" = 10000, "$glass" = 2500)
build_path = /obj/item/device/radio/electropack
category = list("hacked", "Tools")
/datum/design/flamethrower
name = "Flamethrower"
id = "flamethrower"
build_type = AUTOLATHE
materials = list("$metal" = 500)
build_path = /obj/item/weapon/flamethrower/full
category = list("hacked", "Weapons and ammo")
/datum/design/handcuffs
name = "Handcuffs"
id = "handcuffs"
build_type = AUTOLATHE
materials = list("$metal" = 500)
build_path = /obj/item/weapon/handcuffs
category = list("hacked", "Security")
/datum/design/incendiary_slug
name = "Incendiary Slug"
id = "incendiary_slug"
build_type = AUTOLATHE
materials = list("$metal" = 4000)
build_path = /obj/item/ammo_casing/shotgun/incendiary
category = list("hacked", "Security")
/datum/design/large_welding_tool
name = "Industrial Welding Tool"
id = "large_welding_tool"
build_type = AUTOLATHE
materials = list("$metal" = 70, "$glass" = 60)
build_path = /obj/item/weapon/weldingtool/largetank
category = list("hacked", "Tools")
/datum/design/rcd
name = "Rapid Construction Device (RCD)"
id = "rcd"
build_type = AUTOLATHE
materials = list("$metal" = 30000)
build_path = /obj/item/weapon/rcd
category = list("hacked", "Construction")
/datum/design/shotgun_dart
name = "Shotgun Dart"
id = "shotgun_dart"
build_type = AUTOLATHE
materials = list("$metal" = 4000)
build_path = /obj/item/ammo_casing/shotgun/dart
category = list("hacked", "Security")
/datum/design/shotgun_slug
name = "Shotgun Slug"
id = "shotgun_slug"
build_type = AUTOLATHE
materials = list("$metal" = 4000)
build_path = /obj/item/ammo_casing/shotgun
category = list("hacked", "Security")
@@ -0,0 +1,333 @@
///////////////////////////////////
//////////Computer Boards//////////
///////////////////////////////////
/datum/design/aicore
name = "Console Board (AI Core)"
desc = "Allows for the construction of circuit boards used to build new AI cores."
id = "aicore"
req_tech = list("programming" = 4, "biotech" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aicore
category = list("Computer Boards")
/datum/design/aifixer
name = "Console Board (AI Integrity Restorer)"
desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer."
id = "aifixer"
req_tech = list("programming" = 3, "biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aifixer
category = list("Computer Boards")
/datum/design/aiupload
name = "Console Board (AI Upload)"
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
id = "aiupload"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aiupload
category = list("Computer Boards")
/datum/design/atmosalerts
name = "Console Board (Atmospheric Alerts)"
desc = "Allows for the construction of circuit boards used to build an atmosphere alert console.."
id = "atmosalerts"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/atmos_alert
category = list("Computer Boards")
/datum/design/air_management
name = "Console Board (Atmospheric Monitor)"
desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
id = "air_management"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/air_management
category = list("Computer Boards")
/datum/design/seccamera
name = "Console Board (Camera Monitor)"
desc = "Allows for the construction of circuit boards used to build camera monitors."
id = "seccamera"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/camera
category = list("Computer Boards")
/datum/design/clonecontrol
name = "Console Board (Cloning Machine Console)"
desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
id = "clonecontrol"
req_tech = list("programming" = 3, "biotech" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cloning
category = list("Computer Boards")
/datum/design/comconsole
name = "Console Board (Communications Console)"
desc = "Allows for the construction of circuit boards used to build a communications console."
id = "comconsole"
req_tech = list("programming" = 2, "magnets" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/communications
category = list("Computer Boards")
/datum/design/crewconsole
name = "Console Board (Crew Monitoring Computer)"
desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer."
id = "crewconsole"
req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/crew
category = list("Computer Boards")
/datum/design/borgupload
name = "Console Board (Cyborg Upload)"
desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
id = "borgupload"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/borgupload
category = list("Computer Boards")
/datum/design/scan_console
name = "Console Board (DNA Machine)"
desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
id = "scan_console"
req_tech = list("programming" = 2, "biotech" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/scan_consolenew
category = list("Computer Boards")
/datum/design/dronecontrol
name = "Console Board (Drone Control Console)"
desc = "Allows for the construction of circuit boards used to build a Drone Control console."
id = "dronecontrol"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/drone_control
category = list("Computer Boards")
/datum/design/mechacontrol
name = "Console Board (Exosuit Control Console)"
desc = "Allows for the construction of circuit boards used to build an exosuit control console."
id = "mechacontrol"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha_control
category = list("Computer Boards")
/datum/design/idcardconsole
name = "Console Board (ID Computer)"
desc = "Allows for the construction of circuit boards used to build an ID computer."
id = "idcardconsole"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/card
category = list("Computer Boards")
/datum/design/mechapower
name = "Console Board (Mech Bay Power Control Console)"
desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
id = "mechapower"
req_tech = list("programming" = 2, "powerstorage" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mech_bay_power_console
category = list("Computer Boards")
/datum/design/med_data
name = "Console Board (Medical Records)"
desc = "Allows for the construction of circuit boards used to build a medical records console."
id = "med_data"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/med_data
category = list("Computer Boards")
/datum/design/message_monitor
name = "Console Board (Messaging Monitor Console)"
desc = "Allows for the construction of circuit boards used to build a messaging monitor console."
id = "message_monitor"
req_tech = list("programming" = 5)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/message_monitor
category = list("Computer Boards")
/datum/design/operating
name = "Console Board (Operating Computer)"
desc = "Allows for the construction of circuit boards used to build an operating computer console."
id = "operating"
req_tech = list("programming" = 2, "biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/operating
category = list("Computer Boards")
/datum/design/pandemic
name = "Console Board (PanD.E.M.I.C. 2200)"
desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
id = "pandemic"
req_tech = list("programming" = 2, "biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/pandemic
category = list("Computer Boards")
/datum/design/powermonitor
name = "Console Board (Power Monitor)"
desc = "Allows for the construction of circuit boards used to build a new power monitor"
id = "powermonitor"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/powermonitor
category = list("Computer Boards")
/datum/design/prisonmanage
name = "Console Board (Prisoner Management Console)"
desc = "Allows for the construction of circuit boards used to build a prisoner management console."
id = "prisonmanage"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/prisoner
category = list("Computer Boards")
/datum/design/rdconsole
name = "Console Board (R&D Console)"
desc = "Allows for the construction of circuit boards used to build a new R&D console."
id = "rdconsole"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdconsole
category = list("Computer Boards")
/datum/design/rdservercontrol
name = "Console Board (R&D Server Control Console)"
desc = "The circuit board for a R&D Server Control Console"
id = "rdservercontrol"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdservercontrol
category = list("Computer Boards")
/datum/design/robocontrol
name = "Console Board (Robotics Control Console)"
desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
id = "robocontrol"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/robotics
category = list("Computer Boards")
/datum/design/secdata
name = "Console Board (Security Records Console)"
desc = "Allows for the construction of circuit boards used to build a security records console."
id = "secdata"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/secure_data
category = list("Computer Boards")
/datum/design/solarcontrol
name = "Console Board (Solar Control)"
desc = "Allows for the construction of circuit boards used to build a solar control console"
id = "solarcontrol"
req_tech = list("programming" = 2, "powerstorage" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/solar_control
category = list("Computer Boards")
/datum/design/ordercomp
name = "Console Board (Supply Ordering Console)"
desc = "Allows for the construction of circuit boards used to build a supply ordering console."
id = "ordercomp"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/ordercomp
category = list("Computer Boards")
/datum/design/supplycomp
name = "Console Board (Supply Shuttle Console)"
desc = "Allows for the construction of circuit boards used to build a supply shuttle console."
id = "supplycomp"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/supplycomp
category = list("Computer Boards")
/datum/design/comm_monitor
name = "Console Board (Telecommunications Monitoring Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunications monitor."
id = "comm_monitor"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/comm_monitor
category = list("Computer Boards")
/datum/design/comm_server
name = "Console Board (Telecommunications Server Monitoring Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor."
id = "comm_server"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/comm_server
category = list("Computer Boards")
/datum/design/comm_traffic
name = "Console Board (Telecommunications Traffic Control Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunications traffic control console."
id = "comm_traffic"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/comm_traffic
category = list("Computer Boards")
/datum/design/telesci_console
name = "Console Board (Telepad Control Console)"
desc = "Allows for the construction of circuit boards used to build a telescience console."
id = "telesci_console"
req_tech = list("programming" = 3, "bluespace" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telesci_console
category = list("Computer Boards")
/datum/design/teleconsole
name = "Console Board (Teleporter Console)"
desc = "Allows for the construction of circuit boards used to build a teleporter control console."
id = "teleconsole"
req_tech = list("programming" = 3, "bluespace" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/teleporter
category = list("Computer Boards")
@@ -0,0 +1,273 @@
///////////////////////////////////
//////////Machine Boards///////////
///////////////////////////////////
/datum/design/thermomachine
name = "Machine Board (Freezer/Heater)"
desc = "The circuit board for a Freezer/Heater."
id = "thermomachine"
req_tech = list("programming" = 3, "plasmatech" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/thermomachine
category = list ("Engineering Machinery")
/datum/design/smes
name = "Machine Board (SMES)"
desc = "The circuit board for a SMES."
id = "smes"
req_tech = list("programming" = 4, "power" = 5, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/smes
category = list ("Engineering Machinery")
/datum/design/telepad
name = "Machine Board (Telepad Board)"
desc = "Allows for the construction of circuit boards used to build a Telepad."
id = "telepad"
req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telesci_pad
category = list ("Teleportation Machinery")
/datum/design/teleport_hub
name = "Machine Board (Teleportation Hub)"
desc = "Allows for the construction of circuit boards used to build a Teleportation Hub."
id = "tele_hub"
req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/teleporter_hub
category = list ("Teleportation Machinery")
/datum/design/teleport_station
name = "Machine Board (Teleportation Station)"
desc = "Allows for the construction of circuit boards used to build a Teleporter Station."
id = "tele_station"
req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/teleporter_station
category = list ("Teleportation Machinery")
/datum/design/bodyscanner
name = "Machine Board (Body Scanner)"
desc = "Allows for the construction of circuit boards used to build a Body Scanner."
id = "sleeper"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/bodyscanner
category = list ("Medical Machinery")
/datum/design/sleep_console
name = "Machine Board (Body Scanner Console)"
desc = "Allows for the construction of circuit boards used to build a Body Scanner Console."
id = "sleeper"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/bodyscanner_console
category = list ("Medical Machinery")
/datum/design/clonepod
name = "Machine Board (Cloning Pod)"
desc = "Allows for the construction of circuit boards used to build a Cloning Pod."
id = "clonepod"
req_tech = list("programming" = 3, "biotech" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/clonepod
category = list ("Medical Machinery")
/datum/design/clonescanner
name = "Machine Board (Cloning Scanner)"
desc = "Allows for the construction of circuit boards used to build a Cloning Scanner."
id = "clonescanner"
req_tech = list("programming" = 3, "biotech" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/clonescanner
category = list ("Medical Machinery")
/datum/design/cryotube
name = "Machine Board (Cryotube Board)"
desc = "Allows for the construction of circuit boards used to build a Cryotube."
id = "cryotube"
req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cryo_tube
category = list ("Medical Machinery")
/datum/design/chem_dispenser
name = "Machine Board (Portable Chem Dispenser)"
desc = "The circuit board for a Portable Chem Dispenser."
id = "chem_dispenser"
req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4, "materials" = 4, "plasmatech" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/chem_dispenser
category = list ("Medical Machinery")
/datum/design/sleeper
name = "Machine Board (Sleeper)"
desc = "Allows for the construction of circuit boards used to build a Sleeper."
id = "sleeper"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/sleeper
category = list ("Medical Machinery")
/datum/design/sleep_console
name = "Machine Board (Sleeper Console)"
desc = "Allows for the construction of circuit boards used to build a Sleeper Console."
id = "sleeper"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/sleep_console
category = list ("Medical Machinery")
/datum/design/biogenerator
name = "Machine Board (Biogenerator)"
desc = "The circuit board for a Biogenerator."
id = "biogenerator"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/biogenerator
category = list ("Hydroponics Machinery")
/datum/design/hydroponics
name = "Machine Board (Hydroponics Tray)"
desc = "The circuit board for a Hydroponics Tray."
id = "hydro_tray"
req_tech = list("programming" = 1, "biotech" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/hydroponics
category = list ("Hydroponics Machinery")
/datum/design/autolathe
name = "Machine Board (Autolathe)"
desc = "The circuit board for an Autolathe."
id = "autolathe"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/autolathe
category = list("Research Machinery")
/datum/design/circuit_imprinter
name = "Machine Board (Circuit Imprinter)"
desc = "The circuit board for a Circuit Imprinter."
id = "circuit_imprinter"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/circuit_imprinter
category = list("Research Machinery")
/datum/design/cyborgrecharger
name = "Machine Board (Cyborg Recharger)"
desc = "The circuit board for a Cyborg Recharger."
id = "cyborgrecharger"
req_tech = list("powerstorage" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cyborgrecharger
category = list("Research Machinery")
/datum/design/destructive_analyzer
name = "Machine Board (Destructive Analyzer)"
desc = "The circuit board for a Destructive Analyzer."
id = "destructive_analyzer"
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/destructive_analyzer
category = list("Research Machinery")
/datum/design/mechfab
name = "Machine Board (Exosuit Fabricator)"
desc = "The circuit board for an Exosuit Fabricator"
id = "mechfab"
req_tech = list("programming" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mechfab
category = list("Research Machinery")
/datum/design/mech_recharger
name = "Machine Board (Mech Bay Recharger)"
desc = "The circuit board for a Mech Bay Recharger."
id = "mech_recharger"
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mech_recharger
category = list("Research Machinery")
/datum/design/protolathe
name = "Machine Board (Protolathe)"
desc = "The circuit board for a Protolathe."
id = "protolathe"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/protolathe
category = list("Research Machinery")
/datum/design/rdserver
name = "Machine Board (R&D Server)"
desc = "The circuit board for an R&D Server"
id = "rdserver"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdserver
category = list("Research Machinery")
/datum/design/arcadebattle
name = "Machine Board (Battle Arcade Machine)"
desc = "Allows for the construction of circuit boards used to build a new Arcade Machine."
id = "arcademachinebattle"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/arcade/battle
category = list ("Misc. Machinery")
/datum/design/microwave
name = "Machine Board (Microwave)"
desc = "The circuit board for a Microwave."
id = "microwave"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/microwave
category = list ("Misc. Machinery")
/datum/design/orion_trail
name = "Machine Board (Orion Trail Arcade Machine)"
desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine."
id = "arcademachineonion"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/arcade/orion_trail
category = list ("Misc. Machinery")
/datum/design/vendor
name = "Machine Board (Vendor)"
desc = "The circuit board for a Vendor."
id = "vendor"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/vendor
category = list ("Misc. Machinery")
@@ -0,0 +1,180 @@
///////////////////////////////////
//////////Mecha Module Disks///////
///////////////////////////////////
// Ripley
/datum/design/ripley_main
name = "Circuit Design (APLU \"Ripley\" Central Control module)"
desc = "Allows for the construction of a \"Ripley\" Central Control module."
id = "ripley_main"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/ripley/main
category = list("Exosuit Modules")
/datum/design/ripley_peri
name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)"
desc = "Allows for the construction of a \"Ripley\" Peripheral Control module."
id = "ripley_peri"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals
category = list("Exosuit Modules")
// Odysseus
/datum/design/odysseus_main
name = "Circuit Design (\"Odysseus\" Central Control module)"
desc = "Allows for the construction of a \"Odysseus\" Central Control module."
id = "odysseus_main"
req_tech = list("programming" = 3,"biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main
category = list("Exosuit Modules")
/datum/design/odysseus_peri
name = "Circuit Design (\"Odysseus\" Peripherals Control module)"
desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module."
id = "odysseus_peri"
req_tech = list("programming" = 3,"biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals
category = list("Exosuit Modules")
// Gygax
/datum/design/gygax_main
name = "Circuit Design (\"Gygax\" Central Control module)"
desc = "Allows for the construction of a \"Gygax\" Central Control module."
id = "gygax_main"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/main
category = list("Exosuit Modules")
/datum/design/gygax_peri
name = "Circuit Design (\"Gygax\" Peripherals Control module)"
desc = "Allows for the construction of a \"Gygax\" Peripheral Control module."
id = "gygax_peri"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals
category = list("Exosuit Modules")
/datum/design/gygax_targ
name = "Circuit Design (\"Gygax\" Weapons & Targeting Control module)"
desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module."
id = "gygax_targ"
req_tech = list("programming" = 4, "combat" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting
category = list("Exosuit Modules")
// Durand
/datum/design/durand_main
name = "Circuit Design (\"Durand\" Central Control module)"
desc = "Allows for the construction of a \"Durand\" Central Control module."
id = "durand_main"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/main
category = list("Exosuit Modules")
/datum/design/durand_peri
name = "Circuit Design (\"Durand\" Peripherals Control module)"
desc = "Allows for the construction of a \"Durand\" Peripheral Control module."
id = "durand_peri"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals
category = list("Exosuit Modules")
/datum/design/durand_targ
name = "Circuit Design (\"Durand\" Weapons & Targeting Control module)"
desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module."
id = "durand_targ"
req_tech = list("programming" = 4, "combat" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting
category = list("Exosuit Modules")
// Phazon
/datum/design/phazon_main
name = "Exosuit Design (\"Phazon\" Central Control module)"
desc = "Allows for the construction of a \"Phazon\" Central Control module."
id = "phazon_main"
req_tech = list("programming" = 5, "materials" = 7, "powerstorage" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/main
category = list("Exosuit Modules")
/datum/design/phazon_peri
name = "Exosuit Design (\"Phazon\" Peripherals Control module)"
desc = "Allows for the construction of a \"Phazon\" Peripheral Control module."
id = "phazon_peri"
req_tech = list("programming" = 5, "bluespace" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals
category = list("Exosuit Modules")
/datum/design/phazon_targ
name = "Exosuit Design (\"Phazon\" Weapons & Targeting Control module)"
desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module."
id = "phazon_targ"
req_tech = list("programming" = 5, "magnets" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting
category = list("Exosuit Modules")
// H.O.N.K.
/datum/design/honker_main
name = "Circuit Design (\"H.O.N.K\" Central Control module)"
desc = "Allows for the construction of a \"H.O.N.K\" Central Control module."
id = "honker_main"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/main
category = list("Exosuit Modules")
/datum/design/honker_peri
name = "Circuit Design (\"H.O.N.K\" Peripherals Control module)"
desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module."
id = "honker_peri"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals
category = list("Exosuit Modules")
/datum/design/honker_targ
name = "Circuit Design (\"H.O.N.K\" Weapons & Targeting Control module)"
desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module."
id = "honker_targ"
req_tech = list("programming" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting
category = list("Exosuit Modules")
// Space pod
//datum/design/spacepod_main
name = "Circuit Design (Space Pod Mainboard)"
desc = "Allows for the construction of a Space Pod mainboard."
id = "spacepod_main"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/pod
category = list("Exosuit Modules")
@@ -0,0 +1,663 @@
////////////////////////////////////////
/////////// Mecha Equpment /////////////
////////////////////////////////////////
//Cyborg
/datum/design/borg_suit
name = "Cyborg Endoskeleton"
id = "borg_suit"
build_type = MECHFAB
build_path = /obj/item/robot_parts/robot_suit
materials = list("$metal"=15000)
construction_time = 500
category = list("Cyborg")
/datum/design/borg_chest
name = "Cyborg Torso"
id = "borg_chest"
build_type = MECHFAB
build_path = /obj/item/robot_parts/chest
materials = list("$metal"=40000)
construction_time = 350
category = list("Cyborg")
/datum/design/borg_head
name = "Cyborg Head"
id = "borg_head"
build_type = MECHFAB
build_path = /obj/item/robot_parts/head
materials = list("$metal"=5000)
construction_time = 350
category = list("Cyborg")
/datum/design/borg_l_arm
name = "Cyborg Left Arm"
id = "borg_l_arm"
build_type = MECHFAB
build_path = /obj/item/robot_parts/l_arm
materials = list("$metal"=10000)
construction_time = 200
category = list("Cyborg")
/datum/design/borg_r_arm
name = "Cyborg Right Arm"
id = "borg_r_arm"
build_type = MECHFAB
build_path = /obj/item/robot_parts/r_arm
materials = list("$metal"=10000)
construction_time = 200
category = list("Cyborg")
/datum/design/borg_l_leg
name = "Cyborg Left Leg"
id = "borg_l_leg"
build_type = MECHFAB
build_path = /obj/item/robot_parts/l_leg
materials = list("$metal"=10000)
construction_time = 200
category = list("Cyborg")
/datum/design/borg_r_leg
name = "Cyborg Right Leg"
id = "borg_r_leg"
build_type = MECHFAB
build_path = /obj/item/robot_parts/r_leg
materials = list("$metal"=10000)
construction_time = 200
category = list("Cyborg")
//Ripley
/datum/design/ripley_chassis
name = "Exosuit Chassis (APLU \"Ripley\")"
id = "ripley_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/ripley
materials = list("$metal"=20000)
construction_time = 100
category = list("Ripley")
//firefighter subtype
/datum/design/firefighter_chassis
name = "Exosuit Chassis (APLU \"Firefighter\")"
id = "firefighter_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/firefighter
materials = list("$metal"=20000)
construction_time = 100
category = list("Firefighter")
/datum/design/ripley_torso
name = "Exosuit Torso (APLU \"Ripley\")"
id = "ripley_torso"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/ripley_torso
materials = list("$metal"=20000, "$glass"=7500)
construction_time = 200
category = list("Ripley","Firefighter")
/datum/design/ripley_left_arm
name = "Exosuit Left Arm (APLU \"Ripley\")"
id = "ripley_left_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/ripley_left_arm
materials = list("$metal"=15000)
construction_time = 150
category = list("Ripley","Firefighter")
/datum/design/ripley_right_arm
name = "Exosuit Right Arm (APLU \"Ripley\")"
id = "ripley_right_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/ripley_right_arm
materials = list("$metal"=15000)
construction_time = 150
category = list("Ripley","Firefighter")
/datum/design/ripley_left_leg
name = "Exosuit Left Leg (APLU \"Ripley\")"
id = "ripley_left_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/ripley_left_leg
materials = list("$metal"=15000)
construction_time = 150
category = list("Ripley","Firefighter")
/datum/design/ripley_right_leg
name = "Exosuit Right Leg (APLU \"Ripley\")"
id = "ripley_right_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/ripley_right_leg
materials = list("$metal"=15000)
construction_time = 150
category = list("Ripley","Firefighter")
//Odysseus
/datum/design/odysseus_chassis
name = "Exosuit Chassis (\"Odysseus\")"
id = "odysseus_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/odysseus
materials = list("$metal"=20000)
construction_time = 100
category = list("Odysseus")
/datum/design/odysseus_torso
name = "Exosuit Torso (\"Odysseus\")"
id = "odysseus_torso"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/odysseus_torso
materials = list("$metal"=12000)
construction_time = 180
category = list("Odysseus")
/datum/design/odysseus_head
name = "Exosuit Head (\"Odysseus\")"
id = "odysseus_head"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/odysseus_head
materials = list("$metal"=6000,"$glass"=10000)
construction_time = 100
category = list("Odysseus")
/datum/design/odysseus_left_arm
name = "Exosuit Left Arm (\"Odysseus\")"
id = "odysseus_left_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
materials = list("$metal"=6000)
construction_time = 120
category = list("Odysseus")
/datum/design/odysseus_right_arm
name = "Exosuit Right Arm (\"Odysseus\")"
id = "odysseus_right_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
materials = list("$metal"=6000)
construction_time = 120
category = list("Odysseus")
/datum/design/odysseus_left_leg
name = "Exosuit Left Leg (\"Odysseus\")"
id = "odysseus_left_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
materials = list("$metal"=7000)
construction_time = 130
category = list("Odysseus")
/datum/design/odysseus_right_leg
name = "Exosuit Right Leg (\"Odysseus\")"
id = "odysseus_right_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
materials = list("$metal"=7000)
construction_time = 130
category = list("Odysseus")
//Gygax
/datum/design/gygax_chassis
name = "Exosuit Chassis (\"Gygax\")"
id = "gygax_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/gygax
materials = list("$metal"=20000)
construction_time = 100
category = list("Gygax")
/datum/design/gygax_torso
name = "Exosuit Torso (\"Gygax\")"
id = "gygax_torso"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_torso
materials = list("$metal"=20000,"$glass"=10000,"$diamond"=2000)
construction_time = 300
category = list("Gygax")
/datum/design/gygax_head
name = "Exosuit Head (\"Gygax\")"
id = "gygax_head"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_head
materials = list("$metal"=10000,"$glass"=5000, "$diamond"=2000)
construction_time = 200
category = list("Gygax")
/datum/design/gygax_left_arm
name = "Exosuit Left Arm (\"Gygax\")"
id = "gygax_left_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_left_arm
materials = list("$metal"=15000, "$diamond"=1000)
construction_time = 200
category = list("Gygax")
/datum/design/gygax_right_arm
name = "Exosuit Right Arm (\"Gygax\")"
id = "gygax_right_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_right_arm
materials = list("$metal"=15000, "$diamond"=1000)
construction_time = 200
category = list("Gygax")
/datum/design/gygax_left_leg
name = "Exosuit Left Leg (\"Gygax\")"
id = "gygax_left_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_left_leg
materials = list("$metal"=15000, "$diamond"=2000)
construction_time = 200
category = list("Gygax")
/datum/design/gygax_right_leg
name = "Exosuit Right Leg (\"Gygax\")"
id = "gygax_right_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_right_leg
materials = list("$metal"=15000, "$diamond"=2000)
construction_time = 200
category = list("Gygax")
/datum/design/gygax_armor
name = "Exosuit Armor (\"Gygax\")"
id = "gygax_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_armour
materials = list("$metal"=25000,"$diamond"=10000)
construction_time = 600
category = list("Gygax")
//Durand
/datum/design/durand_chassis
name = "Exosuit Chassis (\"Durand\")"
id = "durand_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/durand
materials = list("$metal"=25000)
construction_time = 100
category = list("Durand")
/datum/design/durand_torso
name = "Exosuit Torso (\"Durand\")"
id = "durand_torso"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_torso
materials = list("$metal"=25000,"$glass"=10000,"$silver"=10000)
construction_time = 300
category = list("Durand")
/datum/design/durand_head
name = "Exosuit Head (\"Durand\")"
id = "durand_head"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_head
materials = list("$metal"=10000,"$glass"=15000,"$silver"=2000)
construction_time = 200
category = list("Durand")
/datum/design/durand_left_arm
name = "Exosuit Left Arm (\"Durand\")"
id = "durand_left_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_left_arm
materials = list("$metal"=10000,"$silver"=4000)
construction_time = 200
category = list("Durand")
/datum/design/durand_right_arm
name = "Exosuit Right Arm (\"Durand\")"
id = "durand_right_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_right_arm
materials = list("$metal"=10000,"$silver"=4000)
construction_time = 200
category = list("Durand")
/datum/design/durand_left_leg
name = "Exosuit Left Leg (\"Durand\")"
id = "durand_left_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_left_leg
materials = list("$metal"=15000,"$silver"=4000)
construction_time = 200
category = list("Durand")
/datum/design/durand_right_leg
name = "Exosuit Right Leg (\"Durand\")"
id = "durand_right_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_right_leg
materials = list("$metal"=15000,"$silver"=4000)
construction_time = 200
category = list("Durand")
/datum/design/durand_armor
name = "Exosuit Armor (\"Durand\")"
id = "durand_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_armor
materials = list("$metal"=50000,"$uranium"=30000)
construction_time = 600
category = list("Durand")
//H.O.N.K
/datum/design/honk_chassis
name = "Exosuit Chassis (\"H.O.N.K\")"
id = "honk_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/honker
materials = list("$metal"=20000)
construction_time = 100
category = list("H.O.N.K")
/datum/design/honk_torso
name = "Exosuit Torso (\"H.O.N.K\")"
id = "honk_torso"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/honker_torso
materials = list("$metal"=20000,"$glass"=10000,"$bananium"=10000)
construction_time = 300
category = list("H.O.N.K")
/datum/design/honk_head
name = "Exosuit Head (\"H.O.N.K\")"
id = "honk_head"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/honker_head
materials = list("$metal"=10000,"$glass"=5000,"$bananium"=5000)
construction_time = 200
category = list("H.O.N.K")
/datum/design/honk_left_arm
name = "Exosuit Left Arm (\"H.O.N.K\")"
id = "honk_left_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/honker_left_arm
materials = list("$metal"=15000,"$bananium"=5000)
construction_time = 200
category = list("H.O.N.K")
/datum/design/honk_right_arm
name = "Exosuit Right Arm (\"H.O.N.K\")"
id = "honk_right_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/honker_right_arm
materials = list("$metal"=15000,"$bananium"=5000)
construction_time = 200
category = list("H.O.N.K")
/datum/design/honk_left_leg
name = "Exosuit Left Leg (\"H.O.N.K\")"
id = "honk_left_leg"
build_type = MECHFAB
build_path =/obj/item/mecha_parts/part/honker_left_leg
materials = list("$metal"=20000,"$bananium"=5000)
construction_time = 200
category = list("H.O.N.K")
/datum/design/honk_right_leg
name = "Exosuit Right Leg (\"H.O.N.K\")"
id = "honk_right_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/honker_right_leg
materials = list("$metal"=20000,"$bananium"=5000)
construction_time = 200
category = list("H.O.N.K")
//Phazon
/datum/design/phazon_chassis
name = "Exosuit Chassis (\"Phazon\")"
id = "phazon_chassis"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/chassis/phazon
materials = list("$metal"=20000)
construction_time = 100
category = list("Phazon")
/datum/design/phazon_torso
name = "Exosuit Torso (\"Phazon\")"
id = "phazon_torso"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_torso
materials = list("$metal"=35000,"$glass"=10000,"$plasma"=20000)
construction_time = 300
category = list("Phazon")
/datum/design/phazon_head
name = "Exosuit Head (\"Phazon\")"
id = "phazon_head"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_head
materials = list("$metal"=15000,"$glass"=5000,"$plasma"=10000)
construction_time = 200
category = list("Phazon")
/datum/design/phazon_left_arm
name = "Exosuit Left Arm (\"Phazon\")"
id = "phazon_left_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_left_arm
materials = list("$metal"=20000,"$plasma"=10000)
construction_time = 200
category = list("Phazon")
/datum/design/phazon_right_arm
name = "Exosuit Right Arm (\"Phazon\")"
id = "phazon_right_arm"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_right_arm
materials = list("$metal"=20000,"$plasma"=10000)
construction_time = 200
category = list("Phazon")
/datum/design/phazon_left_leg
name = "Exosuit Left Leg (\"Phazon\")"
id = "phazon_left_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_left_leg
materials = list("$metal"=20000,"$plasma"=10000)
construction_time = 200
category = list("Phazon")
/datum/design/phazon_right_leg
name = "Exosuit Right Leg (\"Phazon\")"
id = "phazon_right_leg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_right_leg
materials = list("$metal"=20000,"$plasma"=10000)
construction_time = 200
category = list("Phazon")
/datum/design/phazon_armor
name = "Exosuit Armor (\"Phazon\")"
id = "phazon_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_armor
materials = list("$metal"=45000,"$plasma"=30000)
construction_time = 300
category = list("Phazon")
//Exosuit Equipment
/datum/design/mech_cable_layer
name = "Exosuit Engineering Equipment (Cable Layer)"
id = "mech_cable_layer"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_drill
name = "Exosuit Engineering Equipment (Drill)"
id = "mech_drill"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_extinguisher
name = "Exosuit Engineering Equipment (Extinguisher)"
id = "mech_extinguisher"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_hydraulic_clamp
name = "Exosuit Engineering Equipment (Hydraulic Clamp)"
id = "mech_hydraulic_clamp"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_sleeper
name = "Exosuit Medical Equipment (Mounted Sleeper)"
id = "mech_sleeper"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper
materials = list("$metal"=5000,"$glass"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_syringe_gun
name = "Exosuit Medical Equipment (Syringe Gun)"
id = "mech_syringe_gun"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
materials = list("$metal"=3000,"$glass"=2000)
construction_time = 200
category = list("Exosuit Equipment")
/datum/design/mech_generator
name = "Exosuit Equipment (Plasma Generator)"
id = "mech_generator"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/generator
materials = list("$metal"=10000,"$glass"=1000,"$silver"=500)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_taser
name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)"
id = "mech_taser"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_lmg
name = "Exosuit Weapon (\"Ultra AC 2\" LMG)"
id = "mech_lmg"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
materials = list("$metal"=10000)
construction_time = 100
category = list("Exosuit Equipment")
/datum/design/mech_banana_mortar
name = "H.O.N.K Banana Mortar"
id = "mech_banana_mortar"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/banana_mortar
materials = list("$metal"=20000,"$bananium"=5000)
construction_time = 300
category = list("Exosuit Equipment")
/datum/design/mech_honker
name = "HoNkER BlAsT 5000"
id = "mech_honker"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker
materials = list("$metal"=20000,"$bananium"=10000)
construction_time = 500
category = list("Exosuit Equipment")
/datum/design/mech_mousetrap_mortar
name = "H.O.N.K Mousetrap Mortar"
id = "mech_mousetrap_mortar"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/mousetrap_mortar
materials = list("$metal"=20000,"$bananium"=5000)
construction_time = 300
category = list("Exosuit Equipment")
//Cyborg Upgrade Modules
/datum/design/borg_syndicate_module
name = "Borg Illegal Weapons Upgrade"
desc = "Allows for the construction of illegal upgrades for cyborgs"
id = "borg_syndicate_module"
build_type = MECHFAB
req_tech = list("combat" = 4, "syndicate" = 3)
build_path = /obj/item/borg/upgrade/syndicate
category = "Cyborg Upgrade Modules"
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_jetpack
name = "Cyborg Upgrade Module (Mining Jetpack)"
id = "borg_upgrade_jetpack"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/jetpack
materials = list("$metal"=10000,"$plasma"=15000,"$uranium" = 20000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_tasercooler
name = "Cyborg Upgrade Module (Rapid Taser Cooling Module)"
id = "borg_upgrade_tasercooler"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/tasercooler
materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 2000, "$diamond" = 500)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_rename
name = "Cyborg Upgrade Module (Rename Module)"
id = "borg_upgrade_rename"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/rename
materials = list("$metal"=35000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_reset
name = "Cyborg Upgrade Module (Reset Module)"
id = "borg_upgrade_reset"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/reset
materials = list("$metal"=10000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_restart
name = "Cyborg Upgrade Module (Restart Module)"
id = "borg_upgrade_restart"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/restart
materials = list("$metal"=60000 , "$glass"=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_vtec
name = "Cyborg Upgrade Module (VTEC Module)"
id = "borg_upgrade_vtec"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/vtec
materials = list("$metal"=80000 , "$glass"=6000 , "$gold"= 5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
//Misc
/datum/design/mecha_tracking
name = "Exosuit Tracking Beacon"
id = "mecha_tracking"
build_type = MECHFAB
build_path =/obj/item/mecha_parts/mecha_tracking
materials = list("$metal"=500)
construction_time = 50
category = list("Misc")
@@ -0,0 +1,185 @@
/////////////////////////////////////////
////////////Medical Tools////////////////
/////////////////////////////////////////
/datum/design/adv_mass_spectrometer
name = "Advanced Mass-Spectrometer"
desc = "A device for analyzing chemicals in the blood and their quantities."
id = "adv_mass_spectrometer"
req_tech = list("biotech" = 2, "magnets" = 4)
build_type = PROTOLATHE
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 74
build_path = "/obj/item/device/mass_spectrometer/adv"
category = list("Medical")
/datum/design/adv_reagent_scanner
name = "Advanced Reagent Scanner"
desc = "A device for identifying chemicals and their proportions."
id = "adv_reagent_scanner"
req_tech = list("biotech" = 2, "magnets" = 4)
build_type = PROTOLATHE
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 74
build_path = /obj/item/device/reagent_scanner/adv
category = list("Medical")
/datum/design/bluespacebeaker
name = "bluespace beaker"
desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
id = "bluespacebeaker"
req_tech = list("bluespace" = 2, "materials" = 6)
build_type = PROTOLATHE
materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500)
reliability_base = 76
build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace
category = list("Medical")
/datum/design/implant_chem
name = "Chemical Implant"
desc = "An implant which can be filled with various chemicals, and then injected on command."
id = "implant_chem"
req_tech = list("materials" = 2, "biotech" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/implantcase/chem
locked = 1
category = list("Medical")
/datum/design/noreactbeaker
name = "Cryostasis Beaker"
desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
id = "splitbeaker"
req_tech = list("materials" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 3000)
reliability_base = 76
build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact
category = list("Medical")
/datum/design/cyborg_analyzer
name = "Cyborg Analyzer"
desc = "A hand-held scanner able to diagnose robotic injuries."
id = "cyborg_analyzer"
req_tech = list("programming" = 2, "biotech" = 2, "magnets" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 74
build_path = /obj/item/device/robotanalyzer
category = list("Medical")
/datum/design/defib
name = "Defibrillator"
desc = "A device that delivers powerful shocks to detachable paddles that resuscitate incapacitated patients."
id = "defib"
req_tech = list("materials" = 7, "biotech" = 5, "powerstorage" = 5)
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 2000, "$silver" = 1000)
reliability = 76
build_path = /obj/item/weapon/defibrillator
category = list("Medical")
/datum/design/implant_free
name = "Freedom Implant"
desc = "An implant which allows the user to instantly escape from restraints."
id = "implant_free"
req_tech = list("syndicate" = 2, "biotech" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/implantcase/freedom
category = list("Medical")
/datum/design/implanter
name = "Implanter"
desc = "A basic implanter for injecting implants"
id = "implanter"
req_tech = list("materials" = 2, "biotech" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = "/obj/item/weapon/implanter"
category = list("Medical")
/datum/design/implant_loyal
name = "Loyalty Implant"
desc = "An implant which makes its carrier loyal to Nanotrasen."
id = "implant_loyal"
req_tech = list("materials" = 2, "biotech" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 7000, "$glass" = 7000)
build_path = /obj/item/weapon/implantcase/loyalty
locked = 1
category = list("Medical")
/datum/design/mmi
name = "Man-Machine Interface"
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
id = "mmi"
req_tech = list("programming" = 2, "biotech" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list("$metal" = 1000, "$glass" = 500)
reliability_base = 76
build_path = /obj/item/device/mmi
category = list("Misc","Medical")
/datum/design/mass_spectrometer
name = "Mass-Spectrometer"
desc = "A device for analyzing chemicals in the blood."
id = "mass_spectrometer"
req_tech = list("biotech" = 2, "magnets" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 76
build_path = /obj/item/device/mass_spectrometer
category = list("Medical")
/datum/design/posibrain
name = "Positronic Brain"
desc = "Allows for the construction of a positronic brain"
id = "posibrain"
req_tech = list("engineering" = 4, "materials" = 6, "bluespace" = 2, "programming" = 4)
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$glass" = 1000, "$silver" = 1000, "$gold" = 500, "$plasma" = 500, "$diamond" = 100)
build_path = /obj/item/device/mmi/posibrain
category = list("Misc","Medical")
/datum/design/mmi_radio
name = "Radio-Enabled Man-Machine Interface"
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity. This one comes with a built-in radio."
id = "mmi_radio"
req_tech = list("programming" = 2, "biotech" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list("$metal" = 1200, "$glass" = 500)
reliability_base = 74
build_path = /obj/item/device/mmi/radio_enabled
category = list("Misc","Medical")
/datum/design/nanopaste
name = "Nanopaste"
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
id = "nanopaste"
req_tech = list("materials" = 4, "engineering" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 7000, "$glass" = 7000)
build_path = /obj/item/stack/nanopaste
category = list("Medical")
/datum/design/reagent_scanner
name = "Reagent Scanner"
desc = "A device for identifying chemicals."
id = "reagent_scanner"
req_tech = list("biotech" = 2, "magnets" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 30, "$glass" = 20)
reliability_base = 76
build_path = /obj/item/device/reagent_scanner
category = list("Medical")
/datum/design/synthetic_flash
name = "Flash"
desc = "A synthetic flash used mostly in borg construction."
id = "sflash"
req_tech = list("magnets" = 3, "combat" = 2)
build_type = MECHFAB
materials = list("$metal" = 750, "$glass" = 750)
reliability_base = 76
build_path = /obj/item/device/flash/synthetic
category = list("Misc")
@@ -0,0 +1,79 @@
/////////////////////////////////////////
////////////Power Designs////////////////
/////////////////////////////////////////
/datum/design/basic_cell
name = "Basic Power Cell"
desc = "A basic power cell that holds 1000 units of energy"
id = "basic_cell"
req_tech = list("powerstorage" = 1)
build_type = PROTOLATHE | AUTOLATHE |MECHFAB
materials = list("$metal" = 700, "$glass" = 50)
build_path = /obj/item/weapon/cell
category = "Misc"
category = list("Misc","Power Designs")
/datum/design/high_cell
name = "High-Capacity Power Cell"
desc = "A power cell that holds 10000 units of energy"
id = "high_cell"
req_tech = list("powerstorage" = 2)
build_type = PROTOLATHE | AUTOLATHE | MECHFAB
materials = list("$metal" = 700, "$glass" = 60)
build_path = /obj/item/weapon/cell/high
category = list("Misc","Power Designs")
/datum/design/hyper_cell
name = "Hyper-Capacity Power Cell"
desc = "A power cell that holds 30000 units of energy"
id = "hyper_cell"
req_tech = list("powerstorage" = 5, "materials" = 4)
reliability_base = 70
build_type = PROTOLATHE | MECHFAB
materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70)
build_path = /obj/item/weapon/cell/hyper
category = list("Misc","Power Designs")
/datum/design/super_cell
name = "Super-Capacity Power Cell"
desc = "A power cell that holds 20000 units of energy"
id = "super_cell"
req_tech = list("powerstorage" = 3, "materials" = 2)
reliability_base = 75
build_type = PROTOLATHE | MECHFAB
materials = list("$metal" = 700, "$glass" = 70)
build_path = /obj/item/weapon/cell/super
category = list("Misc","Power Designs")
/datum/design/pacman
name = "PACMAN-type Generator Board"
desc = "The circuit board that for a PACMAN-type portable generator."
id = "pacman"
req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3)
build_type = IMPRINTER
reliability_base = 79
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/pacman
category = list("Engineering Machinery")
/datum/design/mrspacman
name = "MRSPACMAN-type Generator Board"
desc = "The circuit board that for a MRSPACMAN-type portable generator."
id = "mrspacman"
req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5)
build_type = IMPRINTER
reliability_base = 74
materials = list("$glass" = 2000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/pacman/mrs
category = list("Engineering Machinery")
/datum/design/superpacman
name = "SUPERPACMAN-type Generator Board"
desc = "The circuit board that for a SUPERPACMAN-type portable generator."
id = "superpacman"
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
build_type = IMPRINTER
reliability_base = 76
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/pacman/super
category = list("Engineering Machinery")
@@ -0,0 +1,168 @@
////////////////////////////////////////
/////////////Stock Parts////////////////
////////////////////////////////////////
/datum/design/basic_capacitor
name = "Basic Capacitor"
desc = "A stock part used in the construction of various devices."
id = "basic_capacitor"
req_tech = list("powerstorage" = 1)
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/stock_parts/capacitor
category = list("Stock Parts")
/datum/design/basic_sensor
name = "Basic Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "basic_sensor"
req_tech = list("magnets" = 1)
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/scanning_module
category = list("Stock Parts")
/datum/design/micro_mani
name = "Micro Manipulator"
desc = "A stock part used in the construction of various devices."
id = "micro_mani"
req_tech = list("materials" = 1, "programming" = 1)
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 30)
build_path = /obj/item/weapon/stock_parts/manipulator
category = list("Stock Parts")
/datum/design/basic_micro_laser
name = "Basic Micro-Laser"
desc = "A stock part used in the construction of various devices."
id = "basic_micro_laser"
req_tech = list("magnets" = 1)
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 10, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/micro_laser
category = list("Stock Parts")
/datum/design/basic_matter_bin
name = "Basic Matter Bin"
desc = "A stock part used in the construction of various devices."
id = "basic_matter_bin"
req_tech = list("materials" = 1)
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 80)
build_path = /obj/item/weapon/stock_parts/matter_bin
category = list("Stock Parts")
/datum/design/adv_capacitor
name = "Advanced Capacitor"
desc = "A stock part used in the construction of various devices."
id = "adv_capacitor"
req_tech = list("powerstorage" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/stock_parts/capacitor/adv
category = list("Stock Parts")
/datum/design/adv_sensor
name = "Advanced Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "adv_sensor"
req_tech = list("magnets" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/scanning_module/adv
category = list("Stock Parts")
/datum/design/nano_mani
name = "Nano Manipulator"
desc = "A stock part used in the construction of various devices."
id = "nano_mani"
req_tech = list("materials" = 3, "programming" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 30)
build_path = /obj/item/weapon/stock_parts/manipulator/nano
category = list("Stock Parts")
/datum/design/high_micro_laser
name = "High-Power Micro-Laser"
desc = "A stock part used in the construction of various devices."
id = "high_micro_laser"
req_tech = list("magnets" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 10, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/micro_laser/high
category = list("Stock Parts")
/datum/design/adv_matter_bin
name = "Advanced Matter Bin"
desc = "A stock part used in the construction of various devices."
id = "adv_matter_bin"
req_tech = list("materials" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 80)
build_path = /obj/item/weapon/stock_parts/matter_bin/adv
category = list("Stock Parts")
/datum/design/super_capacitor
name = "Super Capacitor"
desc = "A stock part used in the construction of various devices."
id = "super_capacitor"
req_tech = list("powerstorage" = 5, "materials" = 4)
build_type = PROTOLATHE
reliability_base = 71
materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20)
build_path = /obj/item/weapon/stock_parts/capacitor/super
category = list("Stock Parts")
/datum/design/phasic_sensor
name = "Phasic Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "phasic_sensor"
req_tech = list("magnets" = 5, "materials" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10)
reliability_base = 72
build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
category = list("Stock Parts")
/datum/design/pico_mani
name = "Pico Manipulator"
desc = "A stock part used in the construction of various devices."
id = "pico_mani"
req_tech = list("materials" = 5, "programming" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 30)
reliability_base = 73
build_path = /obj/item/weapon/stock_parts/manipulator/pico
category = list("Stock Parts")
/datum/design/ultra_micro_laser
name = "Ultra-High-Power Micro-Laser"
desc = "A stock part used in the construction of various devices."
id = "ultra_micro_laser"
req_tech = list("magnets" = 5, "materials" = 5)
build_type = PROTOLATHE
materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10)
reliability_base = 70
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
category = list("Stock Parts")
/datum/design/super_matter_bin
name = "Super Matter Bin"
desc = "A stock part used in the construction of various devices."
id = "super_matter_bin"
req_tech = list("materials" = 5)
build_type = PROTOLATHE
materials = list("$metal" = 80)
reliability_base = 75
build_path = /obj/item/weapon/stock_parts/matter_bin/super
category = list("Stock Parts")
/datum/design/RPED
name = "Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
id = "rped"
req_tech = list("engineering" = 3, "materials" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 15000, "$glass" = 5000) //hardcore
build_path = /obj/item/weapon/storage/part_replacer
category = list("Stock Parts")
@@ -0,0 +1,143 @@
////////////////////////////////////////
//////////Telecomms Equipment///////////
////////////////////////////////////////
/datum/design/telecomms_bus
name = "Machine Board (Bus Mainframe)"
desc = "Allows for the construction of Telecommunications Bus Mainframes."
id = "s-bus"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/bus
category = list("Subspace Telecomms")
/datum/design/telecomms_hub
name = "Machine Board (Hub Mainframe)"
desc = "Allows for the construction of Telecommunications Hub Mainframes."
id = "s-hub"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/hub
category = list("Subspace Telecomms")
/datum/design/telecomms_processor
name = "Machine Board (Processor Unit)"
desc = "Allows for the construction of Telecommunications Processor equipment."
id = "s-processor"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/processor
category = list("Subspace Telecomms")
/datum/design/telecomms_relay
name = "Machine Board (Relay Mainframe)"
desc = "Allows for the construction of Telecommunications Relay Mainframes."
id = "s-relay"
req_tech = list("programming" = 1, "engineering" = 2, "bluespace" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/relay
category = list("Subspace Telecomms")
/datum/design/telecomms_server
name = "Machine Board (Server Mainframe)"
desc = "Allows for the construction of Telecommunications Servers."
id = "s-server"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/server
category = list("Subspace Telecomms")
/datum/design/subspace_broadcaster
name = "Machine Board (Subspace Broadcaster)"
desc = "Allows for the construction of Subspace Broadcasting equipment."
id = "s-broadcaster"
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster
category = list("Subspace Telecomms")
/datum/design/subspace_receiver
name = "Machine Board (Subspace Receiver)"
desc = "Allows for the construction of Subspace Receiver equipment."
id = "s-receiver"
req_tech = list("programming" = 2, "engineering" = 1, "bluespace" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/receiver
category = list("Subspace Telecomms")
/datum/design/subspace_crystal
name = "Ansible Crystal"
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
id = "s-crystal"
req_tech = list("magnets" = 2, "materials" = 2, "bluespace" = 1)
build_type = PROTOLATHE
materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/crystal
category = list("Stock Parts")
/datum/design/hyperwave_filter
name = "Hyperwave Filter"
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
id = "s-filter"
req_tech = list("programming" = 2, "magnets" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 40, "$silver" = 10)
build_path = /obj/item/weapon/stock_parts/subspace/filter
category = list("Stock Parts")
/datum/design/subspace_amplifier
name = "Subspace Amplifier"
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
id = "s-amplifier"
req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
build_type = PROTOLATHE
materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15)
build_path = /obj/item/weapon/stock_parts/subspace/amplifier
category = list("Stock Parts")
/datum/design/subspace_analyzer
name = "Subspace Analyzer"
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
id = "s-analyzer"
req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
build_type = PROTOLATHE
materials = list("$metal" = 10, "$gold" = 15)
build_path = /obj/item/weapon/stock_parts/subspace/analyzer
category = list("Stock Parts")
/datum/design/subspace_ansible
name = "Subspace Ansible"
desc = "A compact module capable of sensing extradimensional activity."
id = "s-ansible"
req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2, "bluespace" = 1)
build_type = PROTOLATHE
materials = list("$metal" = 80, "$silver" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/ansible
category = list("Stock Parts")
/datum/design/subspace_transmitter
name = "Subspace Transmitter"
desc = "A large piece of equipment used to open a window into the subspace dimension."
id = "s-transmitter"
req_tech = list("magnets" = 3, "materials" = 3, "bluespace" = 2)
build_type = PROTOLATHE
materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15)
build_path = /obj/item/weapon/stock_parts/subspace/transmitter
category = list("Stock Parts")
/datum/design/subspace_treatment
name = "Subspace Treatment Disk"
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
id = "s-treatment"
req_tech = list("programming" = 2, "magnets" = 1, "materials" = 2, "bluespace" = 1)
build_type = PROTOLATHE
materials = list("$metal" = 10, "$silver" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/treatment
category = list("Stock Parts")
@@ -0,0 +1,186 @@
/////////////////////////////////////////
/////////////////Weapons/////////////////
/////////////////////////////////////////
/datum/design/nuclear_gun
name = "Advanced Energy Gun"
desc = "An energy gun with an experimental miniaturized reactor."
id = "nuclear_gun"
req_tech = list("combat" = 3, "materials" = 5, "powerstorage" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 2000)
reliability_base = 76
build_path = /obj/item/weapon/gun/energy/gun/nuclear
locked = 1
category = list("Weapons")
/datum/design/decloner
name = "Decloner"
desc = "Your opponent will bubble into a messy pile of goop."
id = "decloner"
req_tech = list("combat" = 6, "materials" = 7, "biotech" = 5, "powerstorage" = 6)
build_type = PROTOLATHE
materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40)
build_path = /obj/item/weapon/gun/energy/decloner
locked = 1
category = list("Weapons")
/datum/design/largecrossbow
name = "Energy Crossbow"
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
id = "largecrossbow"
req_tech = list("combat" = 5, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 1500, "$uranium" = 1500, "$silver" = 1500)
build_path = /obj/item/weapon/gun/energy/crossbow/largecrossbow
locked = 1
category = list("Weapons")
/datum/design/flora_gun
name = "Floral Somatoray"
desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life."
id = "flora_gun"
req_tech = list("materials" = 2, "biotech" = 3, "powerstorage" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$glass" = 500, "radium" = 20)
build_path = /obj/item/weapon/gun/energy/floragun
category = list("Weapons")
/datum/design/ionrifle
name = "Ion Rifle"
desc = "How to dismantle a cyborg : The gun."
id = "ionrifle"
req_tech = list("combat" = 5, "materials" = 4, "magnets" = 4)
build_type = PROTOLATHE
materials = list("$silver" = 4000, "$metal" = 6000, "$uranium" = 1000)
build_path = /obj/item/weapon/gun/energy/ionrifle
locked = 1
category = list("Weapons")
/datum/design/large_grenade
name = "Large Grenade"
desc = "A grenade that affects a larger area and use larger containers."
id = "large_Grenade"
req_tech = list("combat" = 3, "materials" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 3000)
reliability_base = 79
build_path = /obj/item/weapon/grenade/chem_grenade/large
category = list("Weapons")
/datum/design/lasercannon
name = "Laser Cannon"
desc = "A heavy duty laser cannon."
id = "lasercannon"
req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 10000, "$glass" = 2000, "$diamond" = 2000)
build_path = /obj/item/weapon/gun/energy/lasercannon
locked = 1
category = list("Weapons")
/datum/design/plasmapistol
name = "Plasma Pistol"
desc = "A specialized firearm designed to fire lethal bolts of toxins."
id = "ppistol"
req_tech = list("combat" = 5, "plasmatech" = 4)
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 1000, "$plasma" = 3000)
build_path = /obj/item/weapon/gun/energy/toxgun
locked = 1
category = list("Weapons")
/datum/design/smg
name = "Prototype Submachine Gun"
desc = "A prototype weapon made using lightweight materials on a traditional frame, designed to fire standard 9mm rounds."
id = "smg"
req_tech = list("combat" = 4, "materials" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000)
build_path = /obj/item/weapon/gun/projectile/automatic
locked = 1
category = list("Weapons")
/datum/design/mag_smg
name = "Prototype Submachine Gun Magazine (9mm)"
desc = "A 20-round magazine for the prototype submachine gun."
id = "mag_smg"
req_tech = list("combat" = 4, "materials" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 2000)
build_path = /obj/item/ammo_box/magazine/smgm9mm
category = list("Weapons")
/datum/design/rapidsyringe
name = "Rapid Syringe Gun"
desc = "A gun that fires many syringes."
id = "rapidsyringe"
req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 1000)
build_path = /obj/item/weapon/gun/syringe/rapidsyringe
locked = 1
category = list("Weapons")
/datum/design/stunshell
name = "Stun Shell"
desc = "A stunning shell for a shotgun."
id = "stunshell"
req_tech = list("combat" = 3, "materials" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 200)
build_path = /obj/item/ammo_casing/shotgun/stunslug
category = list("Weapons")
/datum/design/stunrevolver
name = "Stun Revolver"
desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder. The stun cartridges can be recharged using a conventional energy weapon recharger."
id = "stunrevolver"
req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 4000)
build_path = /obj/item/weapon/gun/energy/stunrevolver
locked = 1
category = list("Weapons")
/datum/design/temp_gun
name = "Temperature Gun"
desc = "A gun that shoots temperature bullet energy things to change temperature."//Change it if you want
id = "temp_gun"
req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000)
build_path = /obj/item/weapon/gun/energy/temperature
locked = 1
category = list("Weapons")
/datum/design/suppressor
name = "Universal Suppressor"
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
id = "suppressor"
req_tech = list("combat" = 6, "engineering" = 5, "syndicate" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$silver" = 500)
build_path = /obj/item/weapon/suppressor
category = list("Weapons")
/datum/design/techshell
name = "Unloaded Technological Shotshell"
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
id = "techshotshell"
req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 4, "magnets" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 1000, "$glass" = 200, "$silver" = 300)
build_path = /obj/item/ammo_casing/shotgun/techshell
category = list("Weapons")
/datum/design/xray
name = "Xray Laser Gun"
desc = "Not quite as menacing as it sounds"
id = "xray"
req_tech = list("combat" = 6, "materials" = 5, "biotech" = 5, "powerstorage" = 4)
build_type = PROTOLATHE
materials = list("$gold" = 5000,"$uranium" = 10000, "$metal" = 4000)
build_path = /obj/item/weapon/gun/energy/xray
locked = 1
category = list("Weapons")
+23 -48
View File
@@ -9,6 +9,7 @@ Note: Must be placed within 3 tiles of the R&D Console
*/
/obj/machinery/r_n_d/destructive_analyzer
name = "Destructive Analyzer"
desc = "Learn science by destroying things!"
icon_state = "d_analyzer"
var/obj/item/weapon/loaded_item = null
var/decon_mod = 0
@@ -16,10 +17,10 @@ Note: Must be placed within 3 tiles of the R&D Console
/obj/machinery/r_n_d/destructive_analyzer/New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/destructive_analyzer(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/circuitboard/destructive_analyzer(null)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(null)
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
RefreshParts()
/obj/machinery/r_n_d/destructive_analyzer/RefreshParts()
@@ -28,9 +29,6 @@ Note: Must be placed within 3 tiles of the R&D Console
T += S.rating
decon_mod = T
/obj/machinery/r_n_d/destructive_analyzer/meteorhit()
del(src)
return
/obj/machinery/r_n_d/destructive_analyzer/proc/ConvertReqString2List(var/list/source_list)
var/list/temp_list = params2list(source_list)
@@ -39,68 +37,45 @@ Note: Must be placed within 3 tiles of the R&D Console
return temp_list
/obj/machinery/r_n_d/destructive_analyzer/attackby(var/obj/O as obj, var/mob/user as mob)
/obj/machinery/r_n_d/destructive_analyzer/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (shocked)
shock(user,50)
if (istype(O, /obj/item/weapon/screwdriver))
if (default_deconstruction_screwdriver(user, "d_analyzer_t", "d_analyzer", O))
if(linked_console)
linked_console.linked_destroy = null
linked_console = null
return 1
if (default_deconstruction_screwdriver(user, "d_analyzer_t", "d_analyzer", O))
if(linked_console)
linked_console.linked_destroy = null
linked_console = null
return
if(exchange_parts(user, O))
return 1
if (panel_open)
if(istype(O, /obj/item/weapon/crowbar))
default_deconstruction_crowbar(O)
return 1
else
user << "\red You can't load the [src.name] while it's opened."
return 1
return
default_deconstruction_crowbar(O)
if (disabled)
return
if (!linked_console)
user << "\red The protolathe must be linked to an R&D console first!"
user << "<span class='warning'>The [src.name] must be linked to an R&D console first!</span>"
return
if (busy)
user << "\red The protolathe is busy right now."
user << "<span class='warning'>The [src.name] is busy right now.</span>"
return
if (istype(O, /obj/item) && !loaded_item)
if(isrobot(user)) //Don't put your module items in there!
return
if(!O.origin_tech)
user << "\red This doesn't seem to have a tech origin!"
user << "<span class='warning'>This doesn't seem to have a tech origin!</span>"
return
var/list/temp_tech = ConvertReqString2List(O.origin_tech)
if (temp_tech.len == 0)
user << "\red You cannot deconstruct this item!"
user << "<span class='warning'>You cannot deconstruct this item!</span>"
return
if(O.reliability < 90 && O.crit_fail == 0)
usr << "\red Item is neither reliable enough or broken enough to learn from."
if(!user.drop_item())
user << "<span class='warning'>\The [O] is stuck to your hand, you cannot put it in the [src.name]!</span>"
return
busy = 1
loaded_item = O
user.drop_item()
O.loc = src
user << "\blue You add the [O.name] to the machine!"
user << "<span class='notice'>You add the [O.name] to the [src.name]!</span>"
flick("d_analyzer_la", src)
spawn(10)
icon_state = "d_analyzer_l"
busy = 0
if(exchange_parts(user, O))
return
return
//For testing purposes only.
/*/obj/item/weapon/deconstruction_test
name = "Test Item"
desc = "WTF?"
icon = 'icons/obj/weapons.dmi'
icon_state = "d20"
g_amt = 5000
m_amt = 5000
origin_tech = "materials=5;plasmatech=5;syndicate=5;programming=9"*/
+97 -74
View File
@@ -9,12 +9,12 @@ Note: Must be placed west/left of and R&D console to function.
*/
/obj/machinery/r_n_d/protolathe
name = "Protolathe"
desc = "Converts raw materials into useful objects."
icon_state = "protolathe"
flags = OPENCONTAINER
var/max_material_storage = 100000 //All this could probably be done better with a list but meh.
var/m_amount = 0.0
var/plasteel_amount = 0.0
var/g_amount = 0.0
var/gold_amount = 0.0
var/silver_amount = 0.0
@@ -24,6 +24,21 @@ Note: Must be placed west/left of and R&D console to function.
var/clown_amount = 0.0
var/efficiency_coeff
var/list/categories = list(
"Bluespace",
"Communication",
"Equipment",
"Janitorial",
"Medical",
"Mining",
"Miscellaneous",
"Power",
"Stock Parts",
"Weapons"
)
reagents = new()
/obj/machinery/r_n_d/protolathe/New()
..()
@@ -37,17 +52,15 @@ Note: Must be placed west/left of and R&D console to function.
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
RefreshParts()
reagents.my_atom = src
/obj/machinery/r_n_d/protolathe/proc/TotalMaterials() //returns the total of all the stored materials. Makes code neater.
return m_amount + g_amount + gold_amount + silver_amount + plasma_amount + uranium_amount + diamond_amount + clown_amount
/obj/machinery/r_n_d/protolathe/RefreshParts()
var/T = 0
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
T += G.reagents.maximum_volume
var/datum/reagents/R = new/datum/reagents(T) //Holder for the reagents used as materials.
reagents = R
R.my_atom = src
T = 0
G.reagents.trans_to(src, G.reagents.total_volume)
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
T += M.rating
max_material_storage = T * 75000
@@ -56,20 +69,42 @@ Note: Must be placed west/left of and R&D console to function.
T += (M.rating/3)
efficiency_coeff = max(T, 1)
/obj/machinery/r_n_d/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(exchange_parts(user, O))
return 1
/obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, var/M) // now returns how many times the item can be built with the material
var/A = 0
switch(M)
if("$metal")
A = m_amount
if("$glass")
A = g_amount
if("$gold")
A = gold_amount
if("$silver")
A = silver_amount
if("$plasma")
A = plasma_amount
if("$uranium")
A = uranium_amount
if("$diamond")
A = diamond_amount
if("$bananium")
A = clown_amount
else
A = reagents.get_reagent_amount(M)
A = A / max(1, (being_built.materials[M]/efficiency_coeff))
return A
/obj/machinery/r_n_d/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (shocked)
shock(user,50)
if (istype(O, /obj/item/weapon/screwdriver))
if (default_deconstruction_screwdriver(user, "protolathe_t", "protolathe", O))
if(linked_console)
linked_console.linked_imprinter = null
linked_console = null
return 1
shock(user,50)
if (default_deconstruction_screwdriver(user, "protolathe_t", "protolathe", O))
if(linked_console)
linked_console.linked_lathe = null
linked_console = null
return
if(exchange_parts(user, O))
return
if (panel_open)
if(istype(O, /obj/item/weapon/crowbar))
for(var/obj/I in component_parts)
@@ -78,106 +113,94 @@ Note: Must be placed west/left of and R&D console to function.
if(I.reliability != 100 && crit_fail)
I.crit_fail = 1
I.loc = src.loc
if(m_amount >= 3750)
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
reagents.trans_to(G, G.reagents.maximum_volume)
if(m_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc)
G.amount = round(m_amount / G.perunit)
if(g_amount >= 3750)
if(g_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(g_amount / G.perunit)
if(plasteel_amount >= 2000)
var/obj/item/stack/sheet/plasteel/G = new /obj/item/stack/sheet/plasteel(src.loc)
G.amount = round(plasteel_amount / G.perunit)
if(plasma_amount >= 2000)
if(plasma_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma(src.loc)
G.amount = round(plasma_amount / G.perunit)
if(silver_amount >= 2000)
if(silver_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver(src.loc)
G.amount = round(silver_amount / G.perunit)
if(gold_amount >= 2000)
if(gold_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc)
G.amount = round(gold_amount / G.perunit)
if(uranium_amount >= 2000)
if(uranium_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium(src.loc)
G.amount = round(uranium_amount / G.perunit)
if(diamond_amount >= 2000)
if(diamond_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc)
G.amount = round(diamond_amount / G.perunit)
if(clown_amount >= 2000)
if(clown_amount >= MINERAL_MATERIAL_AMOUNT)
var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown(src.loc)
G.amount = round(clown_amount / G.perunit)
default_deconstruction_crowbar(O)
return 1
else
user << "\red You can't load the [src.name] while it's opened."
user << "<span class='warning'>You can't load the [src.name] while it's opened.</span>"
return 1
if (disabled)
return
if (!linked_console)
user << "\The protolathe must be linked to an R&D console first!"
user << "<span class='warning'> The [src.name] must be linked to an R&D console first!</span>"
return 1
if (busy)
user << "<span class='warning'>The [src.name] is busy. Please wait for completion of previous operation.</span>"
return 1
if (O.is_open_container())
return
if (busy)
user << "\red The protolathe is busy. Please wait for completion of previous operation."
return 1
if (!istype(O, /obj/item/stack/sheet))
user << "\red You cannot insert this item into the protolathe!"
if (!istype(O, /obj/item/stack/sheet) || istype(O, /obj/item/stack/sheet/wood))
user << "<span class='warning'>You cannot insert this item into the [src.name]!</span>"
return 1
if (stat)
return 1
if(istype(O,/obj/item/stack/sheet))
var/obj/item/stack/sheet/S = O
if (TotalMaterials() + S.perunit > max_material_storage)
user << "\red The protolathe's material bin is full. Please remove material before adding more."
user << "<span class='warning'>The [src.name]'s material bin is full. Please remove material before adding more.</span>"
return 1
var/obj/item/stack/sheet/stack = O
var/amount = round(input("How many sheets do you want to add?") as num)//No decimals
if(!O)
return
if(amount < 0)//No negative numbers
amount = 0
if(amount == 0)
if(!stack || stack.amount <= 0 || amount <= 0)
return
if(amount > stack.amount)
amount = stack.amount
if(max_material_storage - TotalMaterials() < (amount*stack.perunit))//Can't overfill
amount = min(stack.amount, round((max_material_storage-TotalMaterials())/stack.perunit))
icon_state = "protolathe"
busy = 1
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10)))
user << "<span class='notice'>You add [amount] sheets to the [src.name].</span>"
icon_state = "protolathe"
if(istype(stack, /obj/item/stack/sheet/metal))
m_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/glass))
g_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/gold))
gold_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/silver))
silver_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/plasma))
plasma_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/uranium))
uranium_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/diamond))
diamond_amount += amount * MINERAL_MATERIAL_AMOUNT
else if(istype(stack, /obj/item/stack/sheet/mineral/clown))
clown_amount += amount * MINERAL_MATERIAL_AMOUNT
stack.use(amount)
busy = 0
src.updateUsrDialog()
src.overlays += "protolathe_[stack.name]"
sleep(10)
src.overlays -= "protolathe_[stack.name]"
icon_state = "protolathe"
busy = 1
use_power(max(1000, (3750*amount/10)))
var/stacktype = stack.type
stack.use(amount)
if (do_after(user, 16))
user << "\blue You add [amount] sheets to the [src.name]."
icon_state = "protolathe"
switch(stacktype)
if(/obj/item/stack/sheet/metal)
m_amount += amount * 3750
if(/obj/item/stack/sheet/glass)
g_amount += amount * 3750
if(/obj/item/stack/sheet/plasteel)
plasteel_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/gold)
gold_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/silver)
silver_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/plasma)
plasma_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/uranium)
uranium_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/diamond)
diamond_amount += amount * 2000
if(/obj/item/stack/sheet/mineral/clown)
clown_amount += amount * 2000
else
new stacktype(src.loc, amount)
busy = 0
src.updateUsrDialog()
return
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -17,7 +17,6 @@
var/hack_wire
var/disable_wire
var/shock_wire
var/opened = 0
var/obj/machinery/computer/rdconsole/linked_console
/obj/machinery/r_n_d/New()
@@ -53,7 +52,7 @@
/obj/machinery/r_n_d/attack_hand(mob/user as mob)
if (shocked)
shock(user,50)
if(opened)
if(panel_open)
var/dat as text
dat += "[src.name] Wires:<BR>"
for(var/wire in src.wires)
+57 -45
View File
@@ -82,34 +82,11 @@ research holder datum.
/datum/research/proc/DesignHasReqs(var/datum/design/D)
if(D.req_tech.len == 0)
return 1
var/matches = 0
var/list/k_tech = list()
for(var/datum/tech/known in known_tech)
k_tech[known.id] = known.level
for(var/req in D.req_tech)
if(!isnull(k_tech[req]) && k_tech[req] >= D.req_tech[req])
matches++
if(matches == D.req_tech.len)
return 1
else
return 0
/*
//Checks to see if design has all the required pre-reqs.
//Input: datum/design; Output: 0/1 (false/true)
/datum/research/proc/DesignHasReqs(var/datum/design/D)
if(D.req_tech.len == 0)
return 1
var/matches = 0
for(var/req in D.req_tech)
for(var/datum/tech/known in known_tech)
if((req == known.id) && (known.level >= D.req_tech[req]))
matches++
break
if(matches == D.req_tech.len)
return 1
else
return 0
*/
for(var/datum/tech/T in known_tech)
if((D.req_tech[T.id]) && (T.level < D.req_tech[T.id]))
return 0
return 1
//Adds a tech to known_tech list. Checks to make sure there aren't duplicates and updates existing tech's levels if needed.
//Input: datum/tech; Output: Null
/datum/research/proc/AddTech2Known(var/datum/tech/T)
@@ -153,15 +130,36 @@ research holder datum.
if(KT.level <= level) KT.level = max((KT.level + 1), (level - 1))
return
/datum/research/proc/UpdateDesign(var/path)
for(var/datum/design/KD in known_designs)
if(KD.build_path == path)
KD.reliability_mod += rand(1,2)
break
return
/datum/research/proc/UpdateDesigns(var/obj/item/I, var/list/temp_tech)
for(var/T in temp_tech)
if(temp_tech[T] - 1 >= known_tech[T])
for(var/datum/design/D in known_designs)
if(D.req_tech[T])
D.reliability = min(100, D.reliability + 1)
if(D.build_path == I.type)
D.reliability = min(100, D.reliability + rand(1,3))
if(I.crit_fail)
D.reliability = min(100, D.reliability + rand(3, 5))
/datum/research/proc/FindDesignByID(var/id)
for(var/datum/design/D in known_designs)
if(D.id == id)
return D
//Autolathe files
/datum/research/autolathe/New()
for(var/T in (typesof(/datum/tech) - /datum/tech))
possible_tech += new T(src)
for(var/path in typesof(/datum/design) - /datum/design)
var/datum/design/D = new path(src)
possible_designs += D
if((D.build_type & AUTOLATHE) && ("initial" in D.category)) //autolathe starts without hacked designs
AddDesign2Known(D)
/datum/research/autolathe/AddDesign2Known(var/datum/design/D)
if(!(D.build_type & AUTOLATHE))
return
..()
/***************************************************************
** Technology Datums **
@@ -183,37 +181,37 @@ datum/tech/materials
name = "Materials Research"
desc = "Development of new and improved materials."
id = "materials"
max_level=7
max_level = 7
datum/tech/engineering
name = "Engineering Research"
desc = "Development of new and improved engineering parts and."
id = "engineering"
max_level=5
max_level = 5
datum/tech/plasmatech
name = "Plasma Research"
desc = "Research into the mysterious substance colloqually known as 'plasma'."
id = "plasmatech"
max_level=4
max_level = 4
datum/tech/powerstorage
name = "Power Manipulation Technology"
desc = "The various technologies behind the storage and generation of electicity."
id = "powerstorage"
max_level=6
max_level = 6
datum/tech/bluespace
name = "'Blue-space' Research"
desc = "Research into the sub-reality known as 'blue-space'"
id = "bluespace"
max_level=6
max_level = 6
datum/tech/biotech
name = "Biological Technology"
desc = "Research into the deeper mysteries of life and organic substances."
id = "biotech"
max_level=5
max_level = 5
datum/tech/combat
name = "Combat Systems Research"
@@ -225,19 +223,19 @@ datum/tech/magnets
name = "Electromagnetic Spectrum Research"
desc = "Research into the electromagnetic spectrum. No clue how they actually work, though."
id = "magnets"
max_level=5
max_level = 5
datum/tech/programming
name = "Data Theory Research"
desc = "The development of new computer and artificial intelligence and data storage systems."
id = "programming"
max_level=5
max_level = 5
datum/tech/syndicate
name = "Illegal Technologies Research"
desc = "The study of technologies that violate standard Nanotrasen regulations."
id = "syndicate"
max_level=0 // Don't count towards maxed research, since it's illegal.
max_level = 0 // Don't count towards maxed research, since it's illegal.
/*
datum/tech/arcane
@@ -266,7 +264,6 @@ datum/tech/robotics
req_tech = list("materials" = 3, "programming" = 3)
*/
/obj/item/weapon/disk/tech_disk
name = "Technology Disk"
desc = "A disk for storing technology data for further research."
@@ -279,5 +276,20 @@ datum/tech/robotics
var/datum/tech/stored
/obj/item/weapon/disk/tech_disk/New()
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
/obj/item/weapon/disk/design_disk
name = "Component Design Disk"
desc = "A disk for storing device design data for construction in lathes."
icon = 'icons/obj/cloning.dmi'
icon_state = "datadisk2"
item_state = "card-id"
w_class = 1.0
m_amt = 30
g_amt = 10
var/datum/design/blueprint
/obj/item/weapon/disk/design_disk/New()
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
+5 -5
View File
@@ -1,28 +1,28 @@
/obj/machinery/computer/shuttle_control/mining
name = "mining shuttle console"
name = "Mining Shuttle Console"
shuttle_tag = "Mining"
req_access = list(access_mining)
circuit = /obj/item/weapon/circuitboard/mining_shuttle
/obj/machinery/computer/shuttle_control/engineering
name = "engineering shuttle console"
name = "Engineering Shuttle Console"
shuttle_tag = "Engineering"
req_one_access_txt = "10;24"
circuit = /obj/item/weapon/circuitboard/engineering_shuttle
/obj/machinery/computer/shuttle_control/research
name = "research shuttle console"
name = "Research Shuttle Console"
shuttle_tag = "Research"
req_access = list(access_xenoarch)
circuit = /obj/item/weapon/circuitboard/research_shuttle
/obj/machinery/computer/shuttle_control/labor_camp
name = "labor camp shuttle console"
name = "Labor Camp Shuttle Console"
shuttle_tag = "Labor"
req_access = list(access_brig)
/obj/machinery/computer/shuttle_control/labor_camp/one_way
name = "prisoner shuttle console"
name = "Prisoner Shuttle Console"
req_access = list()
/obj/machinery/computer/shuttle_control/labor_camp/one_way/launch()
+10 -1
View File
@@ -921,4 +921,13 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF")
#define BACKGROUND_ENABLED 0 // The default value for all uses of set background. Set background can cause gradual lag and is recommended you only turn this on if necessary.
#define BACKGROUND_ENABLED 0 // The default value for all uses of set background. Set background can cause gradual lag and is recommended you only turn this on if necessary.
#define MINERAL_MATERIAL_AMOUNT 2000 //The amount of materials you get from a sheet of mineral like iron/diamond/glass etc
#define IMPRINTER 1 //For circuits. Uses glass/chemicals.
#define PROTOLATHE 2 //New stuff. Uses glass/metal/chemicals
#define AUTOLATHE 4 //Uses glass/metal only.
#define CRAFTLATHE 8 //Uses fuck if I know. For use eventually.
#define MECHFAB 16 //Remember, objects utilising this flag should have construction_time and construction_cost vars.
//Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 66 KiB

+387 -391
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
-18
View File
@@ -1,18 +0,0 @@
<!--
Title: Camera Monitor UI
Used In File(s): \code\game\machinery\computer\camera.dm
-->
<div class="item">
<h2>Networks</h2>
Please select the networks you'd like this console to monitor.
{{if data.emagged}}
<div class="bad">WARNING: Unauthorized access detected.</div>
{{/if}}
<div class="item">
{{for data.networks}}
{{:helper.link(value.name, value.active ? 'minus' : 'plus', { 'activate' : value.name, 'active' : value.active }, '', value.active ? 'linkOn' : '')}}
{{empty}}
<div class="bad">No accessible networks were found. Please make sure your ID has sufficient access.</div>
{{/for}}
</div>
</div>
+37
View File
@@ -0,0 +1,37 @@
<!--
Title: Security Camera Console (Main content)
Used In File(s): \code\game\machinery\computer\camera.dm
-->
{{:helper.link('Show Map', 'pin-s', {'showMap' : 1})}}
{{:helper.link('Reset', 'refresh', {'reset' : 1})}}
<div class='item'>
<div class='itemLabel'>Current Camera: </div>
{{if data.current}}
<div class='itemContent'><b>{{:data.current.name}}</b></div>
{{else}}
<div class='itemContent'>None</div>
{{/if}}
</div>
{{for data.cameras}}
{{if data.current && value.name == data.current.name}}
{{:helper.link(value.name, '', {'switchTo' : value.camera}, 'selected')}}
{{else value.deact}}
{{:helper.link(value.name + " (deactivated)", '', {}, 'inactive')}}
{{else}}
{{:helper.link(value.name, '', {'switchTo' : value.camera})}}
{{/if}}
{{/for}}
<div class="item">
<h2>Networks</h2>
Please select the networks you'd like this console to monitor.
{{if data.emagged}}
<div class="bad">WARNING: Unauthorized access detected.</div>
{{/if}}
<div class="item">
{{for data.networks}}
{{:helper.link(value.name, value.active ? 'minus' : 'plus', { 'activate' : value.name, 'active' : value.active }, '', value.active ? 'linkOn' : '')}}
{{empty}}
<div class="bad">No accessible networks were found. Please make sure your ID has sufficient access.</div>
{{/for}}
</div>
</div>
@@ -0,0 +1,20 @@
<!--
Title: Security Camera Console (Map content)
Used In File(s): \code\game\machinery\computer\camera.dm
-->
{{for data.cameras}}
{{if value.z == 1}}
<div class="mapIcon mapIcon16" style="left: {{:(value.x)}}px; bottom: {{:(value.y - 1)}}px;">
{{if data.current && value.name == data.current.name}}
{{:helper.link("#", '', {'switchTo' : value.camera}, 'selected')}}
{{else value.deact}}
{{:helper.link('#', '', {}, 'inactive')}}
{{else}}
{{:helper.link("#", '', {'switchTo' : value.camera})}}
{{/if}}
<div class="tooltip hidden">
{{:value.name}}
</div>
</div>
{{/if}}
{{/for}}
+23
View File
@@ -0,0 +1,23 @@
<!--
Title: Security Camera Console (Map header)
Used In File(s): \code\game\machinery\computer\camera.dm
-->
{{:helper.link('Show Camera List', 'script', {'showMap' : 0})}}
{{:helper.link('Reset', 'refresh', {'reset' : 1})}}
<div style="float:left;">
<div class='item'>
<div class='itemLabel'>Current Camera:&nbsp;</div>
{{if data.current}}
<div class='itemContent'><b>{{:data.current.name}}</b></div>
{{else}}
<div class='itemContent'>None</div>
{{/if}}
</div>
</div>
<div style="float: right; width: 240px;">
<span style="float: left;">Zoom Level:&nbsp;</span>
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="6">x1.5</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="8">x2.0</div>
<div unselectable="on" class="link zoomLink" data-zoom-level="12">x2.5</div>
</div>
+13
View File
@@ -223,6 +223,7 @@
#include "code\datums\wires\airlock.dm"
#include "code\datums\wires\alarm.dm"
#include "code\datums\wires\apc.dm"
#include "code\datums\wires\autolathe.dm"
#include "code\datums\wires\camera.dm"
#include "code\datums\wires\explosive.dm"
#include "code\datums\wires\mulebot.dm"
@@ -1242,6 +1243,7 @@
#include "code\modules\mob\living\simple_animal\friendly\corgi.dm"
#include "code\modules\mob\living\simple_animal\friendly\crab.dm"
#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm"
#include "code\modules\mob\living\simple_animal\friendly\fox.dm"
#include "code\modules\mob\living\simple_animal\friendly\lizard.dm"
#include "code\modules\mob\living\simple_animal\friendly\mouse.dm"
#include "code\modules\mob\living\simple_animal\friendly\slime.dm"
@@ -1425,6 +1427,17 @@
#include "code\modules\research\rdmachines.dm"
#include "code\modules\research\research.dm"
#include "code\modules\research\server.dm"
#include "code\modules\research\designs\AI_module_designs.dm"
#include "code\modules\research\designs\autolathe_designs.dm"
#include "code\modules\research\designs\comp_board_designs.dm"
#include "code\modules\research\designs\machine_designs.dm"
#include "code\modules\research\designs\mecha_designs.dm"
#include "code\modules\research\designs\mechfabricator_designs.dm"
#include "code\modules\research\designs\medical_designs.dm"
#include "code\modules\research\designs\power_designs.dm"
#include "code\modules\research\designs\stock_parts_designs.dm"
#include "code\modules\research\designs\telecomms_designs.dm"
#include "code\modules\research\designs\weapon_designs.dm"
#include "code\modules\research\xenoarchaeology\areas.dm"
#include "code\modules\research\xenoarchaeology\chemistry.dm"
#include "code\modules\research\xenoarchaeology\geosample.dm"