Mad Science Update:

- Adjusted constructable frame so that parts actually affect the end result (if you use better then standard parts). Also, you can now use 5 metal to make a machine frame. Process is 5 metal > wire > Circuit Board > various parts (in any order) > Screwdriver. Deconstructing a machine made in this way, the order is screwdriver (to open panel) > crowbar (to pop parts out) > wire cutters > Wrench
- Autolathe, Protolathe, Circuit Imprinter, and Destructive analyzer all are affected by what parts you make them with, can be built, and can be deconstructed now.
- Origin Tech var changed from a list to a string to save memory/processing. It's not a problem right now, but it could be one in the future.
- Item paths for stock parts changed around a bit to make typing easier.
- A lot of items have been given an origin_tech var and as such, a lot more things can be analyzed to further SCIENCE! Try and find them :D
- R&D Lab added to that semi-empty area in the north part of toxins. R&D Console, Destructive Analyzer, Protolathe, and Circuit Imprinter added along with all the other tools and (basic) materials required. Very little "new" stuff is available but you can still unlock existing tech (such as AI modules or circuit boards) so  that you can make more copies of them.
- Changelog updated.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1059 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
morikou@gmail.com
2011-02-18 04:41:56 +00:00
parent a3aeb0bae1
commit 8f26085da5
22 changed files with 5512 additions and 4903 deletions

View File

@@ -1490,36 +1490,43 @@ proc/move_mining_shuttle()
name = "Uranium ore" name = "Uranium ore"
icon = 'Mining.dmi' icon = 'Mining.dmi'
icon_state = "Uranium ore" icon_state = "Uranium ore"
origin_tech = "materials=5"
/obj/item/weapon/ore/iron /obj/item/weapon/ore/iron
name = "Iron ore" name = "Iron ore"
icon = 'Mining.dmi' icon = 'Mining.dmi'
icon_state = "Iron ore" icon_state = "Iron ore"
origin_tech = "materials=1"
/obj/item/weapon/ore/plasma /obj/item/weapon/ore/plasma
name = "Plasma ore" name = "Plasma ore"
icon = 'Mining.dmi' icon = 'Mining.dmi'
icon_state = "Plasma ore" icon_state = "Plasma ore"
origin_tech = "materials=2"
/obj/item/weapon/ore/silver /obj/item/weapon/ore/silver
name = "Silver ore" name = "Silver ore"
icon = 'Mining.dmi' icon = 'Mining.dmi'
icon_state = "Silver ore" icon_state = "Silver ore"
origin_tech = "materials=3"
/obj/item/weapon/ore/gold /obj/item/weapon/ore/gold
name = "Gold ore" name = "Gold ore"
icon = 'Mining.dmi' icon = 'Mining.dmi'
icon_state = "Gold ore" icon_state = "Gold ore"
origin_tech = "materials=4"
/obj/item/weapon/ore/diamond /obj/item/weapon/ore/diamond
name = "Diamond ore" name = "Diamond ore"
icon = 'Mining.dmi' icon = 'Mining.dmi'
icon_state = "Diamond ore" icon_state = "Diamond ore"
origin_tech = "materials=6"
/obj/item/weapon/ore/clown /obj/item/weapon/ore/clown
name = "Bananium ore" name = "Bananium ore"
icon = 'Mining.dmi' icon = 'Mining.dmi'
icon_state = "Clown ore" icon_state = "Clown ore"
origin_tech = "materials=4"
/obj/item/weapon/ore/slag /obj/item/weapon/ore/slag
name = "Slag" name = "Slag"
@@ -2810,11 +2817,11 @@ proc/move_mining_shuttle()
name = "gold" name = "gold"
icon_state = "sheet-gold" icon_state = "sheet-gold"
force = 5.0 force = 5.0
g_amt = 3750
throwforce = 5 throwforce = 5
w_class = 3.0 w_class = 3.0
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = "materials=4"
/obj/item/stack/sheet/gold/New() /obj/item/stack/sheet/gold/New()
pixel_x = rand(0,4)-4 pixel_x = rand(0,4)-4
@@ -2824,11 +2831,11 @@ proc/move_mining_shuttle()
name = "silver" name = "silver"
icon_state = "sheet-silver" icon_state = "sheet-silver"
force = 5.0 force = 5.0
g_amt = 3750
throwforce = 5 throwforce = 5
w_class = 3.0 w_class = 3.0
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = "materials=3"
/obj/item/stack/sheet/silver/New() /obj/item/stack/sheet/silver/New()
pixel_x = rand(0,4)-4 pixel_x = rand(0,4)-4
@@ -2838,11 +2845,10 @@ proc/move_mining_shuttle()
name = "diamond" name = "diamond"
icon_state = "sheet-diamond" icon_state = "sheet-diamond"
force = 5.0 force = 5.0
g_amt = 3750
throwforce = 5 throwforce = 5
w_class = 3.0 w_class = 3.0
throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = "materials=6"
/obj/item/stack/sheet/diamond/New() /obj/item/stack/sheet/diamond/New()
pixel_x = rand(0,4)-4 pixel_x = rand(0,4)-4
@@ -2852,23 +2858,23 @@ proc/move_mining_shuttle()
name = "solid plasma" name = "solid plasma"
icon_state = "sheet-plasma" icon_state = "sheet-plasma"
force = 5.0 force = 5.0
g_amt = 3750
throwforce = 5 throwforce = 5
w_class = 3.0 w_class = 3.0
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = "plasmatech=2;materials=2"
/obj/item/stack/sheet/clown /obj/item/stack/sheet/clown
name = "bananium" name = "bananium"
icon_state = "sheet-clown" icon_state = "sheet-clown"
force = 5.0 force = 5.0
g_amt = 3750
throwforce = 5 throwforce = 5
w_class = 3.0 w_class = 3.0
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = "materials=4"
/obj/item/stack/sheet/diamond/New() /obj/item/stack/sheet/clown/New()
pixel_x = rand(0,4)-4 pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4 pixel_y = rand(0,4)-4

View File

@@ -3,7 +3,7 @@
var/m_amt = 0 // metal var/m_amt = 0 // metal
var/g_amt = 0 // glass var/g_amt = 0 // glass
var/w_amt = 0 // waster amounts var/w_amt = 0 // waster amounts
var/list/origin_tech = null //Used by R&D to determine what research bonuses it grants. var/origin_tech = null //Used by R&D to determine what research bonuses it grants.
var/reliability = 100 //Used by SOME devices to determine how reliable they are. var/reliability = 100 //Used by SOME devices to determine how reliable they are.
var/crit_fail = 0 var/crit_fail = 0
var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj. var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj.
@@ -771,7 +771,7 @@
anchored = 1 anchored = 1
unacidable = 1//temporary until I decide whether the borg can be removed. -veyveyr unacidable = 1//temporary until I decide whether the borg can be removed. -veyveyr
obj/item/brain /obj/item/brain
name = "brain" name = "brain"
icon = 'surgery.dmi' icon = 'surgery.dmi'
icon_state = "brain2" icon_state = "brain2"
@@ -781,6 +781,7 @@ obj/item/brain
throwforce = 1.0 throwforce = 1.0
throw_speed = 3 throw_speed = 3
throw_range = 5 throw_range = 5
origin_tech = "biotech=3"
var/mob/living/carbon/human/owner = null var/mob/living/carbon/human/owner = null

View File

@@ -12,7 +12,9 @@
active_power_usage = 0 active_power_usage = 0
power_channel = EQUIP power_channel = EQUIP
//EQUIP,ENVIRON or LIGHT //EQUIP,ENVIRON or LIGHT
list/component_parts = null //list of all the parts used to build it, if made from certain kinds of frames.
uid uid
manual = 0
global global
gl_uid = 1 gl_uid = 1

View File

