mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
Merge with upstream/master
Fixes conflicts
This commit is contained in:
@@ -230,7 +230,7 @@
|
||||
name = "Metal"
|
||||
id = "metal"
|
||||
build_type = AUTOLATHE
|
||||
materials = list("$metal" = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list("$metal" = 3750)
|
||||
build_path = /obj/item/stack/sheet/metal
|
||||
category = list("initial","Construction")
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
name = "Reinforced Glass"
|
||||
id = "rglass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list("$metal" = 1000, "$glass" = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list("$metal" = 1875, "$glass" = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/rglass
|
||||
category = list("initial","Construction")
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
name = "Metal Rod"
|
||||
id = "rods"
|
||||
build_type = AUTOLATHE
|
||||
materials = list("$metal" = 1000)
|
||||
materials = list("$metal" = 1875)
|
||||
build_path = /obj/item/stack/rods
|
||||
category = list("initial","Construction")
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
id = "handcuffs"
|
||||
build_type = AUTOLATHE
|
||||
materials = list("$metal" = 500)
|
||||
build_path = /obj/item/weapon/handcuffs
|
||||
build_path = /obj/item/weapon/restraints/handcuffs
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/incendiary_slug
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
req_tech = list("programming" = 2, "biotech" = 2, "magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 30, "$glass" = 20)
|
||||
reliability_base = 74
|
||||
reliability_base = 76
|
||||
build_path = /obj/item/device/robotanalyzer
|
||||
category = list("Medical")
|
||||
|
||||
@@ -77,6 +77,17 @@
|
||||
build_path = /obj/item/weapon/implantcase/freedom
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/sensor_device
|
||||
name = "Handheld Crew Monitor"
|
||||
desc = "A device for tracking crew members on the station."
|
||||
id = "sensor_device"
|
||||
req_tech = list("biotech" = 4, "magnets" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 30, "$glass" = 20)
|
||||
reliability_base = 76
|
||||
build_path = /obj/item/device/sensor_device
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/implanter
|
||||
name = "Implanter"
|
||||
desc = "A basic implanter for injecting implants"
|
||||
|
||||
@@ -130,8 +130,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
files.known_tech=files.possible_tech
|
||||
for(var/datum/tech/KT in files.known_tech)
|
||||
if(KT.level < KT.max_level)
|
||||
KT.level=KT.max_level
|
||||
|
||||
KT.level=KT.max_level
|
||||
|
||||
/obj/machinery/computer/rdconsole/New()
|
||||
..()
|
||||
files = new /datum/research(src) //Setup the research data holder.
|
||||
@@ -165,16 +165,17 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
user.drop_item()
|
||||
D.loc = src
|
||||
user << "<span class='notice'> You add the disk to the machine!</span>"
|
||||
else if(istype(D,/obj/item/weapon/card/emag))
|
||||
if(!emagged)
|
||||
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
|
||||
emagged = 1
|
||||
user << "<span class='notice'>You you disable the security protocols</span>"
|
||||
else
|
||||
..()
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/rdconsole/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
|
||||
emagged = 1
|
||||
user << "<span class='notice'>You disable the security protocols</span>"
|
||||
|
||||
/obj/machinery/computer/rdconsole/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
@@ -207,7 +208,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
t_disk = null
|
||||
screen = 1.0
|
||||
|
||||
else if(href_list["copy_tech"]) //Copys some technology data from the research holder to the disk.
|
||||
else if(href_list["copy_tech"]) //Copy some technology data from the research holder to the disk.
|
||||
for(var/datum/tech/T in files.known_tech)
|
||||
if(href_list["copy_tech_ID"] == T.id)
|
||||
t_disk.stored = T
|
||||
@@ -249,11 +250,12 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
linked_destroy.loaded_item = null
|
||||
linked_destroy.icon_state = "d_analyzer"
|
||||
screen = 2.1
|
||||
|
||||
|
||||
else if(href_list["maxresearch"]) //Eject the item inside the destructive analyzer.
|
||||
if(!usr.client.holder) return
|
||||
if(usr.client.holder & R_MENTOR) return
|
||||
screen = 0.0
|
||||
if(alert("Are you sure you want to maximize research levels?","Confirmation","Yes","No")=="No")
|
||||
if(alert("Are you sure you want to maximize research levels?","Confirmation","Yes","No")=="No")
|
||||
return
|
||||
log_admin("[key_name(usr)] has maximized the research levels.")
|
||||
message_admins("[key_name_admin(usr)] has maximized the research levels.")
|
||||
@@ -261,7 +263,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
Maximize()
|
||||
screen = 1.0
|
||||
updateUsrDialog()
|
||||
griefProtection() //Update centcomm too
|
||||
griefProtection() //Update centcomm too
|
||||
|
||||
else if(href_list["deconstruct"]) //Deconstruct the item in the destructive analyzer and update the research holder.
|
||||
if(linked_destroy)
|
||||
@@ -371,6 +373,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
if(being_built)
|
||||
var/power = 2000
|
||||
var/amount=text2num(href_list["amount"])
|
||||
var/old_screen = screen
|
||||
amount = max(1, min(10, amount))
|
||||
for(var/M in being_built.materials)
|
||||
power += round(being_built.materials[M] * amount / 5)
|
||||
@@ -436,7 +439,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
else
|
||||
new_item.loc = linked_lathe.loc
|
||||
linked_lathe.busy = 0
|
||||
screen = 3.15
|
||||
screen = old_screen
|
||||
updateUsrDialog()
|
||||
|
||||
else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something.
|
||||
@@ -450,6 +453,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
break
|
||||
if(being_built)
|
||||
var/power = 2000
|
||||
var/old_screen = screen
|
||||
for(var/M in being_built.materials)
|
||||
power += round(being_built.materials[M] / 5)
|
||||
power = max(2000, power)
|
||||
@@ -488,7 +492,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
new_item.reliability = R
|
||||
new_item.loc = linked_imprinter.loc
|
||||
linked_imprinter.busy = 0
|
||||
screen = 4.1
|
||||
screen = old_screen
|
||||
updateUsrDialog()
|
||||
|
||||
else if(href_list["disposeI"] && linked_imprinter) //Causes the circuit imprinter to dispose of a single reagent (all of it)
|
||||
@@ -590,7 +594,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
spawn(20)
|
||||
screen = 1.6
|
||||
updateUsrDialog()
|
||||
|
||||
|
||||
else if(href_list["search"]) //Search for designs with name matching pattern
|
||||
var/compare
|
||||
|
||||
@@ -608,7 +612,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
continue
|
||||
if(findtext(D.name,href_list["to_search"]))
|
||||
matching_designs.Add(D)
|
||||
|
||||
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
@@ -870,7 +874,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
dat += " | <span class='bad'>LOCKED</span>"
|
||||
dat += "<BR>"
|
||||
dat += "</div>"
|
||||
|
||||
|
||||
if(3.17) //Display search result
|
||||
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
|
||||
dat += "<A href='?src=\ref[src];menu=3.1'>Protolathe Menu</A>"
|
||||
@@ -978,7 +982,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
dat += "<h3>Circuit Imprinter Menu:</h3><BR>"
|
||||
dat += "Material Amount: [linked_imprinter.TotalMaterials()]<BR>"
|
||||
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]<HR>"
|
||||
|
||||
|
||||
dat += "<form name='search' action='?src=\ref[src]'> \
|
||||
<input type='hidden' name='src' value='\ref[src]'> \
|
||||
<input type='hidden' name='search' value='to_search'> \
|
||||
@@ -1016,7 +1020,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
if(D.locked)
|
||||
dat += " | <span class='bad'>LOCKED</span>"
|
||||
dat += "</div>"
|
||||
|
||||
|
||||
if(4.17)
|
||||
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
|
||||
dat += "<A href='?src=\ref[src];menu=4.1'>Circuit Imprinter Menu</A>"
|
||||
|
||||
@@ -319,14 +319,12 @@
|
||||
onclose(user, "server_control")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob)
|
||||
if(istype(D, /obj/item/weapon/card/emag) && !emagged)
|
||||
/obj/machinery/computer/rdservercontrol/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
|
||||
emagged = 1
|
||||
user << "\blue You you disable the security protocols"
|
||||
src.updateUsrDialog()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/server/robotics
|
||||
name = "Robotics R&D Server"
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/item/weapon/stock_parts/cell,\
|
||||
/obj/item/weapon/circular_saw,\
|
||||
/obj/item/weapon/hatchet,\
|
||||
/obj/item/weapon/handcuffs,\
|
||||
/obj/item/weapon/restraints/handcuffs,\
|
||||
/obj/item/weapon/hemostat,\
|
||||
/obj/item/weapon/kitchenknife,\
|
||||
/obj/item/weapon/lighter,\
|
||||
|
||||
@@ -183,12 +183,12 @@
|
||||
apply_image_decorations = 1
|
||||
if(8)
|
||||
item_type = "handcuffs"
|
||||
new_item = new /obj/item/weapon/handcuffs(src.loc)
|
||||
new_item = new /obj/item/weapon/restraints/handcuffs(src.loc)
|
||||
additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]."
|
||||
if(9)
|
||||
item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]"
|
||||
apply_prefix = 0
|
||||
new_item = new /obj/item/weapon/legcuffs/beartrap(src.loc)
|
||||
new_item = new /obj/item/weapon/restraints/legcuffs/beartrap(src.loc)
|
||||
additional_desc = "[pick("It looks like it could take a limb off",\
|
||||
"Could be some kind of animal trap",\
|
||||
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]."
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
digspeed = 20
|
||||
desc = "Thick metallic wires for clearing away dust and loose scree (1 centimetre excavation depth)."
|
||||
excavation_amount = 0.5
|
||||
drill_sound = 'sound/weapons/thudswoosh.ogg'
|
||||
digsound = list('sound/weapons/thudswoosh.ogg')
|
||||
drill_verb = "brushing"
|
||||
w_class = 2
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
digspeed = 20
|
||||
desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)."
|
||||
excavation_amount = 1
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
digsound = list('sound/items/Screwdriver.ogg')
|
||||
drill_verb = "delicately picking"
|
||||
w_class = 2
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
digspeed = 20
|
||||
desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)."
|
||||
excavation_amount = 2
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
digsound = list('sound/items/Screwdriver.ogg')
|
||||
drill_verb = "delicately picking"
|
||||
w_class = 2
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
digspeed = 20
|
||||
desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)."
|
||||
excavation_amount = 3
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
digsound = list('sound/items/Screwdriver.ogg')
|
||||
drill_verb = "delicately picking"
|
||||
w_class = 2
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
digspeed = 20
|
||||
desc = "A miniature excavation tool for precise digging (8 centimetre excavation depth)."
|
||||
excavation_amount = 4
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
digsound = list('sound/items/Screwdriver.ogg')
|
||||
drill_verb = "delicately picking"
|
||||
w_class = 2
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
digspeed = 20
|
||||
desc = "A miniature excavation tool for precise digging (10 centimetre excavation depth)."
|
||||
excavation_amount = 5
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
digsound = list('sound/items/Screwdriver.ogg')
|
||||
drill_verb = "delicately picking"
|
||||
w_class = 2
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
digspeed = 20
|
||||
desc = "A miniature excavation tool for precise digging (12 centimetre excavation depth)."
|
||||
excavation_amount = 6
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
digsound = list('sound/items/Screwdriver.ogg')
|
||||
drill_verb = "delicately picking"
|
||||
w_class = 2
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
digspeed = 30
|
||||
desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)."
|
||||
excavation_amount = 15
|
||||
drill_sound = 'sound/items/Crowbar.ogg'
|
||||
digsound = list('sound/items/Crowbar.ogg')
|
||||
drill_verb = "clearing"
|
||||
w_class = 3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user