Merge branch 'master' into reageaaaannntttttts

Conflicts:
	code/modules/reagents/Chemistry-Reagents.dm

+ apply cleaner patch manually
This commit is contained in:
Tigercat2000
2015-09-07 16:02:17 -07:00
31 changed files with 537 additions and 32 deletions
+104
View File
@@ -0,0 +1,104 @@
/obj/item/device/assembly/health
name = "health sensor"
desc = "Used for scanning and monitoring health."
icon_state = "health"
materials = list(MAT_METAL=800, MAT_GLASS=200)
origin_tech = "magnets=1;biotech=1"
secured = 0
var/scanning = 0
var/health_scan
var/alarm_health = 0
/obj/item/device/assembly/health/activate()
if(!..()) return 0//Cooldown check
toggle_scan()
return 0
/obj/item/device/assembly/health/toggle_secure()
secured = !secured
if(secured && scanning)
processing_objects.Add(src)
else
scanning = 0
processing_objects.Remove(src)
update_icon()
return secured
/obj/item/device/assembly/health/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/device/multitool))
if(alarm_health == 0)
alarm_health = -90
user.show_message("You toggle [src] to \"detect death\" mode.")
else
alarm_health = 0
user.show_message("You toggle [src] to \"detect critical state\" mode.")
return
else
return ..()
/obj/item/device/assembly/health/process()
if(!scanning || !secured)
return
var/atom/A = src
if(connected && connected.holder)
A = connected.holder
for(A, A && !ismob(A), A=A.loc);
// like get_turf(), but for mobs.
var/mob/living/M = A
if(M)
health_scan = M.health
if(health_scan <= alarm_health)
pulse()
audible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
toggle_scan()
return
return
/obj/item/device/assembly/health/proc/toggle_scan()
if(!secured) return 0
scanning = !scanning
if(scanning)
processing_objects.Add(src)
else
processing_objects.Remove(src)
return
/obj/item/device/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy
if(!secured)
user.show_message("<span class='warning'>The [name] is unsecured!</span>")
return 0
var/dat = text("<TT><B>Health Sensor</B> <A href='?src=\ref[src];scanning=1'>[scanning?"On":"Off"]</A>")
if(scanning && health_scan)
dat += "<BR>Health: [health_scan]"
user << browse(dat, "window=hscan")
onclose(user, "hscan")
return
/obj/item/device/assembly/health/Topic(href, href_list)
..()
if(!ismob(usr))
return
var/mob/user = usr
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
usr << browse(null, "window=hscan")
onclose(usr, "hscan")
return
if(href_list["scanning"])
toggle_scan()
if(href_list["close"])
usr << browse(null, "window=hscan")
return
attack_self(user)
return
+22
View File
@@ -108,6 +108,7 @@ datum/preferences
var/b_type = "A+" //blood type (not-chooseable)
var/underwear = "Nude" //underwear type
var/undershirt = "Nude" //undershirt type
var/socks = "Nude" //socks type
var/backbag = 2 //backpack type
var/h_style = "Bald" //Hair type
var/r_hair = 0 //Hair color
@@ -331,6 +332,7 @@ datum/preferences
dat += "<br><br>"
dat += "<b>Underwear:</b><BR><a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
dat += "<b>Undershirt:</b><BR><a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
dat += "<b>Socks:</b><BR><a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
dat += "Backpack Type:<br><a href ='?_src_=prefs;preference=bag;task=input'><b>[backbaglist[backbag]]</b></a><br>"
dat += "Nanotrasen Relation:<br><a href ='?_src_=prefs;preference=nt_relation;task=input'><b>[nanotrasen_relation]</b></a><br>"
dat += "</td><td><b>Preview</b><br><img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></td></tr></table>"
@@ -1010,6 +1012,9 @@ datum/preferences
if("undershirt")
undershirt = random_undershirt(gender)
ShowChoices(user)
if("socks")
socks = random_socks(gender)
ShowChoices(user)
if("eyes")
r_eyes = rand(0,255)
g_eyes = rand(0,255)
@@ -1210,6 +1215,22 @@ datum/preferences
undershirt = new_undershirt
ShowChoices(user)
if("socks")
var/list/valid_sockstyles = list()
for(var/sockstyle in socks_list)
var/datum/sprite_accessory/S = socks_list[sockstyle]
if(gender == MALE && S.gender == FEMALE)
continue
if(gender == FEMALE && S.gender == MALE)
continue
if( !(species in S.species_allowed))
continue
valid_sockstyles[sockstyle] = socks_list[sockstyle]
var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles
ShowChoices(user)
if(new_socks)
socks = new_socks
if("eyes")
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference") as color|null
if(new_eyes)
@@ -1548,6 +1569,7 @@ datum/preferences
character.underwear = underwear
character.undershirt = undershirt
character.socks = socks
if(backbag > 4 || backbag < 1)
backbag = 1 //Same as above
+10 -3
View File
@@ -149,6 +149,9 @@
nanotrasen_relation = query.item[52]
speciesprefs = text2num(query.item[53])
//socks
socks = query.item[54]
//Sanitize
metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name)
@@ -196,6 +199,9 @@
disabilities = sanitize_integer(disabilities, 0, 65535, initial(disabilities))
be_special = sanitize_integer(be_special, 0, 65535, initial(be_special))
socks = sanitize_text(socks, initial(socks))
// if(isnull(disabilities)) disabilities = 0
if(!player_alt_titles) player_alt_titles = new()
if(!organ_data) src.organ_data = list()
@@ -267,7 +273,8 @@
organ_data='[organlist]',
rlimb_data='[rlimblist]',
nanotrasen_relation='[nanotrasen_relation]',
speciesprefs='[speciesprefs]'
speciesprefs='[speciesprefs]',
socks='[socks]'
WHERE ckey='[C.ckey]'
AND slot='[default_slot]'"}
)
@@ -295,7 +302,7 @@
job_karma_high, job_karma_med, job_karma_low,
flavor_text, med_record, sec_record, gen_record,
player_alt_titles, be_special,
disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs)
disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs, socks)
VALUES
('[C.ckey]', '[default_slot]', '[sql_sanitize_text(metadata)]', '[sql_sanitize_text(real_name)]', '[be_random_name]','[gender]',
'[age]', '[sql_sanitize_text(species)]', '[sql_sanitize_text(language)]',
@@ -312,7 +319,7 @@
'[job_karma_high]', '[job_karma_med]', '[job_karma_low]',
'[sql_sanitize_text(flavor_text)]', '[sql_sanitize_text(med_record)]', '[sql_sanitize_text(sec_record)]', '[sql_sanitize_text(gen_record)]',
'[playertitlelist]', '[be_special]',
'[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]')
'[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]','[socks]')
"}
)
@@ -141,6 +141,7 @@
S["eyes_blue"] >> b_eyes
S["underwear"] >> underwear
S["undershirt"] >> undershirt
S["socks"] >> socks
S["backbag"] >> backbag
S["b_type"] >> b_type
S["accent"] >> accent
@@ -203,6 +204,7 @@
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
underwear = sanitize_integer(underwear, 1, underwear_m.len, initial(underwear))
undershirt = sanitize_integer(undershirt, 1, undershirt_t.len, initial(undershirt))
socks = sanitize_integer(socks,1 socks_t.len, initial(socks))
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
b_type = sanitize_text(b_type, initial(b_type))
accent = sanitize_text(accent, initial(accent))
+16 -14
View File
@@ -244,6 +244,8 @@
stat(null, eta_status)
if (client.statpanel == "Status")
if(locate(/obj/item/device/assembly/health) in src)
stat(null, "Health: [health]")
if (internal)
if (!internal.air_contents)
qdel(internal)
@@ -431,7 +433,7 @@
var/armor_block = run_armor_check(affecting, "melee")
apply_damage(damage, BRUTE, affecting, armor_block)
/mob/living/carbon/human/proc/is_loyalty_implanted()
/mob/living/carbon/human/proc/is_loyalty_implanted()
for(var/L in contents)
if(istype(L, /obj/item/weapon/implant/loyalty))
for(var/obj/item/organ/external/O in organs)
@@ -694,7 +696,7 @@
// if looting pockets with gloves, do it quietly
if(href_list["pockets"])
if(isanimal(usr))
if(isanimal(usr))
return //animals cannot strip people
if(frozen)
@@ -726,19 +728,19 @@
// Update strip window
if(usr.machine == src && in_range(src, usr))
show_inv(usr)
else if(!pickpocket)
// Display a warning if the user mocks up
src << "<span class='warning'>You feel your [pocket_side] pocket being fumbled with!</span>"
// if looting id with gloves, do it quietly - this allows pickpocket gloves to take/place id stealthily - Bone White
if(href_list["item"])
if(isanimal(usr))
if(isanimal(usr))
return //animals cannot strip people
if(frozen)
usr << "\red Do not attempt to strip frozen people."
return
return
var/itemTarget = href_list["item"]
if(itemTarget == "id")
if(pickpocket)
@@ -1158,7 +1160,7 @@
if(!fail_msg)
fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into."
user << "<span class='alert'>[fail_msg]</span>"
/mob/living/carbon/human/proc/check_has_mouth()
// Todo, check stomach organ when implemented.
var/obj/item/organ/external/head/H = get_organ("head")
@@ -1170,7 +1172,7 @@
if(stat==DEAD)return
if(!check_has_mouth())
return
return
if(!lastpuke)
lastpuke = 1
@@ -1517,16 +1519,16 @@
W.add_fingerprint(src)
// Allows IPC's to change their monitor display
// Allows IPC's to change their monitor display
/mob/living/carbon/human/proc/change_monitor()
set category = "IC"
set category = "IC"
set name = "Change Monitor Display"
set desc = "Change the display on your monitor."
if(stat || paralysis || stunned || weakened)
src << "<span class='warning'>You cannot change your monitor display in your current state.</span>"
return
return
var/list/hair = list()
for(var/i in hair_styles_list)
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i]
@@ -1540,7 +1542,7 @@
h_style = new_style
update_hair()
//Putting a couple of procs here that I don't know where else to dump.
//Mostly going to be used for Vox and Vox Armalis, but other human mobs might like them (for adminbuse).
/mob/living/carbon/human/proc/leap()
@@ -30,7 +30,8 @@
var/b_type = "A+" //Player's bloodtype
var/underwear = "Nude" //Which underwear the player wants
var/undershirt = "Nude" //Which undershirt the player wants.
var/undershirt = "Nude" //Which undershirt the player wants
var/socks = "Nude" //Which socks the player wants
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
//Equipment slots
@@ -64,6 +64,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
life_tick++
var/datum/gas_mixture/environment = loc.return_air()
in_stasis = 0
if(istype(loc, /obj/structure/closet/body_bag/cryobag))
var/obj/structure/closet/body_bag/cryobag/loc_as_cryobag = loc
if(!loc_as_cryobag.opened)
@@ -327,6 +327,13 @@ var/global/list/damage_icon_parts = list()
if(U2)
stand_icon.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY)
if(socks)
var/datum/sprite_accessory/socks/U3 = socks_list[socks]
if(U3)
stand_icon.Blend(new /icon(U3.icon, "sk_[U3.icon_state]_s"), ICON_OVERLAY)
if(update_icons)
update_icons()
@@ -212,8 +212,9 @@
if(camera)
camera.status = 0
held_item.loc = src.loc
held_item = null
if(held_item)
held_item.forceMove(src.loc)
held_item = null
robogibs(src.loc, viruses)
qdel(src)
@@ -7,6 +7,7 @@ datum/preferences
gender = pick(MALE, FEMALE)
underwear = random_underwear(gender)
undershirt = random_undershirt(gender)
socks = random_socks(gender)
if(species == "Human")
s_tone = random_skin_tone()
h_style = random_hair_style(gender, species)
@@ -264,6 +265,12 @@ datum/preferences
if(U2)
undershirt_s = new/icon(U2.icon, "[U2.icon_state]_s", ICON_OVERLAY)
var/icon/socks_s = null
if(socks)
var/datum/sprite_accessory/socks/U3 = socks_list[socks]
if(U3)
socks_s = new/icon(U3.icon, "[U3.icon_state]_s", ICON_OVERLAY)
var/icon/clothes_s = null
var/uniform_dmi='icons/mob/uniform.dmi'
if(disabilities&DISABILITY_FLAG_FAT)
@@ -792,6 +799,8 @@ datum/preferences
preview_icon.Blend(underwear_s, ICON_OVERLAY)
if(undershirt_s)
preview_icon.Blend(undershirt_s, ICON_OVERLAY)
if(socks_s)
preview_icon.Blend(socks_s, ICON_OVERLAY)
if(clothes_s)
preview_icon.Blend(clothes_s, ICON_OVERLAY)
preview_icon_front = new(preview_icon, dir = SOUTH)
@@ -800,4 +809,5 @@ datum/preferences
del(eyes_s)
del(underwear_s)
del(undershirt_s)
del(socks_s)
del(clothes_s)
@@ -1260,4 +1260,193 @@
name = "Fire Tank-Top"
icon_state = "tank_fire"
gender = NEUTER
//end tanktops
//end tanktops
///////////////////////
// Socks Definitions //
///////////////////////
/datum/sprite_accessory/socks
icon = 'icons/mob/underwear.dmi'
/datum/sprite_accessory/socks/nude
name = "Nude"
icon_state = null
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_norm
name = "Normal White"
icon_state = "white_norm"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_norm
name = "Normal Black"
icon_state = "black_norm"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_short
name = "Short White"
icon_state = "white_short"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_short
name = "Short Black"
icon_state = "black_short"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_knee
name = "Knee-high White"
icon_state = "white_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_knee
name = "Knee-high Black"
icon_state = "black_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/thin_knee
name = "Knee-high Thin"
icon_state = "thin_knee"
gender = FEMALE
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/striped_knee
name = "Knee-high Striped"
icon_state = "striped_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/rainbow_knee
name = "Knee-high Rainbow"
icon_state = "rainbow_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_thigh
name = "Thigh-high White"
icon_state = "white_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_thigh
name = "Thigh-high Black"
icon_state = "black_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/thin_thigh
name = "Thigh-high Thin"
icon_state = "thin_thigh"
gender = FEMALE
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/striped_thigh
name = "Thigh-high Striped"
icon_state = "striped_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/rainbow_thigh
name = "Thigh-high Rainbow"
icon_state = "rainbow_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/pantyhose
name = "Pantyhose"
icon_state = "pantyhose"
gender = FEMALE
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_fishnet
name = "Black Fishnet"
icon_state = "black_fishnet"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/vox_white
name = "Vox White"
icon_state = "vox_white"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_black
name = "Vox Black"
icon_state = "vox_black"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_thin
name = "Vox Black Thin"
icon_state = "vox_blackthin"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_rainbow
name = "Vox Rainbow"
icon_state = "vox_rainbow"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_stripped
name = "Vox Stripped"
icon_state = "vox_white"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_white_thigh
name = "Vox Thigh-high White"
icon_state = "vox_whiteTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_black_thigh
name = "Vox Thigh-high Black"
icon_state = "vox_blackTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_thin_thigh
name = "Vox Thigh-high Thin"
icon_state = "vox_blackthinTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_rainbow_thigh
name = "Vox Thigh-high Rainbow"
icon_state = "vox_rainbowTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_stripped_thigh
name = "Vox Thigh-high Stripped"
icon_state = "vox_strippedTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_fishnet
name = "Vox Fishnets"
icon_state = "vox_fishnet"
gender = NEUTER
species_allowed = list("Vox")
+29
View File
@@ -825,6 +825,35 @@ datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob)
..()
return
/datum/reagent/medicine/stimulative_agent
name = "Stimulative Agent"
id = "stimulative_agent"
description = "An illegal compound that dramatically enhances the body's performance and healing capabilities."
color = "#C8A5DC"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 60
/datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M)
M.status_flags |= GOTTAGOFAST
if(M.health < 50 && M.health > 0)
M.adjustOxyLoss(-1*REM)
M.adjustToxLoss(-1*REM)
M.adjustBruteLoss(-1*REM)
M.adjustFireLoss(-1*REM)
M.AdjustParalysis(-3)
M.AdjustStunned(-3)
M.AdjustWeakened(-3)
M.adjustStaminaLoss(-5*REM)
..()
/datum/reagent/medicine/stimulative_agent/overdose_process(mob/living/M)
if(prob(33))
M.adjustStaminaLoss(2.5*REM)
M.adjustToxLoss(1*REM)
M.losebreath++
..()
return
datum/reagent/insulin
name = "Insulin"
id = "insulin"
@@ -96,7 +96,7 @@ datum/reagents/proc/check_ignoreslow(var/mob/M)
datum/reagents/proc/check_gofast(var/mob/M)
if(istype(M, /mob))
if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola"))
if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulative_agent"))
return 1
else
M.status_flags &= ~GOTTAGOFAST
@@ -110,6 +110,8 @@
color = "#61C2C2"
/datum/reagent/space_cleaner/reaction_obj(var/obj/O, var/volume)
if(O)
O.color = initial(O.color)
if(istype(O,/obj/effect/decal/cleanable))
qdel(O)
else
@@ -118,6 +120,8 @@
/datum/reagent/space_cleaner/reaction_turf(var/turf/T, var/volume)
if(volume >= 1)
if(T)
T.color = initial(T.color)
T.overlays.Cut()
T.clean_blood()
for(var/obj/effect/decal/cleanable/C in src)
@@ -125,10 +129,9 @@
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(5,10))
/datum/reagent/space_cleaner/reaction_turf(var/turf/simulated/S, var/volume)
if(volume >= 1)
S.dirt = 0
if(istype(T,/turf/simulated))
var/turf/simulated/S = T
S.dirt = 0
/datum/reagent/space_cleaner/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
if(iscarbon(M))
@@ -162,6 +162,14 @@
build_path = /obj/item/device/assembly/infra
category = list("initial", "Miscellaneous")
/datum/design/health_sensor
name = "Health sensor"
id = "health_sensor"
build_type = AUTOLATHE
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
build_path = /obj/item/device/assembly/health
category = list("initial", "Medical")
/datum/design/kitchen_knife
name = "Kitchen knife"
id = "kitchen_knife"
@@ -546,3 +554,19 @@
materials = list(MAT_METAL = 4000)
build_path = /obj/item/ammo_casing/shotgun
category = list("hacked", "Security")
/datum/design/desttagger
name = "Destination tagger"
id = "desttagger"
build_type = AUTOLATHE
materials = list(MAT_METAL = 250, MAT_GLASS = 125)
build_path = /obj/item/device/destTagger
category = list("initial", "Electronics")
/datum/design/handlabeler
name = "Hand labeler"
id = "handlabel"
build_type = AUTOLATHE
materials = list(MAT_METAL = 150, MAT_GLASS = 125)
build_path = /obj/item/weapon/hand_labeler
category = list("initial", "Electronics")
@@ -204,4 +204,48 @@
build_type = PROTOLATHE
materials = list (MAT_METAL = 12500, MAT_GLASS = 7500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 750)
build_path = /obj/item/weapon/scalpel/manager
category = list("Medical")
/////////////////////////////////////////
////////////Regular Implants/////////////
/////////////////////////////////////////
/datum/design/implanter
name = "Implanter"
desc = "A sterile automatic implant injector."
id = "implanter"
req_tech = list("materials" = 1, "programming" = 2, "biotech" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 200)
build_path = /obj/item/weapon/implanter
category = list("Medical")
/datum/design/implantcase
name = "Implant Case"
desc = "A glass case containing an implant."
id = "implantcase"
req_tech = list("materials" = 1, "biotech" = 2)
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500)
build_path = /obj/item/weapon/implantcase
category = list("Medical")
/datum/design/implant_freedom
name = "Freedom Implant Case"
desc = "A glass case containing an implant."
id = "implant_freedom"
req_tech = list("materials" = 2, "biotech" = 3, "magnets" = 3, "syndicate" = 5)
build_type = PROTOLATHE
materials = list(MAT_METAL = 50, MAT_GLASS = 500, MAT_GOLD = 250)
build_path = /obj/item/weapon/implantcase/freedom
category = list("Medical")
/datum/design/implant_adrenalin
name = "Adrenalin Implant Case"
desc = "A glass case containing an implant."
id = "implant_adrenalin"
req_tech = list("materials" = 2, "biotech" = 5, "combat" = 3, "syndicate" = 6)
build_type = PROTOLATHE
materials = list(MAT_METAL = 50, MAT_GLASS = 500, MAT_GOLD = 500, MAT_URANIUM = 100, MAT_DIAMOND = 200)
build_path = /obj/item/weapon/implantcase/adrenaline
category = list("Medical")