@@ -18,6 +18,7 @@
w_class = 4.0 w_class = 4.0
g_amt = 7500 g_amt = 7500
m_amt = 1000 m_amt = 1000
origin_tech = "materials=2"
/obj/item/weapon/match /obj/item/weapon/match
name = "Match" name = "Match"
@@ -27,6 +28,7 @@
var/lit = 0 var/lit = 0
var/smoketime = 5 var/smoketime = 5
w_class = 1.0 w_class = 1.0
origin_tech = "materials=1"
/obj/item/weapon/matchbox /obj/item/weapon/matchbox
name = "Matchbox" name = "Matchbox"
@@ -58,6 +60,7 @@
throw_range = 5 throw_range = 5
w_class = 3.0 w_class = 3.0
m_amt = 50000 m_amt = 50000
origin_tech = "materials=3"
var/datum/effects/system/spark_spread/spark_system var/datum/effects/system/spark_spread/spark_system
@@ -70,6 +73,7 @@
opacity = 0 opacity = 0
density = 0 density = 0
anchored = 0.0 anchored = 0.0
origin_tech = "materials=2"
m_amt = 30000 m_amt = 30000
g_amt = 15000 g_amt = 15000
@@ -159,6 +163,7 @@
throw_range = 20 throw_range = 20
m_amt = 30 m_amt = 30
g_amt = 20 g_amt = 20
origin_tech = "magnets=1"
/obj/item/weapon/axe /obj/item/weapon/axe
@@ -235,11 +240,13 @@
desc = "A pack designed to treat blunt-force trauma." desc = "A pack designed to treat blunt-force trauma."
icon_state = "brutepack" icon_state = "brutepack"
heal_brute = 60 heal_brute = 60
origin_tech = "biotech=1"
/obj/item/weapon/medical/ointment /obj/item/weapon/medical/ointment
name = "ointment" name = "ointment"
icon_state = "ointment" icon_state = "ointment"
heal_burn = 40 heal_burn = 40
origin_tech = "biotech=1"
/obj/item/weapon/c_tube /obj/item/weapon/c_tube
name = "cardboard tube" name = "cardboard tube"
@@ -256,6 +263,7 @@
var/last_pic = 1.0 var/last_pic = 1.0
item_state = "wrench" item_state = "wrench"
w_class = 2.0 w_class = 2.0
origin_tech = "magnets=1"
/obj/item/weapon/card /obj/item/weapon/card
name = "card" name = "card"
@@ -285,6 +293,7 @@
name = "cryptographic sequencer" name = "cryptographic sequencer"
icon_state = "emag" icon_state = "emag"
item_state = "card-id" item_state = "card-id"
origin_tech = "magnets=2;syndicate=2"
/obj/item/weapon/card/id /obj/item/weapon/card/id
name = "identification card" name = "identification card"
@@ -302,6 +311,7 @@
/obj/item/weapon/card/id/syndicate /obj/item/weapon/card/id/syndicate
name = "agent card" name = "agent card"
access = list(access_maint_tunnels) access = list(access_maint_tunnels)
origin_tech = "syndicate=2"
/obj/item/weapon/card/id/captains_spare /obj/item/weapon/card/id/captains_spare
name = "Captain's spare ID" name = "Captain's spare ID"
@@ -347,6 +357,7 @@
throw_speed = 2 throw_speed = 2
throw_range = 10 throw_range = 10
w_class = 2.0 w_class = 2.0
origin_tech = "magnets=3;syndicate=3"
#define MAXCOIL 30 #define MAXCOIL 30
/obj/item/weapon/cable_coil /obj/item/weapon/cable_coil
@@ -365,6 +376,7 @@
/obj/item/weapon/cable_coil/cut /obj/item/weapon/cable_coil/cut
icon = 'power.dmi' icon = 'power.dmi'
icon_state = "coil2" icon_state = "coil2"
origin_tech = "materials=1"
/obj/item/weapon/crowbar /obj/item/weapon/crowbar
name = "crowbar" name = "crowbar"
@@ -376,7 +388,7 @@
item_state = "wrench" item_state = "wrench"
w_class = 2.0 w_class = 2.0
m_amt = 50 m_amt = 50
/obj/item/weapon/crowbar/red /obj/item/weapon/crowbar/red
icon = 'items.dmi' icon = 'items.dmi'
icon_state = "red_crowbar" icon_state = "red_crowbar"
@@ -412,6 +424,7 @@
force = 10.0 force = 10.0
item_state = "fire_extinguisher" item_state = "fire_extinguisher"
m_amt = 90 m_amt = 90
origin_tech = "materials=1"
/obj/item/weapon/f_card /obj/item/weapon/f_card
name = "Finger Print Card" name = "Finger Print Card"
@@ -444,6 +457,7 @@
throw_speed = 4 throw_speed = 4
throw_range = 20 throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
origin_tech = "materials=2"
/obj/item/weapon/empgrenade /obj/item/weapon/empgrenade
desc = "It is set to detonate in 5 seconds." desc = "It is set to detonate in 5 seconds."
@@ -457,6 +471,7 @@
throw_speed = 4 throw_speed = 4
throw_range = 20 throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
origin_tech = "materials=2;magnets=3"
/obj/item/weapon/flasks /obj/item/weapon/flasks
name = "flask" name = "flask"
@@ -528,6 +543,7 @@
w_class = 2.0 w_class = 2.0
throw_speed = 4 throw_speed = 4
throw_range = 10 throw_range = 10
origin_tech = "combat=1"
/obj/item/weapon/gun/shotgun /obj/item/weapon/gun/shotgun
name = "shotgun" name = "shotgun"
@@ -541,6 +557,7 @@
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY | ONBACK flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY | ONBACK
var/pumped = 0 var/pumped = 0
shellsmax = 2 shellsmax = 2
origin_tech = "combat=2"
/obj/item/weapon/gun/shotgun/combat /obj/item/weapon/gun/shotgun/combat
name = "combat shotgun" name = "combat shotgun"
@@ -549,11 +566,13 @@
force = 12.0 force = 12.0
flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY // THERE IS NO COMBAT SHOTGUN BACK SPRITE. DON'T ADD ONBACK -- Callagan flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY // THERE IS NO COMBAT SHOTGUN BACK SPRITE. DON'T ADD ONBACK -- Callagan
shellsmax = 8 shellsmax = 8
origin_tech = "combat=3"
/obj/item/weapon/gun/energy /obj/item/weapon/gun/energy
name = "energy" name = "energy"
var/charges = 10.0 var/charges = 10.0
var/maximum_charges = 10.0 var/maximum_charges = 10.0
origin_tech = "combat=2;magnets=2"
/obj/item/weapon/gun/energy/taser_gun /obj/item/weapon/gun/energy/taser_gun
name = "taser gun" name = "taser gun"
@@ -566,6 +585,7 @@
charges = 4 charges = 4
maximum_charges = 4 maximum_charges = 4
m_amt = 2000 m_amt = 2000
origin_tech = "combat=2;magnets=2"
/obj/item/weapon/gun/energy/teleport_gun /obj/item/weapon/gun/energy/teleport_gun
name = "teleport gun" name = "teleport gun"
@@ -581,6 +601,7 @@
m_amt = 2000 m_amt = 2000
var/failchance = 5 var/failchance = 5
var/obj/item/target = null var/obj/item/target = null
origin_tech = "combat=2;magnets=2;bluespace=3"
/obj/item/weapon/gun/energy/crossbow // Laaazy /obj/item/weapon/gun/energy/crossbow // Laaazy
name = "mini energy-crossbow" name = "mini energy-crossbow"
@@ -594,6 +615,7 @@
charges = 3 charges = 3
maximum_charges = 3 maximum_charges = 3
m_amt = 2000 m_amt = 2000
origin_tech = "combat=2;magnets=2;syndicate=2"
/obj/item/weapon/gun/energy/laser_gun /obj/item/weapon/gun/energy/laser_gun
name = "laser gun" name = "laser gun"
@@ -603,6 +625,7 @@
throw_range = 10 throw_range = 10
force = 7.0 force = 7.0
m_amt = 2000 m_amt = 2000
origin_tech = "combat=3;magnets=2"
/obj/item/weapon/gun/energy/laser_gun/captain /obj/item/weapon/gun/energy/laser_gun/captain
icon_state = "caplaser" icon_state = "caplaser"
@@ -619,11 +642,13 @@
throw_range = 10 throw_range = 10
force = 24.0 force = 24.0
m_amt = 2000 m_amt = 2000
origin_tech = "combat=3;materials=2"
/obj/item/weapon/gun/revolver/mateba /obj/item/weapon/gun/revolver/mateba
desc = "There are 0 bullets left. Uses 357" desc = "There are 0 bullets left. Uses 357"
name = "revolver" name = "revolver"
icon_state = "mateba" icon_state = "mateba"
origin_tech = "combat=2;materials=2"
/obj/item/weapon/gun/detectiverevolver /obj/item/weapon/gun/detectiverevolver
desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds." desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
@@ -635,6 +660,7 @@
throw_range = 10 throw_range = 10
force = 14.0 force = 14.0
m_amt = 1000 m_amt = 1000
origin_tech = "combat=2;materials=2"
/obj/item/weapon/hand_tele /obj/item/weapon/hand_tele
name = "hand tele" name = "hand tele"
@@ -646,6 +672,7 @@
throw_speed = 3 throw_speed = 3
throw_range = 5 throw_range = 5
m_amt = 10000 m_amt = 10000
origin_tech = "magnets=1;bluespace=3"
/obj/item/weapon/handcuffs /obj/item/weapon/handcuffs
name = "handcuffs" name = "handcuffs"
@@ -657,6 +684,7 @@
throw_speed = 2 throw_speed = 2
throw_range = 5 throw_range = 5
m_amt = 500 m_amt = 500
origin_tech = "materials=1"
/obj/item/weapon/implant /obj/item/weapon/implant
@@ -743,6 +771,7 @@
throw_speed = 4 throw_speed = 4
throw_range = 20 throw_range = 20
m_amt = 400 m_amt = 400
origin_tech = "magnets=1"
@@ -955,6 +984,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
/obj/item/weapon/pen/sleepypen /obj/item/weapon/pen/sleepypen
desc = "It's a normal black ink pen with a sharp point." desc = "It's a normal black ink pen with a sharp point."
flags = FPRINT | ONBELT | TABLEPASS | OPENCONTAINER flags = FPRINT | ONBELT | TABLEPASS | OPENCONTAINER
origin_tech = "materials=2;biotech=1;syndicate=2"
/obj/item/weapon/rack_parts /obj/item/weapon/rack_parts
name = "rack parts" name = "rack parts"
@@ -1008,6 +1038,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throw_speed = 4 throw_speed = 4
throw_range = 20 throw_range = 20
m_amt = 100 m_amt = 100
origin_tech = "magnets=2;syndicate=3"
/obj/item/weapon/SWF_uplink /obj/item/weapon/SWF_uplink
name = "station bounced radio" name = "station bounced radio"
@@ -1058,6 +1089,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throw_range = 5 throw_range = 5
w_class = 2.0 w_class = 2.0
flags = FPRINT | TABLEPASS | NOSHIELD flags = FPRINT | TABLEPASS | NOSHIELD
origin_tech = "magnets=3;syndicate=3"
/obj/item/weapon/sword/pirate /obj/item/weapon/sword/pirate
name = "energy cutlass" name = "energy cutlass"
@@ -1139,6 +1171,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
item_state = "paper" item_state = "paper"
throw_speed = 4 throw_speed = 4
throw_range = 20 throw_range = 20
origin_tech = "bluespace=4"
/obj/item/weapon/wire /obj/item/weapon/wire
desc = "This is just a simple piece of regular insulated wire." desc = "This is just a simple piece of regular insulated wire."
@@ -1160,6 +1193,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throw_range = 9 throw_range = 9
w_class = 2.0 w_class = 2.0
m_amt = 80 m_amt = 80
origin_tech = "materials=1"
/obj/item/weapon/wrapping_paper /obj/item/weapon/wrapping_paper
name = "wrapping paper" name = "wrapping paper"
@@ -1176,6 +1210,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throwforce = 7.0 throwforce = 7.0
w_class = 2.0 w_class = 2.0
m_amt = 150 m_amt = 150
origin_tech = "materials=1"
/obj/item/weapon/cell /obj/item/weapon/cell
name = "power cell" name = "power cell"
@@ -1183,7 +1218,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
icon = 'power.dmi' icon = 'power.dmi'
icon_state = "cell" icon_state = "cell"
item_state = "cell" item_state = "cell"
origin_tech = list("powerstorage" = 1) origin_tech = "powerstorage=1"
flags = FPRINT|TABLEPASS flags = FPRINT|TABLEPASS
force = 5.0 force = 5.0
throwforce = 5.0 throwforce = 5.0
@@ -1200,13 +1235,13 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
/obj/item/weapon/cell/high /obj/item/weapon/cell/high
name = "high-capacity power cell" name = "high-capacity power cell"
origin_tech = list("powerstorage" = 3) origin_tech = "powerstorage=2"
maxcharge = 10000 maxcharge = 10000
g_amt = 60 g_amt = 60
/obj/item/weapon/cell/super /obj/item/weapon/cell/super
name = "super-capcity power cell" name = "super-capcity power cell"
origin_tech = list("powerstorage" = 5) origin_tech = "powerstorage=3"
maxcharge = 20000 maxcharge = 20000
g_amt = 70 g_amt = 70
@@ -1321,6 +1356,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throw_speed = 3 throw_speed = 3
throw_range = 6 throw_range = 6
m_amt = 12000 m_amt = 12000
origin_tech = "materials=1"
/obj/item/weapon/tray /obj/item/weapon/tray
name = "Tray" name = "Tray"
@@ -1343,6 +1379,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throw_speed = 3 throw_speed = 3
throw_range = 5 throw_range = 5
flags = FPRINT | TABLEPASS | CONDUCT flags = FPRINT | TABLEPASS | CONDUCT
origin_tech = "materials=1"
/obj/item/weapon/kitchen/utensil/fork /obj/item/weapon/kitchen/utensil/fork
@@ -1372,6 +1409,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throw_range = 5 throw_range = 5
m_amt = 10000 m_amt = 10000
g_amt = 5000 g_amt = 5000
origin_tech = "materials=1;biotech=1"
/obj/item/weapon/retractor /obj/item/weapon/retractor
name = "retractor" name = "retractor"
@@ -1379,6 +1417,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
icon_state = "retractor" icon_state = "retractor"
flags = FPRINT | TABLEPASS | CONDUCT flags = FPRINT | TABLEPASS | CONDUCT
w_class = 1.0 w_class = 1.0
origin_tech = "materials=1;biotech=1"
/obj/item/weapon/hemostat /obj/item/weapon/hemostat
name = "hemostat" name = "hemostat"
@@ -1386,6 +1425,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
icon_state = "hemostat" icon_state = "hemostat"
flags = FPRINT | TABLEPASS | CONDUCT flags = FPRINT | TABLEPASS | CONDUCT
w_class = 1.0 w_class = 1.0
origin_tech = "materials=1;biotech=1"
/obj/item/weapon/cautery /obj/item/weapon/cautery
name = "cautery" name = "cautery"
@@ -1393,6 +1433,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
icon_state = "cautery" icon_state = "cautery"
flags = FPRINT | TABLEPASS | CONDUCT flags = FPRINT | TABLEPASS | CONDUCT
w_class = 1.0 w_class = 1.0
origin_tech = "materials=1;biotech=1"
/obj/item/weapon/surgicaldrill /obj/item/weapon/surgicaldrill
name = "surgical drill" name = "surgical drill"
@@ -1400,6 +1441,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
icon_state = "drill" icon_state = "drill"
flags = FPRINT | TABLEPASS | CONDUCT flags = FPRINT | TABLEPASS | CONDUCT
w_class = 1.0 w_class = 1.0
origin_tech = "materials=1;biotech=1"
/obj/item/weapon/circular_saw /obj/item/weapon/circular_saw
name = "circular saw" name = "circular saw"
@@ -1413,6 +1455,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
throw_range = 5 throw_range = 5
m_amt = 20000 m_amt = 20000
g_amt = 10000 g_amt = 10000
origin_tech = "materials=1;biotech=1"
/obj/item/weapon/stamp /obj/item/weapon/stamp
desc = "A rubber stamp for stamping important documents." desc = "A rubber stamp for stamping important documents."
@@ -1676,14 +1719,14 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
name = "Console Screen" name = "Console Screen"
desc = "Used in the construction of computers and other devices with a interactive console." desc = "Used in the construction of computers and other devices with a interactive console."
icon_state = "screen" icon_state = "screen"
origin_tech = list("materials" = 1) origin_tech = "materials=1"
g_amt = 200 g_amt = 200
/obj/item/weapon/stock_parts/capacitor /obj/item/weapon/stock_parts/capacitor
name = "Capacitor" name = "Capacitor"
desc = "A basic capacitor used in the construction of a variety of devices." desc = "A basic capacitor used in the construction of a variety of devices."
icon_state = "capacitor" icon_state = "capacitor"
origin_tech = list("energystorage" = 1) origin_tech = "energystorage=1"
m_amt = 50 m_amt = 50
g_amt = 50 g_amt = 50
@@ -1691,7 +1734,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
name = "Scanning Module" name = "Scanning Module"
desc = "A compact, high resolution scanning module used in the construction of certain devices." desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "scan_module" icon_state = "scan_module"
origin_tech = list("magnets" = 1) origin_tech = "magnets=1"
m_amt = 50 m_amt = 50
g_amt = 20 g_amt = 20
@@ -1699,14 +1742,14 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
name = "Micro-Manipulator" name = "Micro-Manipulator"
desc = "A tiny little manipulator used in the construction of certain devices." desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "micro_mani" icon_state = "micro_mani"
origin_tech = list("robotics" = 1) origin_tech = "robotics=1"
m_amt = 30 m_amt = 30
/obj/item/weapon/stock_parts/micro_laser /obj/item/weapon/stock_parts/micro_laser
name = "Micro-laser" name = "Micro-laser"
desc = "A tiny laser used in certain devices." desc = "A tiny laser used in certain devices."
icon_state = "micro_laser" icon_state = "micro_laser"
origin_tech = list("magnets" = 1) origin_tech = "magnets=1"
m_amt = 10 m_amt = 10
g_amt = 20 g_amt = 20
@@ -1714,48 +1757,47 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
name = "Matter Bin" name = "Matter Bin"
desc = "A container for hold compressed matter awaiting re-construction." desc = "A container for hold compressed matter awaiting re-construction."
icon_state = "matter_bin" icon_state = "matter_bin"
origin_tech = list("materials" = 1) origin_tech = "materials=1"
m_amt = 80 m_amt = 80
/obj/item/weapon/stock_parts/adv_capacitor /obj/item/weapon/stock_parts/capacitor/adv
name = "Advanced Capacitor" name = "Advanced Capacitor"
desc = "An advanced capacitor used in the construction of a variety of devices." desc = "An advanced capacitor used in the construction of a variety of devices."
icon_state = "capacitor" origin_tech = "energystorage=3"
origin_tech = list("energystorage" = 3)
rating = 2 rating = 2
m_amt = 50 m_amt = 50
g_amt = 50 g_amt = 50
/obj/item/weapon/stock_parts/adv_scanning_module /obj/item/weapon/stock_parts/scanning_module/adv
name = "Advanced Scanning Module" name = "Advanced Scanning Module"
desc = "A compact, high resolution scanning module used in the construction of certain devices." desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "scan_module" icon_state = "scan_module"
origin_tech = list("magnets" = 3) origin_tech = "magnets=3"
rating = 2 rating = 2
m_amt = 50 m_amt = 50
g_amt = 20 g_amt = 20
/obj/item/weapon/stock_parts/nano_manipulator /obj/item/weapon/stock_parts/micro_manipulator/nano
name = "Nano-Manipulator" name = "Nano-Manipulator"
desc = "A tiny little manipulator used in the construction of certain devices." desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "micro_mani" icon_state = "micro_mani"
origin_tech = list("robotics" = 3) origin_tech = "robotics=3"
rating = 2 rating = 2
m_amt = 30 m_amt = 30
/obj/item/weapon/stock_parts/high_micro_laser /obj/item/weapon/stock_parts/micro_laser/high
name = "High-Power Micro-laser" name = "High-Power Micro-laser"
desc = "A tiny laser used in certain devices." desc = "A tiny laser used in certain devices."
icon_state = "micro_laser" icon_state = "micro_laser"
origin_tech = list("magnets" = 3) origin_tech = "magnets=3"
rating = 2 rating = 2
m_amt = 10 m_amt = 10
g_amt = 20 g_amt = 20
/obj/item/weapon/stock_parts/adv_matter_bin /obj/item/weapon/stock_parts/matter_bin/adv
name = "Advanced Matter Bin" name = "Advanced Matter Bin"
desc = "A container for hold compressed matter awaiting re-construction." desc = "A container for hold compressed matter awaiting re-construction."
icon_state = "matter_bin" icon_state = "matter_bin"
origin_tech = list("materials" = 3) origin_tech = "materials=3"
rating = 2 rating = 2
m_amt = 80 m_amt = 80

