mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge branch 'master' into reageaaaannntttttts
Conflicts: code/modules/reagents/Chemistry-Reagents.dm + apply cleaner patch manually
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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")
|
||||
@@ -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")
|
||||
Reference in New Issue
Block a user