Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into upstream-merge-33829

This commit is contained in:
LetterJay
2018-01-01 14:09:07 -06:00
180 changed files with 2769 additions and 4332 deletions
@@ -79,14 +79,11 @@
add_blood = bloodiness
bloodiness -= add_blood
S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood)
if(blood_DNA && blood_DNA.len)
S.add_blood(blood_DNA)
S.add_blood_DNA(return_blood_DNA())
S.blood_state = blood_state
update_icon()
H.update_inv_shoes()
/obj/effect/decal/cleanable/proc/can_bloodcrawl_in()
if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY))
return bloodiness
@@ -6,10 +6,13 @@
icon = 'icons/effects/blood.dmi'
icon_state = "xfloor1"
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
blood_DNA = list("UNKNOWN DNA" = "X*")
bloodiness = MAX_SHOE_BLOODINESS
blood_state = BLOOD_STATE_XENO
/obj/effect/decal/cleanable/xenoblood/Initialize()
. = ..()
add_blood_DNA(list("UNKNOWN DNA" = "X*"))
/obj/effect/decal/cleanable/xenoblood/xsplatter
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
@@ -62,4 +65,7 @@
/obj/effect/decal/cleanable/blood/xtracks
icon_state = "xtracks"
random_icon_states = null
blood_DNA = list("UNKNOWN DNA" = "X*")
/obj/effect/decal/cleanable/blood/xtracks/Initialize()
. = ..()
add_blood_DNA(list("Unknown DNA" = "X*"))
@@ -4,13 +4,11 @@
icon = 'icons/effects/blood.dmi'
icon_state = "floor1"
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_DNA = list()
blood_state = BLOOD_STATE_HUMAN
bloodiness = MAX_SHOE_BLOODINESS
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
if (C.blood_DNA)
blood_DNA |= C.blood_DNA.Copy()
add_blood_DNA(C.return_blood_DNA())
..()
/obj/effect/decal/cleanable/blood/old
@@ -21,7 +19,7 @@
/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases)
. = ..()
icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization.
blood_DNA["Non-human DNA"] = "A+"
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/blood/splatter
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
@@ -37,11 +35,9 @@
desc = "Your instincts say you shouldn't be following these."
random_icon_states = null
var/list/existing_dirs = list()
blood_DNA = list()
/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in()
return 1
return TRUE
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
@@ -100,8 +96,7 @@
. = ..()
setDir(pick(1,2,4,8))
icon_state += "-old"
blood_DNA["Non-human DNA"] = "A+"
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
@@ -111,9 +106,8 @@
bloodiness = 0
var/drips = 1
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return 1
return TRUE
//BLOODY FOOTPRINTS
@@ -151,7 +145,7 @@
if (!(exited_dirs & H.dir))
exited_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/update_icon()
cut_overlays()
@@ -76,7 +76,7 @@
if(metal)
var/turf/T = get_turf(src)
if(isspaceturf(T)) //Block up any exposed space
T.ChangeTurf(/turf/open/floor/plating/foam)
T.PlaceOnTop(/turf/open/floor/plating/foam)
for(var/direction in GLOB.cardinals)
var/turf/cardinal_turf = get_step(T, direction)
if(get_area(cardinal_turf) != get_area(T)) //We're at an area boundary, so let's block off this turf!
@@ -30,9 +30,9 @@
digester.stomach_contents += gib
if(MobDNA)
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey
gib.blood_DNA["Non-human DNA"] = "A+"
gib.add_blood_DNA(list("Non-human DNA" = "A+"))
var/list/directions = gibdirections[i]
if(isturf(loc))
if(directions.len)
+13 -3
View File
@@ -5,19 +5,29 @@
var/lootcount = 1 //how many items will be spawned
var/lootdoubles = TRUE //if the same item can be spawned twice
var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect)
var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,3,-3,6,-6,9,-9.. This overrides pixel_x/y on the spawner itself
/obj/effect/spawner/lootdrop/Initialize(mapload)
..()
if(loot && loot.len)
var/turf/T = get_turf(src)
while(lootcount && loot.len)
var/loot_spawned = 0
while((lootcount-loot_spawned) && loot.len)
var/lootspawn = pickweight(loot)
if(!lootdoubles)
loot.Remove(lootspawn)
if(lootspawn)
new lootspawn(T)
lootcount--
var/atom/movable/spawned_loot = new lootspawn(T)
if (!fan_out_items)
if (pixel_x != 0)
spawned_loot.pixel_x = pixel_x
if (pixel_y != 0)
spawned_loot.pixel_y = pixel_y
else
if (loot_spawned)
spawned_loot.pixel_x = spawned_loot.pixel_y = ((!(loot_spawned%2)*loot_spawned/2)*-3)+((loot_spawned%2)*(loot_spawned+1)/2*3)
loot_spawned++
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/lootdrop/armory_contraband
@@ -20,9 +20,9 @@
for(var/j = lowBoundY,j<=hiBoundY,j++)
var/turf/T = locate(i,j,z)
if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY)
T.ChangeTurf(/turf/closed/wall/vault)
T.PlaceOnTop(/turf/closed/wall/vault)
else
T.ChangeTurf(/turf/open/floor/vault)
T.PlaceOnTop(/turf/open/floor/vault)
T.icon_state = "[type]vault"
qdel(src)
-14
View File
@@ -553,20 +553,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
if(M.become_blind())
to_chat(M, "<span class='danger'>You go blind!</span>")
/obj/item/clean_blood()
. = ..()
if(.)
if(initial(icon) && initial(icon_state))
var/index = blood_splatter_index()
var/icon/blood_splatter_icon = GLOB.blood_splatter_icons[index]
if(blood_splatter_icon)
cut_overlay(blood_splatter_icon)
/obj/item/clothing/gloves/clean_blood()
. = ..()
if(.)
transfer_blood = 0
/obj/item/singularity_pull(S, current_size)
..()
if(current_size >= STAGE_FOUR)
+1 -1
View File
@@ -86,7 +86,7 @@
var/obj/effect/decal/cleanable/C = locate() in target
qdel(C)
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
target.clean_blood()
target.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
target.wash_cream()
return
@@ -493,7 +493,7 @@
color = null
/obj/item/device/flashlight/glowstick/random/Initialize()
. = ..()
..()
var/T = pick(typesof(/obj/item/device/flashlight/glowstick) - /obj/item/device/flashlight/glowstick/random)
new T(loc)
return INITIALIZE_HINT_QDEL
@@ -139,8 +139,8 @@
else
icon_state = initial(icon_state)
/obj/item/device/radio/intercom/add_blood(list/blood_dna)
return 0
/obj/item/device/radio/intercom/add_blood_DNA(list/blood_dna)
return FALSE
//Created through the autolathe or through deconstructing intercoms. Can be applied to wall to make a new intercom on it!
/obj/item/wallframe/intercom
+1 -1
View File
@@ -233,7 +233,7 @@
/obj/item/flamethrower/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
var/obj/item/projectile/P = hitby
if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15))
owner.visible_message("<span class='danger'>[attack_text] hits the fueltank on [owner]'s [src], rupturing it! What a shot!</span>")
owner.visible_message("<span class='danger'>\The [attack_text] hits the fueltank on [owner]'s [name], rupturing it! What a shot!</span>")
var/target_turf = get_turf(owner)
igniter.ignite_turf(src,target_turf, release_amount = 100)
qdel(ptank)
@@ -77,3 +77,40 @@
if (!healthstring)
healthstring = "ERROR"
return healthstring
/obj/item/implant/radio
name = "internal radio implant"
desc = "Are you there God? It's me, Syndicate Comms Agent."
activated = TRUE
var/obj/item/device/radio/radio
var/radio_key = /obj/item/device/encryptionkey/syndicate
icon = 'icons/obj/radio.dmi'
icon_state = "walkietalkie"
/obj/item/implant/radio/activate()
// needs to be GLOB.deep_inventory_state otherwise it won't open
radio.ui_interact(usr, "main", null, FALSE, null, GLOB.deep_inventory_state)
/obj/item/implant/radio/Initialize(mapload)
. = ..()
radio = new(src)
// almost like an internal headset, but without the
// "must be in ears to hear" restriction.
radio.name = "internal radio"
radio.subspace_transmission = TRUE
radio.canhear_range = 0
radio.keyslot = new radio_key
radio.recalculateChannels()
/obj/item/implant/radio/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Internal Radio Implant<BR>
<b>Life:</b> 24 hours<BR>
<b>Implant Details:</b> Allows user to use an internal radio, useful if user expects equipment loss, or cannot equip conventional radios."}
return dat
/obj/item/implanter/radio
name = "implanter (internal radio)"
imp_type = /obj/item/implant/radio
+2 -2
View File
@@ -20,8 +20,8 @@
user.visible_message("<span class='suicide'>[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!</span>")
return (BRUTELOSS|FIRELOSS)
/obj/item/melee/transforming/energy/add_blood(list/blood_dna)
return 0
/obj/item/melee/transforming/energy/add_blood_DNA(list/blood_dna)
return FALSE
/obj/item/melee/transforming/energy/is_sharp()
return active * sharpness
+6 -5
View File
@@ -275,17 +275,18 @@
consume_turf(target)
/obj/item/melee/supermatter_sword/proc/consume_turf(turf/T)
if(istype(T, T.baseturf))
return //Can't void the void, baby!
var/oldtype = T.type
var/turf/newT = T.ScrapeAway()
if(newT.type == oldtype)
return
playsound(T, 'sound/effects/supermatter.ogg', 50, 1)
T.visible_message("<span class='danger'>[T] smacks into [src] and rapidly flashes to ash.</span>",\
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
shard.Consume()
T.ChangeTurf(T.baseturf)
T.CalculateAdjacentTurfs()
/obj/item/melee/supermatter_sword/add_blood(list/blood_dna)
return 0
/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna)
return FALSE
/obj/item/melee/curator_whip
name = "curator's whip"
-1
View File
@@ -23,7 +23,6 @@
/obj/item/mop/proc/clean(turf/A)
if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1))
A.clean_blood()
A.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
for(var/obj/effect/O in A)
if(is_cleanable(O))
+4 -4
View File
@@ -336,10 +336,10 @@
else
. = ..()
/obj/item/stack/proc/copy_evidences(obj/item/stack/from as obj)
blood_DNA = from.blood_DNA
fingerprints = from.fingerprints
fingerprintshidden = from.fingerprintshidden
/obj/item/stack/proc/copy_evidences(obj/item/stack/from)
add_blood_DNA(from.return_blood_DNA())
add_fingerprint_list(from.return_fingerprints())
add_hiddenprint_list(from.return_hiddenprints())
fingerprintslast = from.fingerprintslast
//TODO bloody overlay
+1 -1
View File
@@ -212,5 +212,5 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
else
return ..(M,user,heal_mode = FALSE)
/obj/item/storage/book/bible/syndicate/add_blood(list/blood_dna)
/obj/item/storage/book/bible/syndicate/add_blood_DNA(list/blood_dna)
return FALSE
+310 -307
View File
@@ -1,307 +1,310 @@
/obj/item/storage/box/syndicate
/obj/item/storage/box/syndicate/PopulateContents()
switch (pickweight(list("bloodyspai" = 3, "stealth" = 2, "bond" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "darklord" = 1, "sniper" = 1, "metaops" = 1, "ninja" = 1)))
if("bloodyspai") // 27 tc now this is more right
new /obj/item/clothing/under/chameleon(src) // 2 tc since it's not the full set
new /obj/item/clothing/mask/chameleon(src) // Goes with above
new /obj/item/card/id/syndicate(src) // 2 tc
new /obj/item/clothing/shoes/chameleon(src) // 2 tc
new /obj/item/device/camera_bug(src) // 1 tc
new /obj/item/device/multitool/ai_detect(src) // 1 tc
new /obj/item/device/encryptionkey/syndicate(src) // 2 tc
new /obj/item/reagent_containers/syringe/mulligan(src) // 4 tc
new /obj/item/switchblade(src) //I'll count this as 2 tc
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src) // 2 tc this shit heals
new /obj/item/device/flashlight/emp(src) // 2 tc
new /obj/item/device/chameleon(src) // 7 tc
if("stealth") // 31 tc
new /obj/item/gun/energy/kinetic_accelerator/crossbow(src)
new /obj/item/pen/sleepy(src)
new /obj/item/device/healthanalyzer/rad_laser(src)
new /obj/item/device/chameleon(src)
new /obj/item/soap/syndie(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
if("bond") // 29 tc
new /obj/item/gun/ballistic/automatic/pistol(src)
new /obj/item/suppressor(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/clothing/under/chameleon(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/reagent_containers/syringe/stimulants(src)
if("screwed") // 29 tc
new /obj/item/device/sbeacondrop/bomb(src)
new /obj/item/grenade/syndieminibomb(src)
new /obj/item/device/sbeacondrop/powersink(src)
new /obj/item/clothing/suit/space/syndicate/black/red(src)
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
new /obj/item/device/encryptionkey/syndicate(src)
if("guns") // 28 tc now
new /obj/item/gun/ballistic/revolver(src)
new /obj/item/ammo_box/a357(src)
new /obj/item/ammo_box/a357(src)
new /obj/item/card/emag(src)
new /obj/item/grenade/plastic/c4(src)
new /obj/item/clothing/gloves/color/latex/nitrile(src)
new /obj/item/clothing/mask/gas/clown_hat(src)
new /obj/item/clothing/under/suit_jacket/really_black(src)
if("murder") // 28 tc now
new /obj/item/melee/transforming/energy/sword/saber(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/card/emag(src)
new /obj/item/clothing/shoes/chameleon(src)
new /obj/item/device/encryptionkey/syndicate(src)
new /obj/item/grenade/syndieminibomb(src)
if("implant") // 55+ tc holy shit what the fuck this is a lottery disguised as fun boxes isn't it?
new /obj/item/implanter/freedom(src)
new /obj/item/implanter/uplink/precharged(src)
new /obj/item/implanter/emp(src)
new /obj/item/implanter/adrenalin(src)
new /obj/item/implanter/explosive(src)
new /obj/item/implanter/storage(src)
if("hacker") // 26 tc
new /obj/item/aiModule/syndicate(src)
new /obj/item/card/emag(src)
new /obj/item/device/encryptionkey/binary(src)
new /obj/item/aiModule/toyAI(src)
new /obj/item/device/multitool/ai_detect(src)
if("lordsingulo") // 24 tc
new /obj/item/device/sbeacondrop(src)
new /obj/item/clothing/suit/space/syndicate/black/red(src)
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
new /obj/item/card/emag(src)
if("sabotage") // 26 tc now
new /obj/item/grenade/plastic/c4 (src)
new /obj/item/grenade/plastic/c4 (src)
new /obj/item/device/doorCharge(src)
new /obj/item/device/doorCharge(src)
new /obj/item/device/camera_bug(src)
new /obj/item/device/sbeacondrop/powersink(src)
new /obj/item/cartridge/virus/syndicate(src)
new /obj/item/storage/toolbox/syndicate(src) //To actually get to those places
new /obj/item/pizzabox/bomb
if("darklord") //20 tc + tk + summon item close enough for now
new /obj/item/twohanded/dualsaber(src)
new /obj/item/dnainjector/telemut/darkbundle(src)
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/clothing/shoes/chameleon(src) //because slipping while being a dark lord sucks
new /obj/item/spellbook/oneuse/summonitem(src)
if("sniper") //This shit is unique so can't really balance it around tc, also no silencer because getting killed without ANY indicator on what killed you sucks
new /obj/item/gun/ballistic/automatic/sniper_rifle(src) // 12 tc
new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/clothing/gloves/color/latex/nitrile(src)
new /obj/item/clothing/mask/gas/clown_hat(src)
new /obj/item/clothing/under/suit_jacket/really_black(src)
if("metaops") // 30 tc
new /obj/item/clothing/suit/space/hardsuit/syndi(src) // 8 tc
new /obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted(src) // 8 tc
new /obj/item/implanter/explosive(src) // 2 tc
new /obj/item/ammo_box/magazine/m12g/buckshot(src) // 2 tc
new /obj/item/ammo_box/magazine/m12g/buckshot(src) // 2 tc
new /obj/item/grenade/plastic/c4 (src) // 1 tc
new /obj/item/grenade/plastic/c4 (src) // 1 tc
new /obj/item/card/emag(src) // 6 tc
if("ninja") // 33 tc worth
new /obj/item/katana(src) // Unique , hard to tell how much tc this is worth. 8 tc?
new /obj/item/implanter/adrenalin(src) // 8 tc
new /obj/item/throwing_star(src) // ~5 tc for all 6
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/storage/belt/chameleon(src) // Unique but worth at least 2 tc
new /obj/item/card/id/syndicate(src) // 2 tc
new /obj/item/device/chameleon(src) // 7 tc
/obj/item/storage/box/syndie_kit
name = "box"
desc = "A sleek, sturdy box."
icon_state = "syndiebox"
illustration = "writing_syndie"
/obj/item/storage/box/syndie_kit/imp_freedom
name = "boxed freedom implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_freedom/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/freedom(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_microbomb
name = "Microbomb Implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_microbomb/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/explosive(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_macrobomb
name = "Macrobomb Implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_macrobomb/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/explosive/macro(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_uplink
name = "boxed uplink implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_uplink/PopulateContents()
..()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/uplink(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/bioterror
name = "bioterror syringe box"
/obj/item/storage/box/syndie_kit/bioterror/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/reagent_containers/syringe/bioterror(src)
/obj/item/storage/box/syndie_kit/imp_adrenal
name = "boxed adrenal implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_adrenal/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/adrenalin(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_storage
name = "boxed storage implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_storage/PopulateContents()
new /obj/item/implanter/storage(src)
/obj/item/storage/box/syndie_kit/space
name = "boxed space suit and helmet"
can_hold = list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate)
max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/box/syndie_kit/space/PopulateContents()
new /obj/item/clothing/suit/space/syndicate/black/red(src) // Black and red is so in right now
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
/obj/item/storage/box/syndie_kit/emp
name = "boxed EMP kit"
/obj/item/storage/box/syndie_kit/emp/PopulateContents()
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/implanter/emp(src)
/obj/item/storage/box/syndie_kit/chemical
name = "boxed chemical kit"
storage_slots = 14
/obj/item/storage/box/syndie_kit/chemical/PopulateContents()
new /obj/item/reagent_containers/glass/bottle/polonium(src)
new /obj/item/reagent_containers/glass/bottle/venom(src)
new /obj/item/reagent_containers/glass/bottle/neurotoxin2(src)
new /obj/item/reagent_containers/glass/bottle/formaldehyde(src)
new /obj/item/reagent_containers/glass/bottle/spewium(src)
new /obj/item/reagent_containers/glass/bottle/cyanide(src)
new /obj/item/reagent_containers/glass/bottle/histamine(src)
new /obj/item/reagent_containers/glass/bottle/initropidril(src)
new /obj/item/reagent_containers/glass/bottle/pancuronium(src)
new /obj/item/reagent_containers/glass/bottle/sodium_thiopental(src)
new /obj/item/reagent_containers/glass/bottle/coniine(src)
new /obj/item/reagent_containers/glass/bottle/curare(src)
new /obj/item/reagent_containers/glass/bottle/amanitin(src)
new /obj/item/reagent_containers/syringe(src)
/obj/item/storage/box/syndie_kit/nuke
name = "box"
/obj/item/storage/box/syndie_kit/nuke/PopulateContents()
new /obj/item/screwdriver/nuke(src)
new /obj/item/nuke_core_container(src)
new /obj/item/paper/guides/antag/nuke_instructions(src)
/obj/item/storage/box/syndie_kit/supermatter
name = "box"
/obj/item/storage/box/syndie_kit/supermatter/PopulateContents()
new /obj/item/scalpel/supermatter(src)
new /obj/item/hemostat/supermatter(src)
new /obj/item/nuke_core_container/supermatter(src)
new /obj/item/paper/guides/antag/supermatter_sliver(src)
/obj/item/storage/box/syndie_kit/tuberculosisgrenade
name = "boxed virus grenade kit"
/obj/item/storage/box/syndie_kit/tuberculosisgrenade/PopulateContents()
new /obj/item/grenade/chem_grenade/tuberculosis(src)
for(var/i in 1 to 5)
new /obj/item/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/reagent_containers/syringe(src)
new /obj/item/reagent_containers/glass/bottle/tuberculosiscure(src)
/obj/item/storage/box/syndie_kit/chameleon
name = "chameleon kit"
/obj/item/storage/box/syndie_kit/chameleon/PopulateContents()
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/suit/chameleon(src)
new /obj/item/clothing/gloves/chameleon(src)
new /obj/item/clothing/shoes/chameleon(src)
new /obj/item/clothing/glasses/chameleon(src)
new /obj/item/clothing/head/chameleon(src)
new /obj/item/clothing/mask/chameleon(src)
new /obj/item/storage/backpack/chameleon(src)
new /obj/item/device/radio/headset/chameleon(src)
new /obj/item/stamp/chameleon(src)
new /obj/item/device/pda/chameleon(src)
new /obj/item/gun/energy/laser/chameleon(src)
//5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars.
//Not counting the damage it will do while embedded (2*4 = 8, at 15% chance)
/obj/item/storage/box/syndie_kit/throwing_weapons/PopulateContents()
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/restraints/legcuffs/bola/tactical(src)
new /obj/item/restraints/legcuffs/bola/tactical(src)
/obj/item/storage/box/syndie_kit/cutouts/PopulateContents()
for(var/i in 1 to 3)
new/obj/item/cardboard_cutout/adaptive(src)
new/obj/item/toy/crayon/rainbow(src)
/obj/item/storage/box/syndie_kit/romerol/PopulateContents()
new /obj/item/reagent_containers/glass/bottle/romerol(src)
new /obj/item/reagent_containers/syringe(src)
new /obj/item/reagent_containers/dropper(src)
/obj/item/storage/box/syndie_kit/ez_clean/PopulateContents()
for(var/i in 1 to 3)
new/obj/item/grenade/chem_grenade/ez_clean(src)
/obj/item/storage/box/hug/reverse_revolver/PopulateContents()
new /obj/item/gun/ballistic/revolver/reverse(src)
/obj/item/storage/box/syndie_kit/mimery/PopulateContents()
new /obj/item/spellbook/oneuse/mimery_blockade(src)
new /obj/item/spellbook/oneuse/mimery_guns(src)
/obj/item/storage/box/syndicate
/obj/item/storage/box/syndicate/PopulateContents()
switch (pickweight(list("bloodyspai" = 3, "stealth" = 2, "bond" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "darklord" = 1, "sniper" = 1, "metaops" = 1, "ninja" = 1)))
if("bloodyspai") // 27 tc now this is more right
new /obj/item/clothing/under/chameleon(src) // 2 tc since it's not the full set
new /obj/item/clothing/mask/chameleon(src) // Goes with above
new /obj/item/card/id/syndicate(src) // 2 tc
new /obj/item/clothing/shoes/chameleon(src) // 2 tc
new /obj/item/device/camera_bug(src) // 1 tc
new /obj/item/device/multitool/ai_detect(src) // 1 tc
new /obj/item/device/encryptionkey/syndicate(src) // 2 tc
new /obj/item/reagent_containers/syringe/mulligan(src) // 4 tc
new /obj/item/switchblade(src) //I'll count this as 2 tc
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src) // 2 tc this shit heals
new /obj/item/device/flashlight/emp(src) // 2 tc
new /obj/item/device/chameleon(src) // 7 tc
if("stealth") // 31 tc
new /obj/item/gun/energy/kinetic_accelerator/crossbow(src)
new /obj/item/pen/sleepy(src)
new /obj/item/device/healthanalyzer/rad_laser(src)
new /obj/item/device/chameleon(src)
new /obj/item/soap/syndie(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
if("bond") // 29 tc
new /obj/item/gun/ballistic/automatic/pistol(src)
new /obj/item/suppressor(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/clothing/under/chameleon(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/reagent_containers/syringe/stimulants(src)
if("screwed") // 29 tc
new /obj/item/device/sbeacondrop/bomb(src)
new /obj/item/grenade/syndieminibomb(src)
new /obj/item/device/sbeacondrop/powersink(src)
new /obj/item/clothing/suit/space/syndicate/black/red(src)
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
new /obj/item/device/encryptionkey/syndicate(src)
if("guns") // 28 tc now
new /obj/item/gun/ballistic/revolver(src)
new /obj/item/ammo_box/a357(src)
new /obj/item/ammo_box/a357(src)
new /obj/item/card/emag(src)
new /obj/item/grenade/plastic/c4(src)
new /obj/item/clothing/gloves/color/latex/nitrile(src)
new /obj/item/clothing/mask/gas/clown_hat(src)
new /obj/item/clothing/under/suit_jacket/really_black(src)
if("murder") // 28 tc now
new /obj/item/melee/transforming/energy/sword/saber(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/card/emag(src)
new /obj/item/clothing/shoes/chameleon(src)
new /obj/item/device/encryptionkey/syndicate(src)
new /obj/item/grenade/syndieminibomb(src)
if("implant") // 55+ tc holy shit what the fuck this is a lottery disguised as fun boxes isn't it?
new /obj/item/implanter/freedom(src)
new /obj/item/implanter/uplink/precharged(src)
new /obj/item/implanter/emp(src)
new /obj/item/implanter/adrenalin(src)
new /obj/item/implanter/explosive(src)
new /obj/item/implanter/storage(src)
if("hacker") // 26 tc
new /obj/item/aiModule/syndicate(src)
new /obj/item/card/emag(src)
new /obj/item/device/encryptionkey/binary(src)
new /obj/item/aiModule/toyAI(src)
new /obj/item/device/multitool/ai_detect(src)
if("lordsingulo") // 24 tc
new /obj/item/device/sbeacondrop(src)
new /obj/item/clothing/suit/space/syndicate/black/red(src)
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
new /obj/item/card/emag(src)
if("sabotage") // 26 tc now
new /obj/item/grenade/plastic/c4 (src)
new /obj/item/grenade/plastic/c4 (src)
new /obj/item/device/doorCharge(src)
new /obj/item/device/doorCharge(src)
new /obj/item/device/camera_bug(src)
new /obj/item/device/sbeacondrop/powersink(src)
new /obj/item/cartridge/virus/syndicate(src)
new /obj/item/storage/toolbox/syndicate(src) //To actually get to those places
new /obj/item/pizzabox/bomb
if("darklord") //20 tc + tk + summon item close enough for now
new /obj/item/twohanded/dualsaber(src)
new /obj/item/dnainjector/telemut/darkbundle(src)
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/clothing/shoes/chameleon(src) //because slipping while being a dark lord sucks
new /obj/item/spellbook/oneuse/summonitem(src)
if("sniper") //This shit is unique so can't really balance it around tc, also no silencer because getting killed without ANY indicator on what killed you sucks
new /obj/item/gun/ballistic/automatic/sniper_rifle(src) // 12 tc
new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/clothing/gloves/color/latex/nitrile(src)
new /obj/item/clothing/mask/gas/clown_hat(src)
new /obj/item/clothing/under/suit_jacket/really_black(src)
if("metaops") // 30 tc
new /obj/item/clothing/suit/space/hardsuit/syndi(src) // 8 tc
new /obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted(src) // 8 tc
new /obj/item/implanter/explosive(src) // 2 tc
new /obj/item/ammo_box/magazine/m12g/buckshot(src) // 2 tc
new /obj/item/ammo_box/magazine/m12g/buckshot(src) // 2 tc
new /obj/item/grenade/plastic/c4 (src) // 1 tc
new /obj/item/grenade/plastic/c4 (src) // 1 tc
new /obj/item/card/emag(src) // 6 tc
if("ninja") // 33 tc worth
new /obj/item/katana(src) // Unique , hard to tell how much tc this is worth. 8 tc?
new /obj/item/implanter/adrenalin(src) // 8 tc
new /obj/item/throwing_star(src) // ~5 tc for all 6
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/storage/belt/chameleon(src) // Unique but worth at least 2 tc
new /obj/item/card/id/syndicate(src) // 2 tc
new /obj/item/device/chameleon(src) // 7 tc
/obj/item/storage/box/syndie_kit
name = "box"
desc = "A sleek, sturdy box."
icon_state = "syndiebox"
illustration = "writing_syndie"
/obj/item/storage/box/syndie_kit/imp_freedom
name = "boxed freedom implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_freedom/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/freedom(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_microbomb
name = "Microbomb Implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_microbomb/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/explosive(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_macrobomb
name = "Macrobomb Implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_macrobomb/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/explosive/macro(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_uplink
name = "boxed uplink implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_uplink/PopulateContents()
..()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/uplink(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/bioterror
name = "bioterror syringe box"
/obj/item/storage/box/syndie_kit/bioterror/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/reagent_containers/syringe/bioterror(src)
/obj/item/storage/box/syndie_kit/imp_adrenal
name = "boxed adrenal implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_adrenal/PopulateContents()
var/obj/item/implanter/O = new(src)
O.imp = new /obj/item/implant/adrenalin(O)
O.update_icon()
/obj/item/storage/box/syndie_kit/imp_storage
name = "boxed storage implant (with injector)"
/obj/item/storage/box/syndie_kit/imp_storage/PopulateContents()
new /obj/item/implanter/storage(src)
/obj/item/storage/box/syndie_kit/space
name = "boxed space suit and helmet"
can_hold = list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate)
max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/box/syndie_kit/space/PopulateContents()
new /obj/item/clothing/suit/space/syndicate/black/red(src) // Black and red is so in right now
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
/obj/item/storage/box/syndie_kit/emp
name = "boxed EMP kit"
/obj/item/storage/box/syndie_kit/emp/PopulateContents()
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/empgrenade(src)
new /obj/item/implanter/emp(src)
/obj/item/storage/box/syndie_kit/chemical
name = "boxed chemical kit"
storage_slots = 14
/obj/item/storage/box/syndie_kit/chemical/PopulateContents()
new /obj/item/reagent_containers/glass/bottle/polonium(src)
new /obj/item/reagent_containers/glass/bottle/venom(src)
new /obj/item/reagent_containers/glass/bottle/neurotoxin2(src)
new /obj/item/reagent_containers/glass/bottle/formaldehyde(src)
new /obj/item/reagent_containers/glass/bottle/spewium(src)
new /obj/item/reagent_containers/glass/bottle/cyanide(src)
new /obj/item/reagent_containers/glass/bottle/histamine(src)
new /obj/item/reagent_containers/glass/bottle/initropidril(src)
new /obj/item/reagent_containers/glass/bottle/pancuronium(src)
new /obj/item/reagent_containers/glass/bottle/sodium_thiopental(src)
new /obj/item/reagent_containers/glass/bottle/coniine(src)
new /obj/item/reagent_containers/glass/bottle/curare(src)
new /obj/item/reagent_containers/glass/bottle/amanitin(src)
new /obj/item/reagent_containers/syringe(src)
/obj/item/storage/box/syndie_kit/nuke
name = "box"
/obj/item/storage/box/syndie_kit/nuke/PopulateContents()
new /obj/item/screwdriver/nuke(src)
new /obj/item/nuke_core_container(src)
new /obj/item/paper/guides/antag/nuke_instructions(src)
/obj/item/storage/box/syndie_kit/supermatter
name = "box"
/obj/item/storage/box/syndie_kit/supermatter/PopulateContents()
new /obj/item/scalpel/supermatter(src)
new /obj/item/hemostat/supermatter(src)
new /obj/item/nuke_core_container/supermatter(src)
new /obj/item/paper/guides/antag/supermatter_sliver(src)
/obj/item/storage/box/syndie_kit/tuberculosisgrenade
name = "boxed virus grenade kit"
/obj/item/storage/box/syndie_kit/tuberculosisgrenade/PopulateContents()
new /obj/item/grenade/chem_grenade/tuberculosis(src)
for(var/i in 1 to 5)
new /obj/item/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/reagent_containers/syringe(src)
new /obj/item/reagent_containers/glass/bottle/tuberculosiscure(src)
/obj/item/storage/box/syndie_kit/chameleon
name = "chameleon kit"
/obj/item/storage/box/syndie_kit/chameleon/PopulateContents()
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/suit/chameleon(src)
new /obj/item/clothing/gloves/chameleon(src)
new /obj/item/clothing/shoes/chameleon(src)
new /obj/item/clothing/glasses/chameleon(src)
new /obj/item/clothing/head/chameleon(src)
new /obj/item/clothing/mask/chameleon(src)
new /obj/item/storage/backpack/chameleon(src)
new /obj/item/device/radio/headset/chameleon(src)
new /obj/item/stamp/chameleon(src)
new /obj/item/device/pda/chameleon(src)
new /obj/item/gun/energy/laser/chameleon(src)
//5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars.
//Not counting the damage it will do while embedded (2*4 = 8, at 15% chance)
/obj/item/storage/box/syndie_kit/throwing_weapons/PopulateContents()
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/throwing_star(src)
new /obj/item/restraints/legcuffs/bola/tactical(src)
new /obj/item/restraints/legcuffs/bola/tactical(src)
/obj/item/storage/box/syndie_kit/cutouts/PopulateContents()
for(var/i in 1 to 3)
new/obj/item/cardboard_cutout/adaptive(src)
new/obj/item/toy/crayon/rainbow(src)
/obj/item/storage/box/syndie_kit/romerol/PopulateContents()
new /obj/item/reagent_containers/glass/bottle/romerol(src)
new /obj/item/reagent_containers/syringe(src)
new /obj/item/reagent_containers/dropper(src)
/obj/item/storage/box/syndie_kit/ez_clean/PopulateContents()
for(var/i in 1 to 3)
new/obj/item/grenade/chem_grenade/ez_clean(src)
/obj/item/storage/box/hug/reverse_revolver/PopulateContents()
new /obj/item/gun/ballistic/revolver/reverse(src)
/obj/item/storage/box/syndie_kit/mimery/PopulateContents()
new /obj/item/spellbook/oneuse/mimery_blockade(src)
new /obj/item/spellbook/oneuse/mimery_guns(src)
/obj/item/storage/box/syndie_kit/imp_radio/PopulateContents()
new /obj/item/implanter/radio(src)
+1 -1
View File
@@ -293,7 +293,7 @@
icon_state = "dualsaber[item_color][wielded]"
else
icon_state = "dualsaber0"
clean_blood()//blood overlays get weird otherwise, because the sprite changes.
SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
/obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user)
if(user.has_dna())
+1 -1
View File
@@ -231,10 +231,10 @@ LINEN BINS
desc = "If you're reading this description ingame, something has gone wrong! Honk!"
/obj/item/bedsheet/random/Initialize()
. = INITIALIZE_HINT_QDEL
..()
var/type = pick(typesof(/obj/item/bedsheet) - /obj/item/bedsheet/random)
new type(loc)
return INITIALIZE_HINT_QDEL
/obj/structure/bedsheetbin
name = "linen bin"
+1 -1
View File
@@ -85,7 +85,7 @@
/obj/structure/falsewall/proc/ChangeToWall(delete = 1)
var/turf/T = get_turf(src)
T.ChangeTurf(walltype)
T.PlaceOnTop(walltype)
if(delete)
qdel(src)
return T
+6 -6
View File
@@ -86,7 +86,7 @@
S.use(5)
to_chat(user, "<span class='notice'>You add the plating.</span>")
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/closed/wall/mineral/iron)
T.PlaceOnTop(/turf/closed/wall/mineral/iron)
transfer_fingerprints_to(T)
qdel(src)
return
@@ -120,7 +120,7 @@
S.use(2)
to_chat(user, "<span class='notice'>You add the plating.</span>")
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/closed/wall)
T.PlaceOnTop(/turf/closed/wall)
transfer_fingerprints_to(T)
qdel(src)
return
@@ -150,7 +150,7 @@
S.use(1)
to_chat(user, "<span class='notice'>You fully reinforce the wall.</span>")
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/closed/wall/r_wall)
T.PlaceOnTop(/turf/closed/wall/r_wall)
transfer_fingerprints_to(T)
qdel(src)
return
@@ -194,7 +194,7 @@
S.use(2)
to_chat(user, "<span class='notice'>You add the plating.</span>")
var/turf/T = get_turf(src)
T.ChangeTurf(text2path("/turf/closed/wall/mineral/[M]"))
T.PlaceOnTop(text2path("/turf/closed/wall/mineral/[M]"))
transfer_fingerprints_to(T)
qdel(src)
return
@@ -397,7 +397,7 @@
user.visible_message("<span class='notice'>[user] plates [src] with runed metal.</span>", "<span class='notice'>You construct a runed wall.</span>")
R.use(1)
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/closed/wall/mineral/cult)
T.PlaceOnTop(/turf/closed/wall/mineral/cult)
qdel(src)
else
@@ -424,7 +424,7 @@
switch(passed_mode)
if(RCD_FLOORWALL)
to_chat(user, "<span class='notice'>You finish a wall.</span>")
T.ChangeTurf(/turf/closed/wall)
T.PlaceOnTop(/turf/closed/wall)
qdel(src)
return TRUE
if(RCD_DECONSTRUCT)
@@ -184,10 +184,10 @@
var/obj/machinery/manned_turret/turret
/obj/item/gun_control/Initialize()
. = ..()
turret = loc
if(!istype(turret))
return INITIALIZE_HINT_QDEL
. = ..()
turret = loc
if(!istype(turret))
return INITIALIZE_HINT_QDEL
/obj/item/gun_control/Destroy()
turret = null
+6 -9
View File
@@ -296,8 +296,7 @@
/obj/machinery/shower/proc/wash_obj(obj/O)
O.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
. = O.clean_blood()
. = O.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
if(isitem(O))
var/obj/item/I = O
@@ -310,7 +309,6 @@
var/turf/tile = loc
tile.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
tile.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
tile.clean_blood()
for(var/obj/effect/E in tile)
if(is_cleanable(E))
qdel(E)
@@ -361,7 +359,7 @@
else if(H.w_uniform && wash_obj(H.w_uniform))
H.update_inv_w_uniform()
if(washgloves)
H.clean_blood()
H.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
if(H.shoes && washshoes && wash_obj(H.shoes))
H.update_inv_shoes()
if(H.wear_mask && washmask && wash_obj(H.wear_mask))
@@ -378,9 +376,9 @@
else
if(M.wear_mask && wash_obj(M.wear_mask))
M.update_inv_wear_mask(0)
M.clean_blood()
M.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
else
L.clean_blood()
L.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
/obj/machinery/shower/proc/contamination_cleanse(atom/movable/thing)
var/datum/component/radioactive/healthy_green_glow = thing.GetComponent(/datum/component/radioactive)
@@ -473,8 +471,7 @@
H.regenerate_icons()
user.drowsyness = max(user.drowsyness - rand(2,3), 0) //Washing your face wakes you up if you're falling asleep
else
user.clean_blood()
user.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
/obj/structure/sink/attackby(obj/item/O, mob/living/user, params)
if(busy)
@@ -530,7 +527,7 @@
busy = FALSE
return 1
busy = FALSE
O.clean_blood()
O.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
O.acid_level = 0
create_reagents(5)
reagents.add_reagent(dispensedreagent, 5)