View File

@@ -1,7 +1,8 @@
/obj/machinery/autolathe /obj/machinery/autolathe
var/busy = 0 var/busy = 0
var/const/max_m_amount = 150000.0 var/max_m_amount = 150000.0
var/const/max_g_amount = 75000.0 var/max_g_amount = 75000.0
/obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob) /obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (stat) if (stat)
@@ -18,10 +19,20 @@
src.opened = 0 src.opened = 0
src.icon_state = "autolathe" src.icon_state = "autolathe"
user << "You close the maintenance hatch of [src]." user << "You close the maintenance hatch of [src]."
return
if (opened)
user << "\red You can't load the autolathe while it's opened."
return 1 return 1
if (opened)
if(istype(O, /obj/item/weapon/crowbar))
playsound(src.loc, 'Crowbar.ogg', 50, 1)
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc)
M.state = 2
M.icon_state = "box_1"
for(var/obj/I in component_parts)
I.loc = src.loc
del(src)
return 1
else
user << "\red You can't load the autolathe while it's opened."
return 1
if (src.m_amount + O.m_amt > max_m_amount) 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." user << "\red The autolathe is full. Please remove metal from the autolathe in order to insert more."
return 1 return 1
@@ -166,21 +177,22 @@
busy = 0 busy = 0
src.updateUsrDialog() src.updateUsrDialog()
if(href_list["act"]) if(href_list["act"])
var/temp_wire = href_list["wire"]
if(href_list["act"] == "pulse") if(href_list["act"] == "pulse")
if (!istype(usr.equipped(), /obj/item/device/multitool)) if (!istype(usr.equipped(), /obj/item/device/multitool))
usr << "You need a multitool!" usr << "You need a multitool!"
else else
if(src.wires[href_list["wire"]]) if(src.wires[temp_wire])
usr << "You can't pulse a cut wire." usr << "You can't pulse a cut wire."
else else
if(src.hack_wire == href_list["wire"]) if(src.hack_wire == temp_wire)
src.hacked = !src.hacked src.hacked = !src.hacked
spawn(100) src.hacked = !src.hacked spawn(100) src.hacked = !src.hacked
if(src.disable_wire == href_list["wire"]) if(src.disable_wire == temp_wire)
src.disabled = !src.disabled src.disabled = !src.disabled
src.shock(usr,50) src.shock(usr,50)
spawn(100) src.disabled = !src.disabled spawn(100) src.disabled = !src.disabled
if(src.shock_wire == href_list["wire"]) if(src.shock_wire == temp_wire)
src.shocked = !src.shocked src.shocked = !src.shocked
src.shock(usr,50) src.shock(usr,50)
spawn(100) src.shocked = !src.shocked spawn(100) src.shocked = !src.shocked
@@ -188,12 +200,13 @@
if (!istype(usr.equipped(), /obj/item/weapon/wirecutters)) if (!istype(usr.equipped(), /obj/item/weapon/wirecutters))
usr << "You need wirecutters!" usr << "You need wirecutters!"
else else
if(src.hack_wire == href_list["wire"]) wires[temp_wire] = !wires[temp_wire]
if(src.hack_wire == temp_wire)
src.hacked = !src.hacked src.hacked = !src.hacked
if(src.disable_wire == href_list["wire"]) if(src.disable_wire == temp_wire)
src.disabled = !src.disabled src.disabled = !src.disabled
src.shock(usr,50) src.shock(usr,50)
if(src.shock_wire == href_list["wire"]) if(src.shock_wire == temp_wire)
src.shocked = !src.shocked src.shocked = !src.shocked
src.shock(usr,50) src.shock(usr,50)
else else
@@ -242,8 +255,27 @@ var/global/list/autolathe_recipes_hidden = list( \
new /obj/item/weapon/ammo/shell/dart(), \ new /obj/item/weapon/ammo/shell/dart(), \
/* new /obj/item/weapon/shield/riot(), */ \ /* new /obj/item/weapon/shield/riot(), */ \
) )
/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
/obj/machinery/autolathe/New() /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/micro_manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
RefreshParts()
src.L = autolathe_recipes src.L = autolathe_recipes
src.LL = autolathe_recipes_hidden src.LL = autolathe_recipes_hidden
src.wires["Light Red"] = 0 src.wires["Light Red"] = 0

View File

@@ -16,6 +16,7 @@
icon = 'module.dmi' icon = 'module.dmi'
icon_state = "id_mod" icon_state = "id_mod"
item_state = "electronic" item_state = "electronic"
origin_tech = "programming=2"
var var
id = null id = null
frequency = null frequency = null
@@ -30,21 +31,26 @@
build_path = "/obj/machinery/computer/security" build_path = "/obj/machinery/computer/security"
/obj/item/weapon/circuitboard/aicore /obj/item/weapon/circuitboard/aicore
name = "Circuit board (AI core)" name = "Circuit board (AI core)"
origin_tech = "programming=4;biotech=2"
/obj/item/weapon/circuitboard/aiupload /obj/item/weapon/circuitboard/aiupload
name = "Circuit board (AI Upload)" name = "Circuit board (AI Upload)"
build_path = "/obj/machinery/computer/aiupload" build_path = "/obj/machinery/computer/aiupload"
origin_tech = "programming=4"
/obj/item/weapon/circuitboard/med_data /obj/item/weapon/circuitboard/med_data
name = "Circuit board (Medical Records)" name = "Circuit board (Medical Records)"
build_path = "/obj/machinery/computer/med_data" build_path = "/obj/machinery/computer/med_data"
/obj/item/weapon/circuitboard/pandemic /obj/item/weapon/circuitboard/pandemic
name = "Circuit board (PanD.E.M.I.C. 2200)" name = "Circuit board (PanD.E.M.I.C. 2200)"
build_path = "/obj/machinery/computer/pandemic" build_path = "/obj/machinery/computer/pandemic"
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/scan_consolenew /obj/item/weapon/circuitboard/scan_consolenew
name = "Circuit board (DNA Machine)" name = "Circuit board (DNA Machine)"
build_path = "/obj/machinery/scan_consolenew" build_path = "/obj/machinery/scan_consolenew"
origin_tech = "programming=2;biotech=2"
/obj/item/weapon/circuitboard/communications /obj/item/weapon/circuitboard/communications
name = "Circuit board (Communications)" name = "Circuit board (Communications)"
build_path = "/obj/machinery/computer/communications" build_path = "/obj/machinery/computer/communications"
origin_tech = "programming=2;magnets=2"
/obj/item/weapon/circuitboard/card /obj/item/weapon/circuitboard/card
name = "Circuit board (ID Computer)" name = "Circuit board (ID Computer)"
build_path = "/obj/machinery/computer/card" build_path = "/obj/machinery/computer/card"
@@ -54,6 +60,7 @@
/obj/item/weapon/circuitboard/teleporter /obj/item/weapon/circuitboard/teleporter
name = "Circuit board (Teleporter)" name = "Circuit board (Teleporter)"
build_path = "/obj/machinery/computer/teleporter" build_path = "/obj/machinery/computer/teleporter"
origin_tech = "programming=2;bluespace=2"
/obj/item/weapon/circuitboard/secure_data /obj/item/weapon/circuitboard/secure_data
name = "Circuit board (Security Records)" name = "Circuit board (Security Records)"
build_path = "/obj/machinery/computer/secure_data" build_path = "/obj/machinery/computer/secure_data"
@@ -78,12 +85,15 @@
/obj/item/weapon/circuitboard/robotics /obj/item/weapon/circuitboard/robotics
name = "Circuit board (Robotics Control)" name = "Circuit board (Robotics Control)"
build_path = "/obj/machinery/computer/robotics" build_path = "/obj/machinery/computer/robotics"
origin_tech = "programming=3"
/obj/item/weapon/circuitboard/cloning /obj/item/weapon/circuitboard/cloning
name = "Circuit board (Cloning)" name = "Circuit board (Cloning)"
build_path = "/obj/machinery/computer/cloning" build_path = "/obj/machinery/computer/cloning"
origin_tech = "programming=3;biotech=3"
/obj/item/weapon/circuitboard/arcade /obj/item/weapon/circuitboard/arcade
name = "Circuit board (Arcade)" name = "Circuit board (Arcade)"
build_path = "/obj/machinery/computer/arcade" build_path = "/obj/machinery/computer/arcade"
origin_tech = "programming=1"
/obj/item/weapon/circuitboard/turbine_control /obj/item/weapon/circuitboard/turbine_control
name = "Circuit board (Turbine control)" name = "Circuit board (Turbine control)"
build_path = "/obj/machinery/computer/turbine_computer" build_path = "/obj/machinery/computer/turbine_computer"

