mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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++
|
||||||
@@ -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)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -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), \
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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//
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -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
|
||||||
@@ -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>"
|
||||||
|
|
||||||
|
|||||||
105
code/game/research/rdmachines.dm
Normal file
105
code/game/research/rdmachines.dm
Normal 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()
|
||||||
@@ -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."
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user