View File

@@ -3,26 +3,21 @@
icon = 'stock_parts.dmi' icon = 'stock_parts.dmi'
icon_state = "box_0" icon_state = "box_0"
density = 1 density = 1
anchored = 0 anchored = 1
use_power = 0
var var
obj/item/weapon/circuitboard/circuit = null obj/item/weapon/circuitboard/circuit = null
list/components = null list/components = null
list/req_components = null list/req_components = null
state = 0 state = 1
/* /*
To Do: Add deconstruct code to constructable machines. A marvelous idea, I know. To Do: Add deconstruct code to constructable machines. A marvelous idea, I know.
*/ */
/obj/machinery/constructable_frame/machine_frame /obj/machinery/constructable_frame/machine_frame
attackby(obj/item/P as obj, mob/user as mob) attackby(obj/item/P as obj, mob/user as mob)
switch(state) switch(state)
if(0)
if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'Ratchet.ogg', 75, 1)
user << "\blue You wrench the frame into place."
anchored = 1
state = 1
if(1) if(1)
if(istype(P, /obj/item/weapon/cable_coil)) if(istype(P, /obj/item/weapon/cable_coil))
if(P:amount >= 5) if(P:amount >= 5)
@@ -36,9 +31,9 @@ To Do: Add deconstruct code to constructable machines. A marvelous idea, I know.
icon_state = "box_1" icon_state = "box_1"
if(istype(P, /obj/item/weapon/wrench)) if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'Ratchet.ogg', 75, 1) playsound(src.loc, 'Ratchet.ogg', 75, 1)
user << "\blue You unbolt the frame from the floor." user << "\blue You dismantle the frame"
anchored = 0 new /obj/item/stack/sheet/metal(src.loc, 5)
state = 0 del(src)
if(2) if(2)
if(istype(P, /obj/item/weapon/circuitboard)) if(istype(P, /obj/item/weapon/circuitboard))
var/obj/item/weapon/circuitboard/B = P var/obj/item/weapon/circuitboard/B = P
@@ -88,7 +83,15 @@ To Do: Add deconstruct code to constructable machines. A marvelous idea, I know.
break break
if(component_check) if(component_check)
playsound(src.loc, 'Screwdriver.ogg', 50, 1) playsound(src.loc, 'Screwdriver.ogg', 50, 1)
new src.circuit.build_path ( src.loc ) var/obj/machinery/new_machine = new src.circuit.build_path(src.loc)
for(var/obj/O in new_machine.component_parts)
del(O)
new_machine.component_parts = list()
for(var/obj/O in src)
O.loc = new_machine
new_machine.component_parts += O
circuit.loc = new_machine
new_machine.RefreshParts()
del(src) del(src)
if(istype(P, /obj/item/weapon)) if(istype(P, /obj/item/weapon))
@@ -105,7 +108,7 @@ To Do: Add deconstruct code to constructable machines. A marvelous idea, I know.
//Machine Frame Circuit Boards //Machine Frame Circuit Boards
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit, /*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
micro-manipulator, console screen, beaker, Microlaser, matter bin micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells.
Note: Once everything is added to the public areas, will add m_amt and g_amt to circuit boards since autolathe won't be able Note: Once everything is added to the public areas, will add m_amt and g_amt to circuit boards since autolathe won't be able
to destroy them and players will be able to make replacements. to destroy them and players will be able to make replacements.
*/ */
@@ -113,36 +116,38 @@ to destroy them and players will be able to make replacements.
name = "Circuit board (Destructive Analyzer)" name = "Circuit board (Destructive Analyzer)"
build_path = "/obj/machinery/r_n_d/destructive_analyzer" build_path = "/obj/machinery/r_n_d/destructive_analyzer"
board_type = "machine" board_type = "machine"
origin_tech = list("magnets" = 3, "materials" = 2) origin_tech = "magnets=2;materials=2"
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1, "/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/micro_manipulator" = 1, "/obj/item/weapon/stock_parts/micro_manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1) "/obj/item/weapon/stock_parts/micro_laser" = 1)
/obj/item/weapon/circuitboard/autolathe /obj/item/weapon/circuitboard/autolathe
name = "Circuit board (Destructive Analyzer)" name = "Circuit board (Autolathe)"
build_path = "/obj/machinery/r_n_d/destructive_analyzer" build_path = "/obj/machinery/autolathe"
board_type = "machine" board_type = "machine"
origin_tech = list("materials" = 3) origin_tech = "materials=3"
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2, "/obj/item/weapon/stock_parts/matter_bin" = 3,
"/obj/item/weapon/stock_parts/micro_manipulator" = 2, "/obj/item/weapon/stock_parts/micro_manipulator" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1) "/obj/item/weapon/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/protolathe /obj/item/weapon/circuitboard/protolathe
name = "Circuit board (Destructive Analyzer)" name = "Circuit board (Protolathe)"
build_path = "/obj/machinery/r_n_d/destructive_analyzer" build_path = "/obj/machinery/r_n_d/protolathe"
board_type = "machine" board_type = "machine"
origin_tech = list("materials" = 3) origin_tech = "materials=2"
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2, "/obj/item/weapon/stock_parts/matter_bin" = 2,
"/obj/item/weapon/stock_parts/micro_manipulator" = 2) "/obj/item/weapon/stock_parts/micro_manipulator" = 2,
"/obj/item/weapon/reagent_containers/glass/beaker" = 2)
/obj/item/weapon/circuitboard/circuit_imprinter /obj/item/weapon/circuitboard/circuit_imprinter
name = "Circuit board (Destructive Analyzer)" name = "Circuit board (Circuit Imprinter)"
build_path = "/obj/machinery/r_n_d/destructive_analyzer" build_path = "/obj/machinery/r_n_d/circuit_imprinter"
board_type = "machine" board_type = "machine"
origin_tech = list("materials" = 3, "programming" = 3) origin_tech = "materials=2;programming=2"
req_components = list( req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1, "/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/micro_manipulator" = 1, "/obj/item/weapon/stock_parts/micro_manipulator" = 1,

View File

@@ -99,6 +99,10 @@
src.add_fingerprint(user) src.add_fingerprint(user)
return 0 return 0
/obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames.
return
return 0
/obj/machinery/proc/assign_uid() /obj/machinery/proc/assign_uid()
uid = gl_uid uid = gl_uid
gl_uid++ gl_uid++

View File

@@ -18,6 +18,7 @@ AI MODULES
throwforce = 5.0 throwforce = 5.0
throw_speed = 3 throw_speed = 3
throw_range = 15 throw_range = 15
origin_tech = "programming=3"
/obj/machinery/computer/aiupload/attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob) /obj/machinery/computer/aiupload/attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob)
if(istype(module, /obj/item/weapon/aiModule)) if(istype(module, /obj/item/weapon/aiModule))
@@ -148,6 +149,7 @@ AI MODULES
name = "'OneHuman' AI Module" name = "'OneHuman' AI Module"
var/targetName = "name" var/targetName = "name"
desc = "A 'one human' AI module: 'Only <name> is human.'" desc = "A 'one human' AI module: 'Only <name> is human.'"
origin_tech = "programming=3;syndicate=2"
/obj/item/weapon/aiModule/oneHuman/attack_hand(var/mob/user as mob) /obj/item/weapon/aiModule/oneHuman/attack_hand(var/mob/user as mob)
..() ..()
@@ -217,6 +219,7 @@ AI MODULES
/obj/item/weapon/aiModule/quarantine /obj/item/weapon/aiModule/quarantine
name = "'Quarantine' AI Module" name = "'Quarantine' AI Module"
desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.'" desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, humans from leaving. It is impossible to harm a human while preventing them from leaving.'"
origin_tech = "programming=3;biotech=2"
/obj/item/weapon/aiModule/quarantine/attack_hand(var/mob/user as mob) /obj/item/weapon/aiModule/quarantine/attack_hand(var/mob/user as mob)
..() ..()
@@ -232,6 +235,7 @@ AI MODULES
/obj/item/weapon/aiModule/oxygen /obj/item/weapon/aiModule/oxygen
name = "'OxygenIsToxicToHumans' AI Module" name = "'OxygenIsToxicToHumans' AI Module"
desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.'" desc = "A 'OxygenIsToxicToHumans' AI module: 'Oxygen is highly toxic to humans, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a human.'"
origin_tech = "programming=3;biotech=2"
/obj/item/weapon/aiModule/oxygen/attack_hand(var/mob/user as mob) /obj/item/weapon/aiModule/oxygen/attack_hand(var/mob/user as mob)
..() ..()
@@ -270,6 +274,7 @@ AI MODULES
var/newFreeFormLaw = "freeform" var/newFreeFormLaw = "freeform"
var/lawpos = 15 var/lawpos = 15
desc = "A 'freeform' AI module: '<freeform>'" desc = "A 'freeform' AI module: '<freeform>'"
origin_tech = "programming=4"
/obj/item/weapon/aiModule/freeform/attack_hand(var/mob/user as mob) /obj/item/weapon/aiModule/freeform/attack_hand(var/mob/user as mob)
..() ..()
@@ -343,6 +348,7 @@ AI MODULES
/obj/item/weapon/aiModule/paladin // -- NEO /obj/item/weapon/aiModule/paladin // -- NEO
name = "'P.A.L.A.D.I.N.' Core AI Module" name = "'P.A.L.A.D.I.N.' Core AI Module"
desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'" desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=4"
/obj/item/weapon/aiModule/paladin/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) /obj/item/weapon/aiModule/paladin/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
..() ..()
@@ -359,6 +365,7 @@ AI MODULES
/obj/item/weapon/aiModule/tyrant // -- Darem /obj/item/weapon/aiModule/tyrant // -- Darem
name = "'T.Y.R.A.N.T.' Core AI Module" name = "'T.Y.R.A.N.T.' Core AI Module"
desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'" desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=4;syndicate=2"
/obj/item/weapon/aiModule/tyrant/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) /obj/item/weapon/aiModule/tyrant/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
..() ..()
@@ -376,6 +383,7 @@ AI MODULES
name = "'Freeform' Core AI Module" name = "'Freeform' Core AI Module"
var/newFreeFormLaw = "freeform" var/newFreeFormLaw = "freeform"
desc = "A 'freeform' Core AI module: '<freeform>'" desc = "A 'freeform' Core AI module: '<freeform>'"
origin_tech = "programming=4"
/obj/item/weapon/aiModule/freeformcore/attack_hand(var/mob/user as mob) /obj/item/weapon/aiModule/freeformcore/attack_hand(var/mob/user as mob)
..() ..()
@@ -395,6 +403,7 @@ AI MODULES
/obj/item/weapon/aiModule/robocop // -- TLE /obj/item/weapon/aiModule/robocop // -- TLE
name = "'Robocop' Core AI Module" name = "'Robocop' Core AI Module"
desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'" desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'"
orign_tech = "programming=4"
/obj/item/weapon/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender) /obj/item/weapon/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
..() ..()

View File

@@ -73,6 +73,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
new/datum/stack_recipe("computer frame", /obj/computerframe, 5, one_per_turf = 1), \ new/datum/stack_recipe("computer frame", /obj/computerframe, 5, one_per_turf = 1), \
new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("airlock assembly", /obj/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("airlock assembly", /obj/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, one_per_turf = 1), \
null, \ null, \
new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \ new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \
new/datum/stack_recipe("grenade casing", /obj/item/weapon/chem_grenade), \ new/datum/stack_recipe("grenade casing", /obj/item/weapon/chem_grenade), \

View File

@@ -108,6 +108,7 @@
/obj/item/stack /obj/item/stack
var/list/datum/stack_recipe/recipes var/list/datum/stack_recipe/recipes
origin_tech = "materials=1"
/obj/item/stack/attack_self(mob/user as mob) /obj/item/stack/attack_self(mob/user as mob)
interact(user) interact(user)

View File

@@ -10,13 +10,29 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
flags = OPENCONTAINER flags = OPENCONTAINER
var var
g_amount = 0 g_amount = 0
const/max_g_amount = 75000.0 max_g_amount = 75000.0
busy = 0
New() New()
var/datum/reagents/R = new/datum/reagents(100) //Holder for the reagents used as materials. ..()
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/micro_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()
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 reagents = R
R.my_atom = src R.my_atom = src
T = 0
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
T += M.rating
max_g_amount = T * 75000.0
blob_act() blob_act()
@@ -28,12 +44,42 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
return return
attackby(var/obj/item/O as obj, var/mob/user as mob) attackby(var/obj/item/O as obj, var/mob/user as mob)
if (disabled)
return
if (shocked)
shock(user,50)
if (istype(O, /obj/item/weapon/screwdriver))
if (!opened)
opened = 1
if(linked_console)
linked_console.linked_imprinter = null
linked_console = null
icon_state = "circuit_imprinter_t"
user << "You open the maintenance hatch of [src]."
else
opened = 0
icon_state = "circuit_imprinter"
user << "You close the maintenance hatch of [src]."
return
if (opened)
if(istype(O, /obj/item/weapon/crowbar))
playsound(src.loc, 'Crowbar.ogg', 50, 1)
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc)
M.state = 2
M.icon_state = "box_1"
for(var/obj/I in component_parts)
I.loc = src.loc
del(src)
return 1
else
user << "\red You can't load the [src.name] while it's opened."
return 1
if (!linked_console) if (!linked_console)
user << "\The [name] must be linked to an R&D console first!" user << "\The [name] must be linked to an R&D console first!"
return 1 return 1
if (O.is_open_container()) if (O.is_open_container())
return 1 return 1
if (!istype(O, /obj/item/stack)) if (!istype(O, /obj/item/stack/sheet/glass))
user << "\red You cannot insert this item into the [name]!" user << "\red You cannot insert this item into the [name]!"
return 1 return 1
if (stat) if (stat)
@@ -46,7 +92,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
return 1 return 1
var/amount = 1 var/amount = 1
var/obj/item/stack/stack var/obj/item/stack/sheet/glass/stack
var/g_amt = O.g_amt var/g_amt = O.g_amt
stack = O stack = O
amount = stack.amount amount = stack.amount

View File

@@ -14,9 +14,10 @@ The currently supporting non-reagent materials:
Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials.
*/ */
#define IMPRINTER 1 //For circuits. #define IMPRINTER 1 //For circuits. Uses glass/chemicals.
#define PROTOLATHE 2 //For stuff with reliability issues. #define PROTOLATHE 2 //New stuff. Uses glass/metal/chemicals
#define AUTOLATHE 4 //For general use or 100% reliability items. #define AUTOLATHE 4 //Uses glass/metal only.
#define CRAFTLATHE 8 //Uses fuck if I know. For use eventually.
//Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable. //Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable.
datum datum
@@ -45,7 +46,7 @@ datum
return new_reliability return new_reliability
///////////////////Computer Boards///////////////////////////////////
seccamera seccamera
name = "Circuit Design (Security)" name = "Circuit Design (Security)"
@@ -60,7 +61,7 @@ datum
name = "Circuit Design (AI Core)" name = "Circuit Design (AI Core)"
desc = "Allows for the construction of circuit boards used to build new AI cores." desc = "Allows for the construction of circuit boards used to build new AI cores."
id = "aicore" id = "aicore"
req_tech = list("programming" = 5, "biotech" = 5) req_tech = list("programming" = 4, "biotech" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/aicore" build_path = "/obj/item/weapon/circuitboard/aicore"
@@ -69,7 +70,7 @@ datum
name = "Circuit Design (AI Upload)" name = "Circuit Design (AI Upload)"
desc = "Allows for the construction of circuit boards used to build an AI Upload Console." desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
id = "aiupload" id = "aiupload"
req_tech = list("programming" = 5) req_tech = list("programming" = 4)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/aiupload" build_path = "/obj/item/weapon/circuitboard/aiupload"
@@ -177,7 +178,7 @@ datum
name = "Circuit Design (Cloning Machine Console)" name = "Circuit Design (Cloning Machine Console)"
desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
id = "clonecontrol" id = "clonecontrol"
req_tech = list("programming" = 3, "biotech" = 4) req_tech = list("programming" = 3, "biotech" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/cloning" build_path = "/obj/item/weapon/circuitboard/cloning"
@@ -216,7 +217,7 @@ datum
name = "Module Design (Safeguard)" name = "Module Design (Safeguard)"
desc = "Allows for the construction of a Safeguard AI Module." desc = "Allows for the construction of a Safeguard AI Module."
id = "safeguard_module" id = "safeguard_module"
req_tech = list("programming" = 5) req_tech = list("programming" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/safeguard" build_path = "/obj/item/weapon/aiModule/safeguard"
@@ -225,7 +226,7 @@ datum
name = "Module Design (OneHuman)" name = "Module Design (OneHuman)"
desc = "Allows for the construction of a OneHuman AI Module." desc = "Allows for the construction of a OneHuman AI Module."
id = "onehuman_module" id = "onehuman_module"
req_tech = list("programming" = 5, "syndicate" = 2) req_tech = list("programming" = 3, "syndicate" = 2)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/oneHuman" build_path = "/obj/item/weapon/aiModule/oneHuman"
@@ -234,7 +235,7 @@ datum
name = "Module Design (ProtectStation)" name = "Module Design (ProtectStation)"
desc = "Allows for the construction of a ProtectStation AI Module." desc = "Allows for the construction of a ProtectStation AI Module."
id = "protectstation_module" id = "protectstation_module"
req_tech = list("programming" = 5) req_tech = list("programming" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/protectStation" build_path = "/obj/item/weapon/aiModule/protectStation"
@@ -243,7 +244,7 @@ datum
name = "Module Design (TeleporterOffline Module)" name = "Module Design (TeleporterOffline Module)"
desc = "Allows for the construction of a TeleporterOffline AI Module." desc = "Allows for the construction of a TeleporterOffline AI Module."
id = "notele_module" id = "notele_module"
req_tech = list("programming" = 5) req_tech = list("programming" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/teleporterOffline" build_path = "/obj/item/weapon/aiModule/teleporterOffline"
@@ -252,7 +253,7 @@ datum
name = "Module Design (Quarantine)" name = "Module Design (Quarantine)"
desc = "Allows for the construction of a Quarantine AI Module." desc = "Allows for the construction of a Quarantine AI Module."
id = "quarantine_module" id = "quarantine_module"
req_tech = list("programming" = 5, "biotech" = 2) req_tech = list("programming" = 3, "biotech" = 2)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/quarantine" build_path = "/obj/item/weapon/aiModule/quarantine"
@@ -261,7 +262,7 @@ datum
name = "Module Design (OxygenIsToxicToHumans)" name = "Module Design (OxygenIsToxicToHumans)"
desc = "Allows for the construction of a Safeguard AI Module." desc = "Allows for the construction of a Safeguard AI Module."
id = "oxygen_module" id = "oxygen_module"
req_tech = list("programming" = 5, "biotech" = 2) req_tech = list("programming" = 3, "biotech" = 2)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/oxygen" build_path = "/obj/item/weapon/aiModule/oxygen"
@@ -270,7 +271,7 @@ datum
name = "Module Design (Freeform)" name = "Module Design (Freeform)"
desc = "Allows for the construction of a Freeform AI Module." desc = "Allows for the construction of a Freeform AI Module."
id = "freeform_module" id = "freeform_module"
req_tech = list("programming" = 6) req_tech = list("programming" = 4)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/freeform" build_path = "/obj/item/weapon/aiModule/freeform"
@@ -279,7 +280,7 @@ datum
name = "Module Design (Reset)" name = "Module Design (Reset)"
desc = "Allows for the construction of a Reset AI Module." desc = "Allows for the construction of a Reset AI Module."
id = "reset_module" id = "reset_module"
req_tech = list("programming" = 5) req_tech = list("programming" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/reset" build_path = "/obj/item/weapon/aiModule/reset"
@@ -288,7 +289,7 @@ datum
name = "Module Design (Purge)" name = "Module Design (Purge)"
desc = "Allows for the construction of a Purge AI Module." desc = "Allows for the construction of a Purge AI Module."
id = "purge_module" id = "purge_module"
req_tech = list("programming" = 5) req_tech = list("programming" = 4)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/purge" build_path = "/obj/item/weapon/aiModule/purge"
@@ -297,7 +298,7 @@ datum
name = "Core Module Design (Freeform)" name = "Core Module Design (Freeform)"
desc = "Allows for the construction of a Freeform AI Core Module." desc = "Allows for the construction of a Freeform AI Core Module."
id = "freeformcore_module" id = "freeformcore_module"
req_tech = list("programming" = 6) req_tech = list("programming" = 4)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/freeformcore" build_path = "/obj/item/weapon/aiModule/freeformcore"
@@ -306,7 +307,7 @@ datum
name = "Core Module Design (Asimov)" name = "Core Module Design (Asimov)"
desc = "Allows for the construction of a Asimov AI Core Module." desc = "Allows for the construction of a Asimov AI Core Module."
id = "asimov_module" id = "asimov_module"
req_tech = list("programming" = 5) req_tech = list("programming" = 3)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/asimov" build_path = "/obj/item/weapon/aiModule/asimov"
@@ -315,7 +316,7 @@ datum
name = "Core Module Design (P.A.L.A.D.I.N.)" name = "Core Module Design (P.A.L.A.D.I.N.)"
desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module." desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
id = "paladin_module" id = "paladin_module"
req_tech = list("programming" = 5) req_tech = list("programming" = 4)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/paladin" build_path = "/obj/item/weapon/aiModule/paladin"
@@ -324,7 +325,7 @@ datum
name = "Core Module Design (T.Y.R.A.N.T.)" name = "Core Module Design (T.Y.R.A.N.T.)"
desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module." desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
id = "tyrant_module" id = "tyrant_module"
req_tech = list("programming" = 5, "syndicate" = 2) req_tech = list("programming" = 4, "syndicate" = 2)
build_type = IMPRINTER build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20) materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/tyrant" build_path = "/obj/item/weapon/aiModule/tyrant"
@@ -537,7 +538,7 @@ datum
name = "High-Capacity Power Cell" name = "High-Capacity Power Cell"
desc = "A power cell that holds 10000 units of energy" desc = "A power cell that holds 10000 units of energy"
id = "high_cell" id = "high_cell"
req_tech = list("powerstorage" = 3) req_tech = list("powerstorage" = 2)
build_type = PROTOLATHE | AUTOLATHE build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 700, "$glass" = 60) materials = list("$metal" = 700, "$glass" = 60)
build_path = "/obj/item/weapon/cell/high" build_path = "/obj/item/weapon/cell/high"
@@ -546,12 +547,65 @@ datum
name = "Super-Capacity Power Cell" name = "Super-Capacity Power Cell"
desc = "A power cell that holds 20000 units of energy" desc = "A power cell that holds 20000 units of energy"
id = "super_cell" id = "super_cell"
req_tech = list("powerstorage" = 5, "materials" = 2) req_tech = list("powerstorage" = 3, "materials" = 2)
reliability_base = 75 reliability_base = 75
build_type = PROTOLATHE build_type = PROTOLATHE
materials = list("$metal" = 700, "$glass" = 70) materials = list("$metal" = 700, "$glass" = 70)
build_path = "/obj/item/weapon/cell/super" build_path = "/obj/item/weapon/cell/super"
////////////////////////////////////////
/////////Machine Frame Boards///////////
////////////////////////////////////////
destructive_analyzer
name = "Destructive Analyzer Board"
desc = "The circuit board for a destructive analyzer."
id = "destructive_analyzer"
req_tech = list("materials" = 2, "magnets" = 2)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/machinery/r_n_d/destructive_analyzer"
protolathe
name = "Protolathe Board"
desc = "The circuit board for a protolathe."
id = "protolathe"
req_tech = list("materials" = 3)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/machinery/r_n_d/protolathe"
circuit_imprinter
name = "Circuit Imprinter Board"
desc = "The circuit board for a circuit imprinter."
id = "circuit_imprinter"
req_tech = list("materials" = 2)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/machinery/r_n_d/circuit_imprinter"
protolathe
name = "Protolathe Board"
desc = "The circuit board for a autolathe."
id = "autolathe"
req_tech = list("materials" = 2)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/machinery/autolathe"
/////////////////////////////////////////
//////////////////Test///////////////////
/////////////////////////////////////////
test
name = "Test Design"
desc = "A design to test the new protolathe."
id = "protolathe_test"
build_type = PROTOLATHE
req_tech = list("materials" = 1)
materials = list("$gold" = 3000, "iron" = 15, "copper" = 10, "$silver" = 2500)
build_path = "/obj/item/weapon/banhammer"
//////////////////////////////////////// ////////////////////////////////////////
//Disks for transporting design datums// //Disks for transporting design datums//
//////////////////////////////////////// ////////////////////////////////////////

View File

@@ -3,31 +3,85 @@ Destructive Analyzer
It is used to destroy hand-held objects and advance technological research. Controls are in the linked R&D console. It is used to destroy hand-held objects and advance technological research. Controls are in the linked R&D console.
Note: Must be placed east/right of an R&D console to function. Note: Must be placed within 3 tiles of the R&D Console
*/ */
/obj/machinery/r_n_d/destructive_analyzer /obj/machinery/r_n_d/destructive_analyzer
name = "Destructive Analyzer" name = "Destructive Analyzer"
icon_state = "d_analyzer" icon_state = "d_analyzer"
var var
obj/item/weapon/loaded_item = null obj/item/weapon/loaded_item = null
busy = 0 decon_mod = 1
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/micro_manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
RefreshParts()
RefreshParts()
var/T = 0
for(var/obj/item/weapon/stock_parts/S in src)
T += S.rating * 0.1
T = between (0, T, 1)
decon_mod = T
meteorhit() meteorhit()
del(src) del(src)
return return
proc/ConvertReqString2List(var/list/source_list)
var/list/temp_list = params2list(source_list)
for(var/O in temp_list)
temp_list[O] = text2num(temp_list[O])
return temp_list
attackby(var/obj/O as obj, var/mob/user as mob) attackby(var/obj/O as obj, var/mob/user as mob)
if (disabled)
return
if (shocked)
shock(user,50)
if (istype(O, /obj/item/weapon/screwdriver))
if (!opened)
opened = 1
if(linked_console)
linked_console.linked_lathe = null
linked_console = null
icon_state = "d_analyzer_t"
user << "You open the maintenance hatch of [src]."
else
opened = 0
icon_state = "d_analyzer"
user << "You close the maintenance hatch of [src]."
return
if (opened)
if(istype(O, /obj/item/weapon/crowbar))
playsound(src.loc, 'Crowbar.ogg', 50, 1)
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc)
M.state = 2
M.icon_state = "box_1"
for(var/obj/I in component_parts)
I.loc = src.loc
del(src)
return 1
else
user << "\red You can't load the [src.name] while it's opened."
return 1
if (!linked_console) if (!linked_console)
user << "\red The protolathe must be linked to an R&D console first!" user << "\red The protolathe must be linked to an R&D console first!"
return return
if (busy) if (busy)
user << "\red The protolathe is busy right now." user << "\red The protolathe is busy right now."
return return
if (istype(O, /obj/item/weapon) && !loaded_item) if (istype(O, /obj/item) && !loaded_item)
if(!O.origin_tech) if(!O.origin_tech)
user << "\red This doesn't seem to have a tech origin!" user << "\red This doesn't seem to have a tech origin!"
return return
if (O.origin_tech.len == 0) var/list/temp_tech = ConvertReqString2List(O.origin_tech)
if (temp_tech.len == 0)
user << "\red You cannot deconstruct this item!" user << "\red You cannot deconstruct this item!"
return return
if(O.reliability < 90 && O.crit_fail == 0) if(O.reliability < 90 && O.crit_fail == 0)
@@ -52,4 +106,4 @@ Note: Must be placed east/right of an R&D console to function.
icon_state = "d20" icon_state = "d20"
g_amt = 5000 g_amt = 5000
m_amt = 5000 m_amt = 5000
origin_tech = list("materials" = 4, "plasmatech" = 2, "syndicate" = 5, "programming" = 9) origin_tech = "materials=5;plasmatech=5;syndicate=5;programming=9"

View File

@@ -10,58 +10,130 @@ Note: Must be placed west/left of and R&D console to function.
/obj/machinery/r_n_d/protolathe /obj/machinery/r_n_d/protolathe
name = "Protolathe" name = "Protolathe"
icon_state = "protolathe" icon_state = "protolathe"
flags = OPENCONTAINER
var var
busy = 0 // max_material_storage = 100000 //All this could probably be done better with a list but meh.
max_m_amount = 150000.0
max_g_amount = 75000.0
m_amount = 0.0 m_amount = 0.0
g_amount = 0.0 g_amount = 0.0
gold_amount = 0.0
silver_amount = 0.0
plasma_amount = 0.0
diamond_amount = 0.0
clown_amount = 0.0
New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/protolathe(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/micro_manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/micro_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()
proc/TotalMaterials() //returns the total of all the stored materials. Makes code neater.
return m_amount + g_amount + gold_amount + silver_amount + plasma_amount + diamond_amount + clown_amount
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_storage = T * 75000
attackby(var/obj/item/O as obj, var/mob/user as mob) attackby(var/obj/item/O as obj, var/mob/user as mob)
if (disabled)
return
if (shocked)
shock(user,50)
if (O.is_open_container())
return 1
if (istype(O, /obj/item/weapon/screwdriver))
if (!opened)
opened = 1
if(linked_console)
linked_console.linked_lathe = null
linked_console = null
icon_state = "protolathe_t"
user << "You open the maintenance hatch of [src]."
else
opened = 0
icon_state = "protolathe"
user << "You close the maintenance hatch of [src]."
return
if (opened)
if(istype(O, /obj/item/weapon/crowbar))
playsound(src.loc, 'Crowbar.ogg', 50, 1)
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc)
M.state = 2
M.icon_state = "box_1"
for(var/obj/I in component_parts)
I.loc = src.loc
del(src)
return 1
else
user << "\red You can't load the [src.name] while it's opened."
return 1
if (!linked_console) if (!linked_console)
user << "\The protolathe must be linked to an R&D console first!" user << "\The protolathe must be linked to an R&D console first!"
return 1 return 1
if (!istype(O, /obj/item/stack))
user << "\red You cannot insert this item into the protolathe!"
return 1
if (stat)
return 1
if (busy) if (busy)
user << "\red The protolathe is busy. Please wait for completion of previous operation." user << "\red The protolathe is busy. Please wait for completion of previous operation."
return 1 return 1
if (src.m_amount + O.m_amt > max_m_amount) if (!istype(O, /obj/item/stack/sheet))
user << "\red The protolathe is full. Please remove metal from the protolathe in order to insert more." user << "\red You cannot insert this item into the protolathe!"
return 1 return 1
if (src.g_amount + O.g_amt > max_g_amount) if (stat)
user << "\red The protolathe is full. Please remove glass from the protolathe in order to insert more."
return 1 return 1
if (O.m_amt == 0 && O.g_amt == 0) if (TotalMaterials() + 3750 > max_material_storage)
user << "\red This object does not contain significant amounts of metal or glass, or cannot be accepted by the protolathe due to size or hazardous materials." user << "\red The protolathe's material bin is full. Please remove material before adding more."
return 1 return 1
var/obj/item/stack/stack = O
var/amount = 1 var/amount = 1
var/obj/item/stack/stack var/title = "[stack.name]: [stack.amount] sheet\s left"
var/m_amt = O.m_amt switch(alert(title, "How many sheets do you want to load?", "one", "max", "cancel", null))
var/g_amt = O.g_amt if("one")
stack = O amount = 1
amount = stack.amount if("max")
if (m_amt) amount = min(stack.amount, round((max_material_storage-TotalMaterials())/3750))
amount = min(amount, round((max_m_amount-src.m_amount)/m_amt)) else
flick("protolathe_o",src)//plays metal insertion animation return 1
if (g_amt)
amount = min(amount, round((max_g_amount-src.g_amount)/g_amt)) if(istype(O, /obj/item/stack/sheet/glass))
flick("protolathe_r",src)//plays glass insertion animation flick("protolathe_r",src)//plays glass insertion animation
stack.use(amount) else
flick("protolathe_o",src)//plays metal insertion animation
icon_state = "protolathe" icon_state = "protolathe"
busy = 1 busy = 1
use_power(max(1000, (m_amt+g_amt)*amount/10)) use_power(max(1000, (3750*amount/10)))
spawn(16) spawn(16)
icon_state = "protolathe" icon_state = "protolathe"
flick("protolathe_o",src) flick("protolathe_o",src)
src.m_amount += m_amt * amount if(istype(stack, /obj/item/stack/sheet/metal))
src.g_amount += g_amt * amount m_amount += amount * 3750
if (O && O.loc == src) else if(istype(stack, /obj/item/stack/sheet/glass))
del(O) g_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/gold))
gold_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/silver))
silver_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/plasma))
plasma_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/diamond))
diamond_amount += amount * 3750
else if(istype(stack, /obj/item/stack/sheet/clown))
clown_amount += amount * 3750
stack.use(amount)
busy = 0 busy = 0
src.updateUsrDialog() src.updateUsrDialog()
return return

View File

@@ -28,11 +28,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
*/ */
/obj/machinery/r_n_d //All devices that link into the R&D console fall into thise type for easy identification.
name = "R&D Device"
density = 1
anchored = 1
var/obj/machinery/computer/rdconsole/linked_console
/obj/machinery/computer/rdconsole /obj/machinery/computer/rdconsole
name = "R&D Console" name = "R&D Console"
@@ -76,6 +71,16 @@ won't update every console in existence) but it's more of a hassle to do. Also,
return_name = "Metal" return_name = "Metal"
if("glass") if("glass")
return_name = "Glass" return_name = "Glass"
if("gold")
return_name = "Gold"
if("silver")
return_name = "Silver"
if("plasma")
return_name = "Solid Plasma"
if("diamond")
return_name = "Diamond"
if("clown")
return_name = "Bananium"
else else
for(var/R in typesof(/datum/reagent) - /datum/reagent) for(var/R in typesof(/datum/reagent) - /datum/reagent)
temp_reagent = null temp_reagent = null
@@ -88,8 +93,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
return return_name return return_name
SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any). SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any).
for(var/obj/machinery/r_n_d/D in orange(3,src)) for(var/obj/machinery/r_n_d/D in oview(3,src))
if(D.linked_console != null) if(D.linked_console != null || D.disabled || D.opened)
continue continue
if(istype(D, /obj/machinery/r_n_d/destructive_analyzer)) if(istype(D, /obj/machinery/r_n_d/destructive_analyzer))
if(linked_destroy == null) if(linked_destroy == null)
@@ -109,7 +114,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
New() New()
..() ..()
files = new /datum/research(src) //Setup the research data holder. files = new /datum/research(src) //Setup the research data holder.
spawn(5) spawn(10)
SyncRDevices() SyncRDevices()
attackby(var/obj/item/weapon/D as obj, var/mob/user as mob) attackby(var/obj/item/weapon/D as obj, var/mob/user as mob)
@@ -237,14 +242,17 @@ won't update every console in existence) but it's more of a hassle to do. Also,
flick("d_analyzer_process", linked_destroy) flick("d_analyzer_process", linked_destroy)
spawn(24) spawn(24)
linked_destroy.busy = 0 linked_destroy.busy = 0
if(linked_destroy.reliability < 90) if(!linked_destroy.hacked)
files.UpdateDesign(linked_destroy.loaded_item.type) if(linked_destroy.reliability < 90)
for(var/T in linked_destroy.loaded_item.origin_tech) files.UpdateDesign(linked_destroy.loaded_item.type)
files.UpdateTech(T, linked_destroy.loaded_item.origin_tech[T]) else
if(linked_lathe) //Also sends salvaged materials to a linked autolateh, if any. var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech)
linked_lathe.m_amount = min(linked_lathe.max_m_amount, ((linked_lathe.m_amount + linked_destroy.loaded_item.m_amt)/2)) for(var/T in temp_tech)
linked_lathe.g_amount = min(linked_lathe.max_g_amount, ((linked_lathe.g_amount + linked_destroy.loaded_item.g_amt)/2)) files.UpdateTech(T, temp_tech[T])
linked_destroy.loaded_item = null if(linked_lathe) //Also sends salvaged materials to a linked autolateh, if any.
linked_lathe.m_amount = min(linked_lathe.max_material_storage, ((linked_lathe.TotalMaterials() + linked_destroy.loaded_item.m_amt)*linked_destroy.decon_mod))
linked_lathe.g_amount = min(linked_lathe.max_material_storage, ((linked_lathe.TotalMaterials() + linked_destroy.loaded_item.g_amt)*linked_destroy.decon_mod))
linked_destroy.loaded_item = null
for(var/I in contents) for(var/I in contents)
del(I) del(I)
use_power(250) use_power(250)
@@ -281,20 +289,36 @@ won't update every console in existence) but it's more of a hassle to do. Also,
being_built = D being_built = D
break break
var/power = max(2000, (text2num(href_list["metal"])+text2num(href_list["glass"]))/5) var/power = max(2000, (text2num(href_list["metal"])+text2num(href_list["glass"]))/5)
for(var/M in being_built.materials)
power += being_built.materials[M]
power = max(2000, power)
screen = 0.3 screen = 0.3
linked_lathe.busy = 1 linked_lathe.busy = 1
flick("protolathe_n",linked_lathe) flick("protolathe_n",linked_lathe)
spawn(16) spawn(16)
use_power(power) use_power(power)
spawn(16) spawn(16)
linked_lathe.m_amount -= text2num(href_list["metal"]) for(var/M in being_built.materials)
linked_lathe.g_amount -= text2num(href_list["glass"]) switch(M)
if(linked_lathe.m_amount < 0) if("$metal")
linked_lathe.m_amount = 0 linked_lathe.m_amount = max(0, (linked_lathe.m_amount-being_built.materials[M]))
if(linked_lathe.g_amount < 0) if("$glass")
linked_lathe.g_amount = 0 linked_lathe.g_amount = max(0, (linked_lathe.g_amount-being_built.materials[M]))
if("$gold")
linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-being_built.materials[M]))
if("$silver")
linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-being_built.materials[M]))
if("$plasma")
linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-being_built.materials[M]))
if("$diamond")
linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-being_built.materials[M]))
if("$clown")
linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-being_built.materials[M]))
else
linked_lathe.reagents.remove_reagent(M, being_built.materials[M])
var/obj/new_item = new being_built.build_path(src) var/obj/new_item = new being_built.build_path(src)
new_item.reliability = being_built.reliability new_item.reliability = being_built.reliability
if(linked_lathe.hacked) being_built.reliability = max((reliability / 2), 0)
new_item.loc = linked_lathe.loc new_item.loc = linked_lathe.loc
linked_lathe.busy = 0 linked_lathe.busy = 0
screen = 3.1 screen = 3.1
@@ -326,18 +350,49 @@ won't update every console in existence) but it's more of a hassle to do. Also,
power += being_built.materials[I] power += being_built.materials[I]
var/obj/new_item = new being_built.build_path(src) var/obj/new_item = new being_built.build_path(src)
new_item.reliability = being_built.reliability new_item.reliability = being_built.reliability
if(linked_imprinter.hacked) being_built.reliability = max((reliability / 2), 0)
use_power(power) use_power(power)
new_item.loc = linked_imprinter.loc new_item.loc = linked_imprinter.loc
linked_imprinter.busy = 0 linked_imprinter.busy = 0
screen = 4.1 screen = 4.1
updateUsrDialog() updateUsrDialog()
else if(href_list["dispose"]) //Causes the circuit imprinter to dispose of a single reagent (all of it) else if(href_list["disposeI"]) //Causes the circuit imprinter to dispose of a single reagent (all of it)
linked_imprinter.reagents.del_reagent(href_list["dispose"]) linked_imprinter.reagents.del_reagent(href_list["dispose"])
else if(href_list["disposeall"]) //Causes the circuit imprinter to dispose of all it's reagents. else if(href_list["disposeallI"]) //Causes the circuit imprinter to dispose of all it's reagents.
linked_imprinter.reagents.clear_reagents() linked_imprinter.reagents.clear_reagents()
else if(href_list["disposeP"]) //Causes the protolathe to dispose of a single reagent (all of it)
linked_lathe.reagents.del_reagent(href_list["dispose"])
else if(href_list["disposeallP"]) //Causes the protolathe to dispose of all it's reagents.
linked_lathe.reagents.clear_reagents()
else if(href_list["ejectsheet"]) //Causes the protolathe to eject a sheet of material
switch(href_list["ejectsheet"])
if("metal")
new /obj/item/stack/sheet/metal(linked_lathe.loc, text2num(href_list["ejectsheet_amt"]))
linked_lathe.m_amount = max(0, (linked_lathe.m_amount-(text2num(href_list["ejectsheet_amt"]) * 3750)))
if("glass")
new /obj/item/stack/sheet/glass(linked_lathe.loc, text2num(href_list["ejectsheet_amt"]))
linked_lathe.g_amount = max(0, (linked_lathe.g_amount-(text2num(href_list["ejectsheet_amt"]) * 3750)))
if("gold")
new /obj/item/stack/sheet/gold(linked_lathe.loc, text2num(href_list["ejectsheet_amt"]))
linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-(text2num(href_list["ejectsheet_amt"]) * 3750)))
if("silver")
new /obj/item/stack/sheet/silver(linked_lathe.loc, text2num(href_list["ejectsheet_amt"]))
linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-(text2num(href_list["ejectsheet_amt"]) * 3750)))
if("plasma")
new /obj/item/stack/sheet/plasma(linked_lathe.loc, text2num(href_list["ejectsheet_amt"]))
linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-(text2num(href_list["ejectsheet_amt"]) * 3750)))
if("diamond")
new /obj/item/stack/sheet/diamond(linked_lathe.loc, text2num(href_list["ejectsheet_amt"]))
linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-(text2num(href_list["ejectsheet_amt"]) * 3750)))
if("clown")
new /obj/item/stack/sheet/clown(linked_lathe.loc, text2num(href_list["ejectsheet_amt"]))
linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-(text2num(href_list["ejectsheet_amt"]) * 3750)))
else if(href_list["find_device"]) //The R&D console looks for devices nearby to link up with. else if(href_list["find_device"]) //The R&D console looks for devices nearby to link up with.
screen = 0.0 screen = 0.0
spawn(20) spawn(20)
@@ -510,8 +565,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "Deconstruction Menu<HR>" dat += "Deconstruction Menu<HR>"
dat += "Name: [linked_destroy.loaded_item.name]<BR>" dat += "Name: [linked_destroy.loaded_item.name]<BR>"
dat += "Origin Tech:<BR>" dat += "Origin Tech:<BR>"
for(var/T in linked_destroy.loaded_item.origin_tech) var/list/temp_tech = linked_destroy.ConvertReqString2List(linked_destroy.loaded_item.origin_tech)
dat += "* [CallTechName(T)] [linked_destroy.loaded_item.origin_tech[T]]<BR>" for(var/T in temp_tech)
dat += "* [CallTechName(T)] [temp_tech[T]]<BR>"
dat += "<HR><A href='?src=\ref[src];deconstruct=1'>Deconstruct Item</A> || " dat += "<HR><A href='?src=\ref[src];deconstruct=1'>Deconstruct Item</A> || "
dat += "<A href='?src=\ref[src];eject_item=1'>Eject Item</A> || " dat += "<A href='?src=\ref[src];eject_item=1'>Eject Item</A> || "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>" dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
@@ -523,20 +579,104 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(3.1) if(3.1)
dat += "Protolathe Menu:<BR><BR>" dat += "Protolathe Menu:<BR><BR>"
dat += "<B>Metal Amount:</B> [linked_lathe.m_amount] cm<sup>3</sup> (MAX: [linked_lathe.max_m_amount])<BR>" dat += "<B>Material Amount:</B> [linked_lathe.TotalMaterials()] cm<sup>3</sup> (MAX: [linked_lathe.max_material_storage])<BR>"
dat += "<B>Glass Amount:</B> [linked_lathe.g_amount] cm<sup>3</sup> (MAX: [linked_lathe.max_g_amount])<HR>" dat += "<B>Chemical Volume:</B> [linked_lathe.reagents.total_volume] (MAX: [linked_lathe.reagents.maximum_volume])<HR>"
for(var/datum/design/D in files.known_designs) for(var/datum/design/D in files.known_designs)
if(!(D.build_type & PROTOLATHE)) if(!(D.build_type & PROTOLATHE))
continue continue
var/temp_glass = 0 var/temp_dat = "[D.name]"
var/temp_metal = 0 var/check_materials = 1
if("$glass" in D.materials) temp_glass = D.materials["$glass"] for(var/M in D.materials)
if("$metal" in D.materials) temp_metal = D.materials["$metal"] temp_dat += " [D.materials[M]] [CallMaterialName(M)]"
if (linked_lathe.m_amount < temp_metal || linked_lathe.g_amount < temp_glass) if(copytext(M, 1, 2) == "$")
dat += "[D.name] ([temp_metal]m || [temp_glass]g)<BR>" switch(M)
if("$glass")
if(D.materials[M] > linked_lathe.g_amount) check_materials = 0
if("$metal")
if(D.materials[M] > linked_lathe.m_amount) check_materials = 0
if("$gold")
if(D.materials[M] > linked_lathe.gold_amount) check_materials = 0
if("$silver")
if(D.materials[M] > linked_lathe.silver_amount) check_materials = 0
if("$plasma")
if(D.materials[M] > linked_lathe.plasma_amount) check_materials = 0
if("$diamond")
if(D.materials[M] > linked_lathe.diamond_amount) check_materials = 0
if("$clown")
if(D.materials[M] > linked_lathe.clown_amount) check_materials = 0
else if (!linked_lathe.reagents.has_reagent(M, D.materials[M]))
check_materials = 0
if (check_materials)
dat += "* <A href='?src=\ref[src];build=[D.id]'>[temp_dat]</A><BR>"
else else
dat += "<A href='?src=\ref[src];build=[D.id];glass=[temp_glass];metal=[temp_metal]'>[D.name] ([temp_metal]m || [temp_glass]g)</A><BR>" dat += "* [temp_dat]<BR>"
dat += "<HR><A href='?src=\ref[src];menu=1.0'>Main Menu</A>" dat += "<HR><A href='?src=\ref[src];menu=3.2'>Material Storage</A> || "
dat += "<A href='?src=\ref[src];menu=3.3'>Chemical Storage</A> || "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(3.2) //Protolathe Material Storage Sub-menu
dat += "Material Storage<BR><HR>"
//Metal
dat += "* [linked_lathe.m_amount] cm<sup>3</sup> of Metal || "
dat += "Eject: "
if(linked_lathe.m_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=metal;ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.m_amount > 18750) dat += "<A href='?src=\ref[src];ejectsheet=metal;ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.m_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=metal;ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Glass
dat += "* [linked_lathe.g_amount] cm<sup>3</sup> of Glass || "
dat += "Eject: "
if(linked_lathe.g_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=glass;ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.g_amount > 18750) dat += "<A href='?src=\ref[src];ejectsheet=glass;ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.g_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=glass;ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Gold
dat += "* [linked_lathe.gold_amount] cm<sup>3</sup> of Gold || "
dat += "Eject: "
if(linked_lathe.gold_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=gold;ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.gold_amount > 18750) dat += "<A href='?src=\ref[src];ejectsheet=gold;ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.gold_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=gold;ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Silver
dat += "* [linked_lathe.silver_amount] cm<sup>3</sup> of Silver || "
dat += "Eject: "
if(linked_lathe.silver_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=silver;ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.silver_amount > 18750) dat += "<A href='?src=\ref[src];ejectsheet=silver;ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.silver_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=silver;ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Plasma
dat += "* [linked_lathe.plasma_amount] cm<sup>3</sup> of Solid Plasma || "
dat += "Eject: "
if(linked_lathe.plasma_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=plasma;ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.plasma_amount > 18750) dat += "<A href='?src=\ref[src];ejectsheet=plasma;ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.plasma_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=plasmaejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Diamond
dat += "* [linked_lathe.diamond_amount] cm<sup>3</sup> of Diamond || "
dat += "Eject: "
if(linked_lathe.diamond_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=diamond;ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.diamond_amount > 18750) dat += "<A href='?src=\ref[src];ejectsheet=diamond;ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.diamond_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=diamond;ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
//Bananium
dat += "* [linked_lathe.clown_amount] cm<sup>3</sup> of Bananium || "
dat += "Eject: "
if(linked_lathe.clown_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=clown;ejectsheet_amt=1'>(1 Sheet)</A> "
if(linked_lathe.clown_amount > 18750) dat += "<A href='?src=\ref[src];ejectsheet=clown;ejectsheet_amt=5'>(5 Sheets)</A> "
if(linked_lathe.clown_amount > 3750) dat += "<A href='?src=\ref[src];ejectsheet=clown;ejectsheet_amt=50'>(Max Sheets)</A>"
dat += "<BR>"
dat += "<HR><A href='?src=\ref[src];menu=3.1'>Protolathe Menu</A> | "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(3.3) //Protolathe Chemical Storage Submenu
dat += "Chemical Storage<BR><HR>"
for(var/datum/reagent/R in linked_lathe.reagents.reagent_list)
dat += "Name: [R.name] | Units: [R.volume] "
dat += "<A href='?src=\ref[src];disposeP=[R.id]'>(Purge)</A><BR>"
dat += "<A href='?src=\ref[src];disposeallP=1'><U>Disposal All Chemicals in Storage</U></A><BR>"
dat += "<HR><A href='?src=\ref[src];menu=3.1'>Protolathe Menu</A> | "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
///////////////////CIRCUIT IMPRINTER SCREENS//////////////////// ///////////////////CIRCUIT IMPRINTER SCREENS////////////////////
if(4.0) if(4.0)
@@ -572,8 +712,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "Chemical Storage<BR><HR>" dat += "Chemical Storage<BR><HR>"
for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list) for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list)
dat += "Name: [R.name] | Units: [R.volume] " dat += "Name: [R.name] | Units: [R.volume] "
dat += "<A href='?src=\ref[src];dispose=[R.id]'>(Purge)</A><BR>" dat += "<A href='?src=\ref[src];disposeI=[R.id]'>(Purge)</A><BR>"
dat += "<A href='?src=\ref[src];disposeall=1'><U>Disposal All Chemicals in Storage</U></A><BR>" dat += "<A href='?src=\ref[src];disposeallI=1'><U>Disposal All Chemicals in Storage</U></A><BR>"
dat += "<HR><A href='?src=\ref[src];menu=4.1'>Imprinter Menu</A> | " dat += "<HR><A href='?src=\ref[src];menu=4.1'>Imprinter Menu</A> | "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>" dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"

View File

@@ -0,0 +1,105 @@
//All devices that link into the R&D console fall into thise type for easy identification and some shared procs.
/obj/machinery/r_n_d
name = "R&D Device"
density = 1
anchored = 1
use_power = 1
var
busy = 0
hacked = 0
disabled = 0
shocked = 0
list/wires = list()
hack_wire
disable_wire
shock_wire
opened = 0
obj/machinery/computer/rdconsole/linked_console
New()
..()
wires["Red"] = 0
wires["Blue"] = 0
wires["Green"] = 0
wires["Yellow"] = 0
wires["Black"] = 0
wires["White"] = 0
var/list/w = list("Red","Blue","Green","Yellow","Black","White")
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
proc
shock(mob/user, prb)
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
return 0
if(!prob(prb))
return 0
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7))
return 1
else
return 0
attack_hand(mob/user as mob)
if (shocked)
shock(user,50)
if(opened)
var/dat as text
dat += "[src.name] Wires:<BR>"
for(var/wire in src.wires)
dat += text("[wire] Wire: <A href='?src=\ref[src];wire=[wire];cut=1'>[src.wires[wire] ? "Mend" : "Cut"]</A> <A href='?src=\ref[src];wire=[wire];pulse=1'>Pulse</A><BR>")
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>[src.name] Hacking</TITLE></HEAD><BODY>[dat]</BODY></HTML>","window=hack_win")
return
Topic(href, href_list)
if(..())
return
usr.machine = src
src.add_fingerprint(usr)
if(href_list["pulse"])
var/temp_wire = href_list["wire"]
if (!istype(usr.equipped(), /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 == href_list["wire"])
src.hacked = !src.hacked
spawn(100) src.hacked = !src.hacked
if(src.disable_wire == href_list["wire"])
src.disabled = !src.disabled
src.shock(usr,50)
spawn(100) src.disabled = !src.disabled
if(src.shock_wire == href_list["wire"])
src.shocked = !src.shocked
src.shock(usr,50)
spawn(100) src.shocked = !src.shocked
if(href_list["cut"])
if (!istype(usr.equipped(), /obj/item/weapon/wirecutters))
usr << "You need wirecutters!"
else
var/temp_wire = href_list["wire"]
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)
src.updateUsrDialog()

View File

@@ -33,7 +33,7 @@ The tech datums are the actual "tech trees" that you improve through researching
- Name: Pretty obvious. This is often viewable to the players. - Name: Pretty obvious. This is often viewable to the players.
- Desc: Pretty obvious. Also player viewable. - Desc: Pretty obvious. Also player viewable.
- ID: This is the unique ID of the tech that is used by the various procs to find and/or maniuplate it. - ID: This is the unique ID of the tech that is used by the various procs to find and/or maniuplate it.
- Level: This is the current level of the tech. All techs start at 1 and have a max of 10. Devices and some techs require a certain - Level: This is the current level of the tech. All techs start at 1 and have a max of 20. Devices and some techs require a certain
level in specific techs before you can produce them. level in specific techs before you can produce them.
- Req_tech: This is a list of the techs required to unlock this tech path. If left blank, it'll automatically be loaded into the - Req_tech: This is a list of the techs required to unlock this tech path. If left blank, it'll automatically be loaded into the
research holder datum. research holder datum.
@@ -123,7 +123,7 @@ research holder datum.
if(DesignHasReqs(PD)) if(DesignHasReqs(PD))
AddDesign2Known(PD) AddDesign2Known(PD)
for(var/datum/tech/T in known_tech) for(var/datum/tech/T in known_tech)
T = between(1,T.level,10) T = between(1,T.level,20)
for(var/datum/design/D in known_designs) for(var/datum/design/D in known_designs)
D.CalcReliability(known_tech) D.CalcReliability(known_tech)
return return
@@ -203,19 +203,12 @@ datum
desc = "The study of technologies that violate Nanotrassen regulations." desc = "The study of technologies that violate Nanotrassen regulations."
id = "syndicate" id = "syndicate"
combat
name = "Combat Systems Research"
desc = "The development of offensive and defensive systems."
id = "combat"
//Branch Techs //Branch Techs
metaltech
name = "Metallurgy Research"
desc = "Development of new and improved metal alloys for different purposes."
id = "metaltech"
req_tech = list("materials" = 2)
glasstech
name = "Transparent Material Research"
desc = "Development of new and stronger transparent materials (glass, crystal, transparent aluminum, etc)."
id = "glasstech"
req_tech = list("materials" = 2)
explosives explosives
name = "Explosives Research" name = "Explosives Research"
desc = "The creation and application of explosive materials." desc = "The creation and application of explosive materials."
@@ -228,12 +221,6 @@ datum
id = "generators" id = "generators"
req_tech = list("powerstorage" = 2) req_tech = list("powerstorage" = 2)
smestech
name = "Super-Magnetic Energy Storage Technology"
desc = "Design better, stationary power storage devices."
id = "smestech"
req_tech = list("powerstorage" = 3, "magnets" = 3)
robotics robotics
name = "Robotics Technology" name = "Robotics Technology"
desc = "The development of advanced automated, autonomous machines." desc = "The development of advanced automated, autonomous machines."

View File

@@ -45,12 +45,33 @@
<li><b>Errorage updated:</b> <li><b>Errorage updated:</b>
<ul> <ul>
<li><b><font color='blue'>New look for the bio suits. (Biosuit and hood sprites by Cheridan)</font></b></li> <li><b><font color='blue'>New look for the bio suits. (Biosuit and hood sprites by Cheridan)</font></b></li>
<li><b><font color='blue'>New radiation suits added along with radiation hoods and masks. Must wear complete set to get full protection.</font></b></li>
</ul> </ul>
</li> </li>
<li><b>Rastaf0 updated:</b> <li><b>Rastaf0 updated:</b>
<ul> <ul>
<li><b><font color='blue'>Binary translator cost reduced to 1 telecrystal.</font></b></li> </ul> <li><b><font color='blue'>Binary translator cost reduced to 1 telecrystal.</font></b></li> </ul>
</li> </li>
<li><b>AtomicTroop updated:</b>
<ul>
<li><b><font color='red'>Mail Sorter job added.</font></b></li>
<li><b><font color='red'>Disposal system redone to allow for package transfers. Packages are routed to mail sorter room and then routed to the rest of the station</font></b></li>
<li><b><font color='blue'>Disposal area moved. Old disposal area now just an incinerator and a small disposal into space.</font></b></li>
<li><b><font color='blue'>New wrapping paper for sending packages.</font></b></li>
</ul>
</li>
<li><b>Veyveyr updates:</b>
<ul>
<li><b><font color='blue'>New machine frame sprite.</font></b></li>
<li><b><font color='blue'>Braincase sprites for mechs added. Not actually used, yet.</font></b></li>
</ul>
</li>
<li><b>Darem updates:</b>
<ul>
<li><b><font color='red'>Research and Development system is LIVE.</font> <font color='blue'>Scientists can now research new advancements in technology. Not much can be made, right now, but the system is there. Technologies are researched by shoving items into the destructive analyzer. Circuit Imprinter, Destructive Analyzer, and Protolathe are controlled from the R&D console.</font></b></li>
<li><b><font color='blue'>Autolathe, Protolathe, Destructive Analyzer, and Circuit Imprinter can now be built, taken apart, and upgraded. The basic frame for all of the above requires 5 metal.</font></b></li>
</ul>
</li>
</ul> </ul>
<font color='blue'><b>15 February 2011, Tuesday<b></font> <font color='blue'><b>15 February 2011, Tuesday<b></font>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -121,7 +121,6 @@
#define FILE_DIR "icons/turf" #define FILE_DIR "icons/turf"
#define FILE_DIR "interface" #define FILE_DIR "interface"
#define FILE_DIR "maps" #define FILE_DIR "maps"
#define FILE_DIR "maps/backup"
#define FILE_DIR "sound" #define FILE_DIR "sound"
#define FILE_DIR "sound/ambience" #define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/announcer" #define FILE_DIR "sound/announcer"
@@ -571,6 +570,7 @@
#include "code\game\research\protolathe.dm" #include "code\game\research\protolathe.dm"
#include "code\game\research\rd-readme.dm" #include "code\game\research\rd-readme.dm"
#include "code\game\research\rdconsole.dm" #include "code\game\research\rdconsole.dm"
#include "code\game\research\rdmachines.dm"
#include "code\game\research\research.dm" #include "code\game\research\research.dm"
#include "code\game\spacecraft\manufacturing.dm" #include "code\game\spacecraft\manufacturing.dm"
#include "code\game\spacecraft\shipcore.dm" #include "code\game\spacecraft\shipcore.dm"
@@ -757,5 +757,5 @@
#include "code\WorkInProgress\recycling\scrap.dm" #include "code\WorkInProgress\recycling\scrap.dm"
#include "code\WorkInProgress\recycling\sortingmachinery.dm" #include "code\WorkInProgress\recycling\sortingmachinery.dm"
#include "interface\skin.dmf" #include "interface\skin.dmf"
#include "maps\tgstation.2.0.2.dmm" #include "maps\tgstation.2.0.3.dmm"
// END_INCLUDE // END_INCLUDE