Merge remote-tracking branch 'upstream/master' into shingles

This commit is contained in:
xxalpha
2016-01-16 18:37:40 +00:00
498 changed files with 9779 additions and 9058 deletions
@@ -5,7 +5,6 @@
desc = "It's green and acidic. It looks like... <i>blood?</i>"
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/blood.dmi'
icon_state = "xfloor1"
@@ -3,7 +3,6 @@
desc = "It's red and gooey. Perhaps it's the chef's cooking?"
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/blood.dmi'
icon_state = "floor1"
@@ -39,7 +38,6 @@
desc = "Your instincts say you shouldn't be following these."
gender = PLURAL
density = 0
anchored = 1
layer = 2
random_icon_states = null
var/list/existing_dirs = list()
@@ -55,7 +53,6 @@
desc = "They look bloody and gruesome."
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/blood.dmi'
icon_state = "gibbl5"
@@ -88,18 +85,18 @@
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
spawn (0)
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
sleep(3)
if (i > 0)
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
for(var/datum/disease/D in src.viruses)
var/datum/disease/ND = D.Copy(1)
b.viruses += ND
ND.holder = b
if (step_to(src, get_step(src, direction), 0))
break
set waitfor = 0
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
sleep(3)
if (i > 0)
var/obj/effect/decal/cleanable/blood/b = new /obj/effect/decal/cleanable/blood/splatter(src.loc)
for(var/datum/disease/D in src.viruses)
var/datum/disease/ND = D.Copy(1)
b.viruses += ND
ND.holder = b
if (step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
@@ -3,7 +3,6 @@
desc = "Someone should clean that up."
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/obj/objects.dmi'
icon_state = "shards"
@@ -14,7 +13,6 @@
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
anchored = 1
/obj/effect/decal/cleanable/ash/New()
..()
@@ -29,7 +27,6 @@
icon_state = "dirt"
gender = PLURAL
density = 0
anchored = 1
layer = 2
mouse_opacity = 0
@@ -38,7 +35,6 @@
desc = "It's still good. Four second rule!"
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/effects.dmi'
icon_state = "flour"
@@ -48,7 +44,6 @@
desc = "Jeez. I hope that's not for lunch."
gender = PLURAL
density = 0
anchored = 1
layer = 2
luminosity = 1
icon = 'icons/effects/effects.dmi'
@@ -61,7 +56,6 @@
name = "cobweb"
desc = "Somebody should remove that."
density = 0
anchored = 1
layer = 3
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb1"
@@ -74,7 +68,6 @@
name = "gooey grey mass"
desc = "It looks like a melted... something."
density = 0
anchored = 1
layer = 3
icon = 'icons/obj/chemical.dmi'
icon_state = "molten"
@@ -83,7 +76,6 @@
name = "cobweb"
desc = "Somebody should remove that."
density = 0
anchored = 1
layer = 3
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb2"
@@ -94,7 +86,6 @@
desc = "Gosh, how unpleasant."
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/blood.dmi'
icon_state = "vomit_1"
@@ -111,7 +102,6 @@
name = "tomato smudge"
desc = "It's red."
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
@@ -120,7 +110,6 @@
name = "smashed egg"
desc = "Seems like this one won't hatch."
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
@@ -129,7 +118,6 @@
name = "smashed pie"
desc = "It's pie cream from a cream pie."
density = 0
anchored = 1
layer = 2
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_pie")
@@ -140,7 +128,6 @@
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
anchored = 1
/obj/effect/decal/cleanable/shreds
name = "shreds"
@@ -149,7 +136,6 @@
icon_state = "shreds"
gender = PLURAL
density = 0
anchored = 1
layer = 2
/obj/effect/decal/cleanable/shreds/New()
@@ -5,7 +5,6 @@
desc = "It's a useless heap of junk... <i>or is it?</i>"
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/mob/robots.dmi'
icon_state = "gib1"
@@ -14,19 +13,19 @@
bloodiness = MAX_SHOE_BLOODINESS
/obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions)
spawn (0)
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
sleep(3)
if (i > 0)
if (prob(40))
new /obj/effect/decal/cleanable/oil/streak(src.loc)
else if (prob(10))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
if (step_to(src, get_step(src, direction), 0))
break
set waitfor = 0
var/direction = pick(directions)
for (var/i = 0, i < pick(1, 200; 2, 150; 3, 50; 4), i++)
sleep(3)
if (i > 0)
if (prob(40))
new /obj/effect/decal/cleanable/oil/streak(src.loc)
else if (prob(10))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(3, 1, src)
s.start()
if (step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/robot_debris/ex_act()
return
@@ -45,7 +44,6 @@
desc = "It's black and greasy. Looks like Beepsky made another mess."
gender = PLURAL
density = 0
anchored = 1
layer = 2
icon = 'icons/mob/robots.dmi'
icon_state = "floor1"
+4 -4
View File
@@ -1,10 +1,9 @@
/obj/effect/decal/cleanable/crayon
name = "rune"
desc = "A rune drawn in crayon."
desc = "Graffiti. Damn kids."
icon = 'icons/effects/crayondecal.dmi'
icon_state = "rune1"
layer = 2.1
anchored = 1
var/do_icon_rotate = TRUE
/obj/effect/decal/cleanable/crayon/examine()
@@ -18,7 +17,7 @@
loc = location
name = e_name
desc = "A [name] drawn in crayon."
desc = "A [name] vandalizing the station."
if(type == "poseur tag")
type = pick(gang_name_pool)
icon_state = type
@@ -30,6 +29,7 @@
color = main
/obj/effect/decal/cleanable/crayon/gang
layer = 3.6 //Harder to hide
do_icon_rotate = FALSE //These are designed to always face south, so no rotation please.
@@ -56,4 +56,4 @@
gang.territory -= territory.type
gang.territory_new -= territory.type
gang.territory_lost |= list(territory.type = territory.name)
return ..()
return ..()
@@ -1,6 +1,7 @@
/obj/effect/decal
name = "decal"
icon = 'icons/effects/effects.dmi'
anchored = 1
/obj/effect/decal/ex_act(severity, target)
qdel(src)
-2
View File
@@ -3,13 +3,11 @@
icon = 'icons/mob/screen_gen.dmi'
icon_state = "arrow"
layer = 16
anchored = 1
mouse_opacity = 0
// Used for spray that you spray at walls, tables, hydrovats etc
/obj/effect/decal/spraystill
density = 0
anchored = 1
layer = 50
//Used by spraybottles.
@@ -2,7 +2,6 @@
name = "remains"
gender = PLURAL
icon = 'icons/effects/blood.dmi'
anchored = 1
/obj/effect/decal/remains/human
desc = "They look like human remains. They have a strange aura about them."
@@ -163,9 +163,12 @@
T.air_update_turf()
for(var/obj/effect/hotspot/H in T)
qdel(H)
if(G.toxins)
G.nitrogen += (G.toxins)
G.toxins = 0
var/list/G_gases = G.gases
if(G_gases["plasma"])
G.assert_gas("n2")
G_gases["n2"][MOLES] += (G_gases["plasma"][MOLES])
G_gases["plasma"][MOLES] = 0
G.garbage_collect()
for(var/obj/machinery/atmospherics/components/unary/U in T)
if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber.
U.welded = 1
+11 -1
View File
@@ -39,6 +39,16 @@
spawn(duration)
qdel(src)
/obj/effect/overlay/temp/guardian
randomdir = 0
/obj/effect/overlay/temp/guardian/phase
duration = 5
icon_state = "phasein"
/obj/effect/overlay/temp/guardian/phase/out
icon_state = "phaseout"
/obj/effect/overlay/temp/cult
randomdir = 0
duration = 10
@@ -50,7 +60,7 @@
/obj/effect/overlay/temp/cult/turf
name = "unholy glow"
icon_state = "wallglow"
layer = 2.01
layer = TURF_LAYER + 0.07
/obj/effect/overlay/temp/cult/turf/floor
icon_state = "floorglow"
+107 -98
View File
@@ -14,9 +14,19 @@
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0)
set waitfor = 0
src = null //so we don't abort once src is deleted
epicenter = get_turf(epicenter)
//DO NOT REMOVE THIS SLEEP, IT BREAKS THINGS
//not sleeping causes us to ex_act() the thing that triggered the explosion
//doing that might cause it to trigger another explosion
//this is bad
//I would make this not ex_act the thing that triggered the explosion,
//but everything that explodes gives us their loc or a get_turf()
//and somethings expect us to ex_act them so they can qdel()
sleep(1) //tldr, let the calling proc call qdel(src) before we explode
// Archive the uncapped explosion for the doppler array
var/orig_dev_range = devastation_range
var/orig_heavy_range = heavy_impact_range
@@ -30,126 +40,125 @@
flash_range = min (MAX_EX_FLASH_RANGE, flash_range)
flame_range = min (MAX_EX_FLAME_RANGE, flame_range)
spawn(0)
var/start = world.timeofday
if(!epicenter) return
var/start = world.timeofday
if(!epicenter) return
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
var/list/cached_exp_block = list()
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
var/list/cached_exp_block = list()
if(adminlog)
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
if(adminlog)
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
// Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves.
// Stereo users will also hear the direction of the explosion!
// Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves.
// Stereo users will also hear the direction of the explosion!
// Calculate far explosion sound range. Only allow the sound effect for heavy/devastating explosions.
// 3/7/14 will calculate to 80 + 35
// Calculate far explosion sound range. Only allow the sound effect for heavy/devastating explosions.
// 3/7/14 will calculate to 80 + 35
var/far_dist = 0
far_dist += heavy_impact_range * 5
far_dist += devastation_range * 20
var/far_dist = 0
far_dist += heavy_impact_range * 5
far_dist += devastation_range * 20
if(!silent)
var/frequency = get_rand_frequency()
for(var/mob/M in player_list)
// Double check for client
if(M && M.client)
var/turf/M_turf = get_turf(M)
if(M_turf && M_turf.z == epicenter.z)
var/dist = get_dist(M_turf, epicenter)
// If inside the blast radius + world.view - 2
if(dist <= round(max_range + world.view - 2, 1))
M.playsound_local(epicenter, get_sfx("explosion"), 100, 1, frequency, falloff = 5) // get_sfx() is so that everyone gets the same sound
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
else if(dist <= far_dist)
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
if(!silent)
var/frequency = get_rand_frequency()
for(var/mob/M in player_list)
// Double check for client
if(M && M.client)
var/turf/M_turf = get_turf(M)
if(M_turf && M_turf.z == epicenter.z)
var/dist = get_dist(M_turf, epicenter)
// If inside the blast radius + world.view - 2
if(dist <= round(max_range + world.view - 2, 1))
M.playsound_local(epicenter, get_sfx("explosion"), 100, 1, frequency, falloff = 5) // get_sfx() is so that everyone gets the same sound
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
else if(dist <= far_dist)
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
//postpone processing for a bit
var/postponeCycles = max(round(devastation_range/8),1)
SSlighting.postpone(postponeCycles)
SSmachine.postpone(postponeCycles)
//postpone processing for a bit
var/postponeCycles = max(round(devastation_range/8),1)
SSlighting.postpone(postponeCycles)
SSmachine.postpone(postponeCycles)
if(heavy_impact_range > 1)
var/datum/effect_system/explosion/E = new/datum/effect_system/explosion()
E.set_up(epicenter)
E.start()
if(heavy_impact_range > 1)
var/datum/effect_system/explosion/E = new/datum/effect_system/explosion()
E.set_up(epicenter)
E.start()
var/x0 = epicenter.x
var/y0 = epicenter.y
var/z0 = epicenter.z
var/x0 = epicenter.x
var/y0 = epicenter.y
var/z0 = epicenter.z
var/list/affected_turfs = trange(max_range, epicenter)
var/list/affected_turfs = trange(max_range, epicenter)
if(config.reactionary_explosions)
for(var/turf/T in affected_turfs) // we cache the explosion block rating of every turf in the explosion area
cached_exp_block[T] = 0
if(T.density && T.explosion_block)
cached_exp_block[T] += T.explosion_block
for(var/obj/machinery/door/D in T)
if(D.density && D.explosion_block)
cached_exp_block[T] += D.explosion_block
for(var/obj/structure/window/W in T)
if(W.reinf && W.fulltile)
cached_exp_block[T] += W.explosion_block
for(var/obj/effect/blob/B in T)
cached_exp_block[T] += B.explosion_block
for(var/turf/T in affected_turfs)
var/dist = cheap_hypotenuse(T.x, T.y, x0, y0)
if(config.reactionary_explosions)
for(var/turf/T in affected_turfs) // we cache the explosion block rating of every turf in the explosion area
cached_exp_block[T] = 0
if(T.density && T.explosion_block)
cached_exp_block[T] += T.explosion_block
var/turf/Trajectory = T
while(Trajectory != epicenter)
Trajectory = get_step_towards(Trajectory, epicenter)
dist += cached_exp_block[Trajectory]
for(var/obj/machinery/door/D in T)
if(D.density && D.explosion_block)
cached_exp_block[T] += D.explosion_block
var/flame_dist = 0
var/throw_dist = dist
for(var/obj/structure/window/W in T)
if(W.reinf && W.fulltile)
cached_exp_block[T] += W.explosion_block
if(dist < flame_range)
flame_dist = 1
for(var/obj/effect/blob/B in T)
cached_exp_block[T] += B.explosion_block
if(dist < devastation_range) dist = 1
else if(dist < heavy_impact_range) dist = 2
else if(dist < light_impact_range) dist = 3
else dist = 0
for(var/turf/T in affected_turfs)
//------- TURF FIRES -------
var/dist = cheap_hypotenuse(T.x, T.y, x0, y0)
if(T)
if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density)
PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience!
if(dist > 0)
T.ex_act(dist)
if(config.reactionary_explosions)
var/turf/Trajectory = T
while(Trajectory != epicenter)
Trajectory = get_step_towards(Trajectory, epicenter)
dist += cached_exp_block[Trajectory]
//--- THROW ITEMS AROUND ---
var/flame_dist = 0
var/throw_dist = dist
if(dist < flame_range)
flame_dist = 1
if(dist < devastation_range) dist = 1
else if(dist < heavy_impact_range) dist = 2
else if(dist < light_impact_range) dist = 3
else dist = 0
//------- TURF FIRES -------
if(T)
if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density)
PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience!
if(dist > 0)
T.ex_act(dist)
//--- THROW ITEMS AROUND ---
var/throw_dir = get_dir(epicenter,T)
for(var/obj/item/I in T)
if(I && !I.anchored)
var/throw_range = rand(throw_dist, max_range)
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything)
I.throw_at_fast(throw_at, throw_range, 2)//Throw it at 2 speed, this is purely visual anyway.
var/throw_dir = get_dir(epicenter,T)
for(var/obj/item/I in T)
if(I && !I.anchored)
var/throw_range = rand(throw_dist, max_range)
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range)
I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything)
I.throw_at_fast(throw_at, throw_range, 2)//Throw it at 2 speed, this is purely visual anyway.
var/took = (world.timeofday-start)/10
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
if(Debug2) world.log << "## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds."
var/took = (world.timeofday-start)/10
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
if(Debug2) world.log << "## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds."
//Machines which report explosions.
for(var/array in doppler_arrays)
var/obj/machinery/doppler_array/A = array
A.sense_explosion(epicenter,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
//Machines which report explosions.
for(var/array in doppler_arrays)
var/obj/machinery/doppler_array/A = array
A.sense_explosion(epicenter,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
return 1
+1 -2
View File
@@ -59,8 +59,7 @@
if(!src.lit)
src.lit = 1
//src.damtype = "fire"
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
usr.visible_message(flavor_text)
SetLuminosity(CANDLE_LUMINOSITY)
if(!infinite)
SSobj.processing |= src
+9 -14
View File
@@ -414,6 +414,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "Unable to obtain a reading.<br>"
else
var/datum/gas_mixture/environment = T.return_air()
var/list/env_gases = environment.gases
var/pressure = environment.return_pressure()
var/total_moles = environment.total_moles()
@@ -421,17 +422,11 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "Air Pressure: [round(pressure,0.1)] kPa<br>"
if (total_moles)
var/o2_level = environment.oxygen/total_moles
var/n2_level = environment.nitrogen/total_moles
var/co2_level = environment.carbon_dioxide/total_moles
var/plasma_level = environment.toxins/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level)
dat += "Nitrogen: [round(n2_level*100)]%<br>"
dat += "Oxygen: [round(o2_level*100)]%<br>"
dat += "Carbon Dioxide: [round(co2_level*100)]%<br>"
dat += "Plasma: [round(plasma_level*100)]%<br>"
if(unknown_level > 0.01)
dat += "OTHER: [round(unknown_level)]%<br>"
for(var/id in env_gases)
var/gas_level = env_gases[id][MOLES]/total_moles
if(id in hardcoded_gases || gas_level > 0.01)
dat += "[env_gases[id][GAS_NAME]]: [round(gas_level*100)]%<br>"
dat += "Temperature: [round(environment.temperature-T0C)]&deg;C<br>"
dat += "<br>"
@@ -778,7 +773,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/proc/show_to_ghosts(mob/living/user, datum/data_pda_msg/msg,multiple = 0)
for(var/mob/M in player_list)
if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA))
M.show_message("<a href='?src=\ref[M];follow=\ref[user]'>(F)</a><span class='name'> [msg.sender] </span><span class='game say'>PDA Message</span> --> <span class='name'>[multiple ? "Everyone" : msg.recipient]</span>: <span class='message'>[msg.message][msg.get_photo_ref()]</span></span>")
M << "<a href='?src=\ref[M];follow=\ref[user]'>(F)</a><span class='name'> [msg.sender] </span><span class='game say'>PDA Message</span> --> <span class='name'>[multiple ? "Everyone" : msg.recipient]</span>: <span class='message'>[msg.message][msg.get_photo_ref()]</span></span>"
/obj/item/device/pda/proc/can_send(obj/item/device/pda/P)
if(!P || qdeleted(P) || P.toff)
@@ -944,9 +939,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
switch(scanmode)
if(1)
user.visible_message(text("<span class='alert'>[] has analyzed []'s vitals!</span>", user, C))
C.visible_message("<span class='alert'>[user] has analyzed [C]'s vitals!</span>")
healthscan(user, C, 1)
src.add_fingerprint(user)
add_fingerprint(user)
if(2)
// Unused
+20 -15
View File
@@ -241,11 +241,12 @@
/obj/item/weapon/cartridge/proc/print_to_host(text)
if (!istype(loc, /obj/item/device/pda))
return
loc:cart = text
var/obj/item/device/pda/P = loc
P.cart = text
for (var/mob/M in viewers(1, loc.loc))
if (M.client && M.machine == loc)
loc:attack_self(M)
P.attack_self(M)
return
@@ -273,6 +274,7 @@
/obj/item/weapon/cartridge/proc/generate_menu(mob/user)
switch(mode)
if(40) //signaller
var/obj/item/radio/integrated/signal/S = radio
menu = "<h4><img src=pda_signaler.png> Remote Signaling System</h4>"
menu += {"
@@ -280,14 +282,14 @@
Frequency:
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=-10'>-</a>
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=-2'>-</a>
[format_frequency(radio:frequency)]
[format_frequency(S.frequency)]
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=2'>+</a>
<a href='byond://?src=\ref[src];choice=Signal Frequency;sfreq=10'>+</a><br>
<br>
Code:
<a href='byond://?src=\ref[src];choice=Signal Code;scode=-5'>-</a>
<a href='byond://?src=\ref[src];choice=Signal Code;scode=-1'>-</a>
[radio:code]
[S.code]
<a href='byond://?src=\ref[src];choice=Signal Code;scode=1'>+</a>
<a href='byond://?src=\ref[src];choice=Signal Code;scode=5'>+</a><br>"}
if (41) //crew manifest
@@ -611,7 +613,7 @@ Code:
active1 = find_record("id", href_list["target"], data_core.general)
if(active1)
active2 = find_record("id", href_list["target"], data_core.medical)
loc:mode = 441
pda.mode = 441
mode = 441
if(!active2)
active1 = null
@@ -620,25 +622,28 @@ Code:
active1 = find_record("id", href_list["target"], data_core.general)
if(active1)
active3 = find_record("id", href_list["target"], data_core.security)
loc:mode = 451
pda.mode = 451
mode = 451
if(!active3)
active1 = null
if("Send Signal")
spawn( 0 )
radio:send_signal("ACTIVATE")
var/obj/item/radio/integrated/signal/S = radio
S.send_signal("ACTIVATE")
return
if("Signal Frequency")
var/new_frequency = sanitize_frequency(radio:frequency + text2num(href_list["sfreq"]))
radio:set_frequency(new_frequency)
var/obj/item/radio/integrated/signal/S = radio
var/new_frequency = sanitize_frequency(S.frequency + text2num(href_list["sfreq"]))
S.set_frequency(new_frequency)
if("Signal Code")
radio:code += text2num(href_list["scode"])
radio:code = round(radio:code)
radio:code = min(100, radio:code)
radio:code = max(1, radio:code)
var/obj/item/radio/integrated/signal/S = radio
S.code += text2num(href_list["scode"])
S.code = round(S.code)
S.code = min(100, S.code)
S.code = max(1, S.code)
if("Status")
switch(href_list["statdisp"])
@@ -657,7 +662,7 @@ Code:
if("Power Select")
var/pnum = text2num(href_list["target"])
powmonitor = powermonitors[pnum]
loc:mode = 433
pda.mode = 433
mode = 433
if("Supply Orders")
@@ -762,4 +767,4 @@ Code:
menu += "No bots found.<BR>"
return
return menu
return menu
@@ -11,11 +11,12 @@
origin_tech = "syndicate=4;magnets=4"
var/can_use = 1
var/obj/effect/dummy/chameleon/active_dummy = null
var/saved_item = /obj/item/weapon/cigbutt
var/saved_icon = 'icons/obj/clothing/masks.dmi'
var/saved_icon_state = "cigbutt"
var/saved_overlays = null
var/saved_underlays = null
var/saved_appearance = null
/obj/item/device/chameleon/New()
..()
var/obj/item/weapon/cigbutt/butt = /obj/item/weapon/cigbutt
saved_appearance = initial(butt.appearance)
/obj/item/device/chameleon/dropped()
disrupt()
@@ -32,14 +33,13 @@
if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear))
playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
user << "<span class='notice'>Scanned [target].</span>"
saved_item = target.type
saved_icon = target.icon
saved_icon_state = target.icon_state
saved_overlays = target.overlays
saved_underlays = target.underlays
var/obj/temp = new/obj()
temp.appearance = target.appearance
temp.layer = initial(target.layer) // scanning things in your inventory
saved_appearance = temp.appearance
/obj/item/device/chameleon/proc/toggle()
if(!can_use || !saved_item) return
if(!can_use || !saved_appearance) return
if(active_dummy)
eject_all()
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
@@ -53,11 +53,8 @@
qdel(T)
else
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
var/obj/O = new saved_item(src)
if(!O) return
var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc)
C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, saved_underlays, src)
qdel(O)
C.activate(usr, saved_appearance, src)
usr << "<span class='notice'>You activate \the [src].</span>"
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
T.icon = 'icons/effects/effects.dmi'
@@ -89,18 +86,11 @@
name = ""
desc = ""
density = 0
anchored = 1
var/can_move = 1
var/obj/item/device/chameleon/master = null
/obj/effect/dummy/chameleon/proc/activate(obj/O, mob/M, new_icon, new_iconstate, new_overlays, new_underlays, obj/item/device/chameleon/C)
name = O.name
desc = O.desc
icon = new_icon
icon_state = new_iconstate
overlays = new_overlays
underlays = new_underlays
dir = O.dir
/obj/effect/dummy/chameleon/proc/activate(mob/M, saved_appearance, obj/item/device/chameleon/C)
appearance = saved_appearance
M.loc = src
master = C
master.active_dummy = src
@@ -20,8 +20,7 @@
/obj/item/device/radio/intercom/attack_ai(mob/user)
src.add_fingerprint(user)
spawn (0)
attack_self(user)
attack_self(user)
/obj/item/device/radio/intercom/attack_paw(mob/user)
return src.attack_hand(user)
@@ -29,8 +28,7 @@
/obj/item/device/radio/intercom/attack_hand(mob/user)
src.add_fingerprint(user)
spawn (0)
attack_self(user)
attack_self(user)
/obj/item/device/radio/intercom/receive_range(freq, level)
if (!on)
@@ -543,10 +543,10 @@
return
b_stat = !( b_stat )
if(!istype(src, /obj/item/device/radio/beacon))
if (b_stat)
user.show_message("<span class='notice'>The radio can now be attached and modified!</span>")
if(b_stat)
user << "<span class='notice'>The radio can now be attached and modified!</span>"
else
user.show_message("<span class='notice'>The radio can no longer be modified or attached!</span>")
user << "<span class='notice'>The radio can no longer be modified or attached!</span>"
updateDialog()
//Foreach goto(83)
add_fingerprint(user)
+54 -46
View File
@@ -114,7 +114,8 @@ MASS SPECTROMETER
// Used by the PDA medical scanner too
/proc/healthscan(mob/living/user, mob/living/M, mode = 1)
if(user.stat || user.eye_blind)
return
//Damage specifics
var/oxy_loss = M.getOxyLoss()
var/tox_loss = M.getToxLoss()
@@ -199,8 +200,8 @@ MASS SPECTROMETER
if(CI.status == ORGAN_ROBOTIC)
implant_detect += "[H.name] is modified with a [CI.name].<br>"
if(implant_detect)
user.show_message("<span class='notice'>Detected cybernetic modifications:</span>")
user.show_message("<span class='notice'>[implant_detect]</span>")
user << "<span class='notice'>Detected cybernetic modifications:</span>"
user << "<span class='notice'>[implant_detect]</span>"
/proc/chemscan(mob/living/user, mob/living/M)
if(ishuman(M))
@@ -250,11 +251,13 @@ MASS SPECTROMETER
/obj/item/device/analyzer/attack_self(mob/user)
if (user.stat)
add_fingerprint(user)
if (user.stat || user.eye_blind)
return
var/turf/location = user.loc
if (!( istype(location, /turf) ))
if(!istype(location))
return
var/datum/gas_mixture/environment = location.return_air()
@@ -262,43 +265,46 @@ MASS SPECTROMETER
var/pressure = environment.return_pressure()
var/total_moles = environment.total_moles()
user.show_message("<span class='info'><B>Results:</B></span>", 1)
user << "<span class='info'><B>Results:</B></span>"
if(abs(pressure - ONE_ATMOSPHERE) < 10)
user.show_message("<span class='info'>Pressure: [round(pressure,0.1)] kPa</span>", 1)
user << "<span class='info'>Pressure: [round(pressure,0.1)] kPa</span>"
else
user.show_message("<span class='alert'>Pressure: [round(pressure,0.1)] kPa</span>", 1)
user << "<span class='alert'>Pressure: [round(pressure,0.1)] kPa</span>"
if(total_moles)
var/o2_concentration = environment.oxygen/total_moles
var/n2_concentration = environment.nitrogen/total_moles
var/co2_concentration = environment.carbon_dioxide/total_moles
var/plasma_concentration = environment.toxins/total_moles
var/list/env_gases = environment.gases
environment.assert_gases(arglist(hardcoded_gases))
var/o2_concentration = env_gases["o2"][MOLES]/total_moles
var/n2_concentration = env_gases["n2"][MOLES]/total_moles
var/co2_concentration = env_gases["co2"][MOLES]/total_moles
var/plasma_concentration = env_gases["plasma"][MOLES]/total_moles
environment.garbage_collect()
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
if(abs(n2_concentration - N2STANDARD) < 20)
user.show_message("<span class='info'>Nitrogen: [round(n2_concentration*100)] %</span>", 1)
user << "<span class='info'>Nitrogen: [round(n2_concentration*100)] %</span>"
else
user.show_message("<span class='alert'>Nitrogen: [round(n2_concentration*100)] %</span>", 1)
user << "<span class='alert'>Nitrogen: [round(n2_concentration*100)] %</span>"
if(abs(o2_concentration - O2STANDARD) < 2)
user.show_message("<span class='info'>Oxygen: [round(o2_concentration*100)] %</span>", 1)
user << "<span class='info'>Oxygen: [round(o2_concentration*100)] %</span>"
else
user.show_message("<span class='alert'>Oxygen: [round(o2_concentration*100)] %</span>", 1)
user << "<span class='alert'>Oxygen: [round(o2_concentration*100)] %</span>"
if(co2_concentration > 0.01)
user.show_message("<span class='alert'>CO2: [round(co2_concentration*100)] %</span>", 1)
user << "<span class='alert'>CO2: [round(co2_concentration*100)] %</span>"
else
user.show_message("<span class='info'>CO2: [round(co2_concentration*100)] %</span>", 1)
user << "<span class='info'>CO2: [round(co2_concentration*100)] %</span>"
if(plasma_concentration > 0.01)
user.show_message("<span class='info'>Plasma: [round(plasma_concentration*100)] %</span>", 1)
user << "<span class='info'>Plasma: [round(plasma_concentration*100)] %</span>"
if(unknown_concentration > 0.01)
user.show_message("<span class='alert'>Unknown: [round(unknown_concentration*100)] %</span>", 1)
for(var/id in env_gases)
if(id in hardcoded_gases)
continue
var/gas_concentration = env_gases[id][MOLES]/total_moles
user << "<span class='alert'>[env_gases[id][GAS_NAME]]: [round(gas_concentration*100)] %</span>"
user << "<span class='info'>Temperature: [round(environment.temperature-T0C)] &deg;C</span>"
user.show_message("<span class='info'>Temperature: [round(environment.temperature-T0C)] &deg;C</span>", 1)
src.add_fingerprint(user)
return
/obj/item/device/mass_spectrometer
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
@@ -327,7 +333,7 @@ MASS SPECTROMETER
icon_state = initial(icon_state)
/obj/item/device/mass_spectrometer/attack_self(mob/user)
if (user.stat)
if (user.stat || user.eye_blind)
return
if (crit_fail)
user << "<span class='warning'>This device has critically failed and is no longer functional!</span>"
@@ -340,7 +346,7 @@ MASS SPECTROMETER
for(var/datum/reagent/R in reagents.reagent_list)
if(R.id != "blood")
reagents.clear_reagents()
user.show_message("<span class='warning'>The sample was contaminated! Please insert another sample.</span>", 1)
user << "<span class='warning'>The sample was contaminated! Please insert another sample.</span>"
return
else
blood_traces = params2list(R.data["trace_chem"])
@@ -367,7 +373,7 @@ MASS SPECTROMETER
dat += "</i>"
user << dat
reagents.clear_reagents()
return
/obj/item/device/mass_spectrometer/adv
name = "advanced mass-spectrometer"
@@ -389,32 +395,34 @@ MASS SPECTROMETER
materials = list(MAT_METAL=30, MAT_GLASS=20)
/obj/item/device/slime_scanner/attack(mob/living/M, mob/living/user)
if(user.stat || user.eye_blind)
return
if (!isslime(M))
user.show_message("<span class='warning'>This device can only scan slimes!</span>", 1)
user << "<span class='warning'>This device can only scan slimes!</span>"
return
var/mob/living/simple_animal/slime/T = M
user.show_message("Slime scan results:", 1)
user.show_message(text("[T.colour] [] slime", T.is_adult ? "adult" : "baby"), 1)
user.show_message(text("Nutrition: [T.nutrition]/[]", T.get_max_nutrition()), 1)
user << "Slime scan results:"
user << "[T.colour] [T.is_adult ? "adult" : "baby"] slime"
user << "Nutrition: [T.nutrition]/[T.get_max_nutrition()]"
if (T.nutrition < T.get_starve_nutrition())
user.show_message("<span class='warning'>Warning: slime is starving!</span>", 1)
user << "<span class='warning'>Warning: slime is starving!</span>"
else if (T.nutrition < T.get_hunger_nutrition())
user.show_message("<span class='warning'>Warning: slime is hungry</span>", 1)
user.show_message("Electric change strength: [T.powerlevel]", 1)
user.show_message("Health: [T.health]", 1)
user << "<span class='warning'>Warning: slime is hungry</span>"
user << "Electric change strength: [T.powerlevel]"
user << "Health: [T.health]"
if (T.slime_mutation[4] == T.colour)
user.show_message("This slime does not evolve any further.", 1)
user << "This slime does not evolve any further."
else
if (T.slime_mutation[3] == T.slime_mutation[4])
if (T.slime_mutation[2] == T.slime_mutation[1])
user.show_message("Possible mutation: [T.slime_mutation[3]]", 1)
user.show_message("Genetic destability: [T.mutation_chance/2] % chance of mutation on splitting", 1)
user << "Possible mutation: [T.slime_mutation[3]]"
user << "Genetic destability: [T.mutation_chance/2] % chance of mutation on splitting"
else
user.show_message("Possible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]] (x2)", 1)
user.show_message("Genetic destability: [T.mutation_chance] % chance of mutation on splitting", 1)
user << "Possible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]] (x2)"
user << "Genetic destability: [T.mutation_chance] % chance of mutation on splitting"
else
user.show_message("Possible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]], [T.slime_mutation[4]]", 1)
user.show_message("Genetic destability: [T.mutation_chance] % chance of mutation on splitting", 1)
user << "Possible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]], [T.slime_mutation[4]]"
user << "Genetic destability: [T.mutation_chance] % chance of mutation on splitting"
if (T.cores > 1)
user.show_message("Anomalious slime core amount detected", 1)
user.show_message("Growth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]", 1)
user << "Anomalious slime core amount detected"
user << "Growth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]"
@@ -40,16 +40,15 @@ effective or pretty fucking useless.
add_logs(user, null, "knocked down people in the area", src)
for(var/mob/living/carbon/human/M in ultra_range(10, user, 1))
spawn()
if(prob(50))
if(prob(50))
M.Weaken(rand(10,20))
if(prob(25))
M.Stun(rand(5,10))
M << "<span class='userdanger'>You feel a tremendous, paralyzing wave flood your mind.</span>"
M.Weaken(rand(10,20))
if(prob(25))
M.Stun(rand(5,10))
M << "<span class='userdanger'>You feel a tremendous, paralyzing wave flood your mind.</span>"
else
M << "<span class='userdanger'>You feel a sudden, electric jolt travel through your head.</span>"
else
M << "<span class='userdanger'>You feel a sudden, electric jolt travel through your head.</span>"
playsound(src.loc, 'sound/misc/interference.ogg', 50, 1)
user << "<span class='notice'>You trigger [src].</span>"
+9 -8
View File
@@ -175,14 +175,15 @@ var/list/world_uplinks = list()
return 0
//Refund proc for the borg teleporter (later I'll make a general refund proc if there is demand for it)
/obj/item/device/radio/uplink/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/antag_spawner/nuke_ops))
var/obj/item/weapon/antag_spawner/nuke_ops/S = W
if(!S.used)
hidden_uplink.uses += S.TC_cost
qdel(S)
user << "<span class='notice'>Teleporter refunded.</span>"
else
user << "<span class='warning'>This teleporter is already used!</span>"
if(istype(W))
for(var/path in subtypesof(/datum/uplink_item))
var/datum/uplink_item/D = path
if(initial(D.item) == W.type && initial(D.refundable))
hidden_uplink.uses += (D.cost)
hidden_uplink.used_TC -= initial(D.cost)
user << "<span class='notice'>[W] refunded.</span>"
qdel(W)
return
// PRESET UPLINKS
// A collection of preset uplinks.
+8 -5
View File
@@ -17,11 +17,14 @@
var/is_cyborg = 0 // It's 1 if module is used by a cyborg, and uses its storage
var/datum/robot_energy_storage/source
var/cost = 1 // How much energy from storage it costs
var/merge_type = null // This path and its children should merge with this stack, defaults to src.type
/obj/item/stack/New(var/loc, var/amount=null)
..()
if (amount)
src.amount = amount
if(!merge_type)
merge_type = src.type
return
/obj/item/stack/Destroy()
@@ -208,19 +211,19 @@
S.add(transfer)
/obj/item/stack/Crossed(obj/o)
if(istype(o, src.type) && !o.throwing)
if(istype(o, merge_type) && !o.throwing)
merge(o)
return ..()
/obj/item/stack/hitby(atom/movable/AM, skip, hitpush)
if(istype(AM, src.type))
if(istype(AM, merge_type))
merge(AM)
return ..()
/obj/item/stack/attack_hand(mob/user)
if (user.get_inactive_hand() == src)
if(zero_amount()) return
var/obj/item/stack/F = new src.type( user, 1)
var/obj/item/stack/F = new src.type(user, 1)
. = F
F.copy_evidences(src)
user.put_in_hands(F)
@@ -234,7 +237,7 @@
return
/obj/item/stack/attackby(obj/item/W, mob/user, params)
if(istype(W, src.type))
if(istype(W, merge_type))
var/obj/item/stack/S = W
merge(S)
user << "<span class='notice'>Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s.</span>"
@@ -268,4 +271,4 @@
src.max_res_amount = max_res_amount
src.time = time
src.one_per_turf = one_per_turf
src.on_floor = on_floor
src.on_floor = on_floor
+8 -8
View File
@@ -422,7 +422,7 @@
if(istype(target, /obj/effect/decal/cleanable))
target = target.loc
if(is_type_in_list(target,validSurfaces))
var/temp = "rune"
if(letters.Find(drawtype))
temp = "letter"
@@ -1106,13 +1106,13 @@
if (cooldown < world.time)
cooldown = world.time + 1800 //3 minutes
user.visible_message("<span class='warning'>[user] presses a button on [src].</span>", "<span class='notice'>You activate [src], it plays a loud noise!</span>", "<span class='italics'>You hear the click of a button.</span>")
spawn(5) //gia said so
icon_state = "nuketoy"
playsound(src, 'sound/machines/Alarm.ogg', 100, 0, surround = 0)
sleep(135)
icon_state = "nuketoycool"
sleep(cooldown - world.time)
icon_state = "nuketoyidle"
sleep(5)
icon_state = "nuketoy"
playsound(src, 'sound/machines/Alarm.ogg', 100, 0, surround = 0)
sleep(135)
icon_state = "nuketoycool"
sleep(cooldown - world.time)
icon_state = "nuketoyidle"
else
var/timeleft = (cooldown - world.time)
user << "<span class='alert'>Nothing happens, and '</span>[round(timeleft/10)]<span class='alert'>' appears on a small display.</span>"
@@ -60,13 +60,6 @@ AI MODULES
user << "Upload complete. [reciever]'s laws have been modified."
reciever.show_laws()
reciever.law_change_counter++
if(isAI(reciever))
var/mob/living/silicon/ai/A = reciever
for(var/mob/living/silicon/robot/R in A.connected_robots)
if(R.lawupdate)
R << "From now on, these are your laws:"
R.show_laws()
R.law_change_counter++
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) used [src.name] on [reciever.name]([reciever.key]).[law2log ? " The law specified [law2log]" : ""]")
@@ -239,8 +239,9 @@
/obj/effect/chrono_field/return_air() //we always have nominal air and temperature
var/datum/gas_mixture/GM = new
GM.oxygen = MOLES_O2STANDARD
GM.nitrogen = MOLES_N2STANDARD
GM.assert_gases("o2","n2")
GM.gases["o2"][MOLES] = MOLES_O2STANDARD
GM.gases["n2"][MOLES] = MOLES_N2STANDARD
GM.temperature = T20C
return GM
+2 -1
View File
@@ -450,7 +450,8 @@
busy = 0
update_icon()
return
H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src)
if(!H.suiciding && !(H.disabilities & NOCLONE))
H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src)
user.visible_message("<span class='warning'>[user] begins to place [src] on [M.name]'s chest.</span>", "<span class='warning'>You begin to place [src] on [M.name]'s chest...</span>")
busy = 1
+62 -144
View File
@@ -12,13 +12,24 @@
var/list/fields
var/list/add_mutations = list()
var/list/remove_mutations = list()
var/list/add_mutations_static = list()
var/list/remove_mutations_static = list()
var/used = 0
/obj/item/weapon/dnainjector/attack_paw(mob/user)
return attack_hand(user)
/obj/item/weapon/dnainjector/proc/prepare()
for(var/mut_key in add_mutations_static)
add_mutations.Add(mutations_list[mut_key])
for(var/mut_key in remove_mutations_static)
remove_mutations.Add(mutations_list[mut_key])
/obj/item/weapon/dnainjector/proc/inject(mob/living/carbon/M, mob/user)
prepare()
if(M.has_dna() && !(M.disabilities & NOCLONE))
M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
@@ -76,170 +87,123 @@
/obj/item/weapon/dnainjector/antihulk
name = "\improper DNA injector (Anti-Hulk)"
desc = "Cures green skin."
New()
..()
remove_mutations.Add(mutations_list[HULK])
remove_mutations_static = list(HULK)
/obj/item/weapon/dnainjector/hulkmut
name = "\improper DNA injector (Hulk)"
desc = "This will make you big and strong, but give you a bad skin condition."
New()
..()
add_mutations.Add(mutations_list[HULK])
add_mutations_static = list(HULK)
/obj/item/weapon/dnainjector/xraymut
name = "\improper DNA injector (Xray)"
desc = "Finally you can see what the Captain does."
New()
..()
add_mutations.Add(mutations_list[XRAY])
add_mutations_static = list(XRAY)
/obj/item/weapon/dnainjector/antixray
name = "\improper DNA injector (Anti-Xray)"
desc = "It will make you see harder."
New()
..()
remove_mutations.Add(mutations_list[XRAY])
remove_mutations_static = list(XRAY)
/////////////////////////////////////
/obj/item/weapon/dnainjector/antiglasses
name = "\improper DNA injector (Anti-Glasses)"
desc = "Toss away those glasses!"
New()
..()
remove_mutations.Add(mutations_list[BADSIGHT])
remove_mutations_static = list(BADSIGHT)
/obj/item/weapon/dnainjector/glassesmut
name = "\improper DNA injector (Glasses)"
desc = "Will make you need dorkish glasses."
New()
..()
add_mutations.Add(mutations_list[BADSIGHT])
add_mutations_static = list(BADSIGHT)
/obj/item/weapon/dnainjector/epimut
name = "\improper DNA injector (Epi.)"
desc = "Shake shake shake the room!"
New()
..()
add_mutations.Add(mutations_list[EPILEPSY])
add_mutations_static = list(EPILEPSY)
/obj/item/weapon/dnainjector/antiepi
name = "\improper DNA injector (Anti-Epi.)"
desc = "Will fix you up from shaking the room."
New()
..()
remove_mutations.Add(mutations_list[EPILEPSY])
remove_mutations_static = list(EPILEPSY)
////////////////////////////////////
/obj/item/weapon/dnainjector/anticough
name = "\improper DNA injector (Anti-Cough)"
desc = "Will stop that aweful noise."
New()
..()
remove_mutations.Add(mutations_list[COUGH])
remove_mutations_static = list(COUGH)
/obj/item/weapon/dnainjector/coughmut
name = "\improper DNA injector (Cough)"
desc = "Will bring forth a sound of horror from your throat."
New()
..()
add_mutations.Add(mutations_list[COUGH])
add_mutations_static = list(COUGH)
/obj/item/weapon/dnainjector/antidwarf
name = "\improper DNA injector (Anti-Dwarfism)"
desc = "Helps you grow big and strong."
New()
..()
remove_mutations.Add(mutations_list[DWARFISM])
remove_mutations_static = list(DWARFISM)
/obj/item/weapon/dnainjector/dwarf
name = "\improper DNA injector (Dwarfism)"
desc = "Its a small world after all."
New()
..()
add_mutations.Add(mutations_list[DWARFISM])
add_mutations_static = list(DWARFISM)
/obj/item/weapon/dnainjector/clumsymut
name = "\improper DNA injector (Clumsy)"
desc = "Makes clown minions."
New()
..()
add_mutations.Add(mutations_list[CLOWNMUT])
add_mutations_static = list(CLOWNMUT)
/obj/item/weapon/dnainjector/anticlumsy
name = "\improper DNA injector (Anti-Clumy)"
desc = "Apply this for Security Clown."
New()
..()
remove_mutations.Add(mutations_list[CLOWNMUT])
remove_mutations_static = list(CLOWNMUT)
/obj/item/weapon/dnainjector/antitour
name = "\improper DNA injector (Anti-Tour.)"
desc = "Will cure tourrets."
New()
..()
remove_mutations.Add(mutations_list[TOURETTES])
remove_mutations_static = list(TOURETTES)
/obj/item/weapon/dnainjector/tourmut
name = "\improper DNA injector (Tour.)"
desc = "Gives you a nasty case off tourrets."
New()
..()
add_mutations.Add(mutations_list[TOURETTES])
add_mutations_static = list(TOURETTES)
/obj/item/weapon/dnainjector/stuttmut
name = "\improper DNA injector (Stutt.)"
desc = "Makes you s-s-stuttterrr"
New()
..()
add_mutations.Add(mutations_list[NERVOUS])
add_mutations_static = list(NERVOUS)
/obj/item/weapon/dnainjector/antistutt
name = "\improper DNA injector (Anti-Stutt.)"
desc = "Fixes that speaking impairment."
New()
..()
remove_mutations.Add(mutations_list[NERVOUS])
remove_mutations_static = list(NERVOUS)
/obj/item/weapon/dnainjector/antifire
name = "\improper DNA injector (Anti-Fire)"
desc = "Cures fire."
New()
..()
remove_mutations.Add(mutations_list[COLDRES])
remove_mutations_static = list(COLDRES)
/obj/item/weapon/dnainjector/firemut
name = "\improper DNA injector (Fire)"
desc = "Gives you fire."
New()
..()
add_mutations.Add(mutations_list[COLDRES])
add_mutations_static = list(COLDRES)
/obj/item/weapon/dnainjector/blindmut
name = "\improper DNA injector (Blind)"
desc = "Makes you not see anything."
New()
..()
add_mutations.Add(mutations_list[BLINDMUT])
add_mutations_static = list(BLINDMUT)
/obj/item/weapon/dnainjector/antiblind
name = "\improper DNA injector (Anti-Blind)"
desc = "ITS A MIRACLE!!!"
New()
..()
remove_mutations.Add(mutations_list[BLINDMUT])
remove_mutations_static = list(BLINDMUT)
/obj/item/weapon/dnainjector/antitele
name = "\improper DNA injector (Anti-Tele.)"
desc = "Will make you not able to control your mind."
New()
..()
remove_mutations.Add(mutations_list[TK])
remove_mutations_static = list(TK)
/obj/item/weapon/dnainjector/telemut
name = "\improper DNA injector (Tele.)"
desc = "Super brain man!"
New()
..()
add_mutations.Add(mutations_list[TK])
add_mutations_static = list(TK)
/obj/item/weapon/dnainjector/telemut/darkbundle
name = "\improper DNA injector"
@@ -248,143 +212,101 @@
/obj/item/weapon/dnainjector/deafmut
name = "\improper DNA injector (Deaf)"
desc = "Sorry, what did you say?"
New()
..()
add_mutations.Add(mutations_list[DEAFMUT])
add_mutations_static = list(DEAFMUT)
/obj/item/weapon/dnainjector/antideaf
name = "\improper DNA injector (Anti-Deaf)"
desc = "Will make you hear once more."
New()
..()
remove_mutations.Add(mutations_list[DEAFMUT])
remove_mutations_static = list(DEAFMUT)
/obj/item/weapon/dnainjector/h2m
name = "\improper DNA injector (Human > Monkey)"
desc = "Will make you a flea bag."
New()
..()
add_mutations.Add(mutations_list[RACEMUT])
add_mutations_static = list(RACEMUT)
/obj/item/weapon/dnainjector/m2h
name = "\improper DNA injector (Monkey > Human)"
desc = "Will make you...less hairy."
New()
..()
remove_mutations.Add(mutations_list[RACEMUT])
remove_mutations_static = list(RACEMUT)
/obj/item/weapon/dnainjector/antichameleon
name = "\improper DNA injector (Anti-Chameleon)"
New()
..()
remove_mutations.Add(mutations_list[CHAMELEON])
remove_mutations_static = list(CHAMELEON)
/obj/item/weapon/dnainjector/chameleonmut
name = "\improper DNA injector (Chameleon)"
New()
..()
add_mutations.Add(mutations_list[CHAMELEON])
add_mutations_static = list(CHAMELEON)
/obj/item/weapon/dnainjector/antiwacky
name = "\improper DNA injector (Anti-Wacky)"
New()
..()
remove_mutations.Add(mutations_list[WACKY])
remove_mutations_static = list(WACKY)
/obj/item/weapon/dnainjector/wackymut
name = "\improper DNA injector (Wacky)"
New()
..()
add_mutations.Add(mutations_list[WACKY])
add_mutations_static = list(WACKY)
/obj/item/weapon/dnainjector/antimute
name = "\improper DNA injector (Anti-Mute)"
New()
..()
remove_mutations.Add(mutations_list[MUT_MUTE])
remove_mutations_static = list(MUT_MUTE)
/obj/item/weapon/dnainjector/mutemut
name = "\improper DNA injector (Mute)"
New()
..()
add_mutations.Add(mutations_list[MUT_MUTE])
add_mutations_static = list(MUT_MUTE)
/obj/item/weapon/dnainjector/antismile
name = "\improper DNA injector (Anti-Smile)"
New()
..()
remove_mutations.Add(mutations_list[SMILE])
remove_mutations_static = list(SMILE)
/obj/item/weapon/dnainjector/smilemut
name = "\improper DNA injector (Smile)"
New()
..()
add_mutations.Add(mutations_list[SMILE])
add_mutations_static = list(SMILE)
/obj/item/weapon/dnainjector/unintelligablemut
name = "\improper DNA injector (Unintelligable)"
New()
..()
add_mutations.Add(mutations_list[UNINTELLIGABLE])
add_mutations_static = list(UNINTELLIGABLE)
/obj/item/weapon/dnainjector/antiunintelligable
name = "\improper DNA injector (Anti-Unintelligable)"
New()
..()
remove_mutations.Add(mutations_list[UNINTELLIGABLE])
remove_mutations_static = list(UNINTELLIGABLE)
/obj/item/weapon/dnainjector/swedishmut
name = "\improper DNA injector (Swedish)"
New()
..()
add_mutations.Add(mutations_list[SWEDISH])
add_mutations_static = list(SWEDISH)
/obj/item/weapon/dnainjector/antiswedish
name = "\improper DNA injector (Anti-Swedish)"
New()
..()
remove_mutations.Add(mutations_list[SWEDISH])
remove_mutations_static = list(SWEDISH)
/obj/item/weapon/dnainjector/chavmut
name = "\improper DNA injector (Chav)"
New()
..()
add_mutations.Add(mutations_list[CHAV])
add_mutations_static = list(CHAV)
/obj/item/weapon/dnainjector/antichav
name = "\improper DNA injector (Anti-Chav)"
New()
..()
remove_mutations.Add(mutations_list[CHAV])
remove_mutations_static = list(CHAV)
/obj/item/weapon/dnainjector/elvismut
name = "\improper DNA injector (Elvis)"
New()
..()
add_mutations.Add(mutations_list[ELVIS])
add_mutations_static = list(ELVIS)
/obj/item/weapon/dnainjector/antielvis
name = "\improper DNA injector (Anti-Elvis)"
New()
..()
remove_mutations.Add(mutations_list[ELVIS])
remove_mutations_static = list(ELVIS)
/obj/item/weapon/dnainjector/lasereyesmut
name = "\improper DNA injector (Laser Eyes)"
New()
..()
add_mutations.Add(mutations_list[LASEREYES])
add_mutations_static = list(LASEREYES)
/obj/item/weapon/dnainjector/antilasereyes
name = "\improper DNA injector (Anti-Laser Eyes)"
New()
..()
remove_mutations.Add(mutations_list[LASEREYES])
remove_mutations_static = list(LASEREYES)
/obj/item/weapon/dnainjector/timed
var/duration = 600
/obj/item/weapon/dnainjector/timed/inject(mob/living/carbon/M, mob/user)
prepare()
if(M.has_dna() && !(M.disabilities & NOCLONE))
if(M.stat == DEAD) //prevents dead people from having their DNA changed
user << "<span class='notice'>You can't modify [M]'s DNA while \he's dead.</span>"
@@ -436,13 +358,9 @@
/obj/item/weapon/dnainjector/timed/hulk
name = "\improper DNA injector (Hulk)"
desc = "This will make you big and strong, but give you a bad skin condition."
New()
..()
add_mutations.Add(mutations_list[HULK])
add_mutations_static = list(HULK)
/obj/item/weapon/dnainjector/timed/h2m
name = "\improper DNA injector (Human > Monkey)"
desc = "Will make you a flea bag."
New()
..()
add_mutations.Add(mutations_list[RACEMUT])
add_mutations_static = list(RACEMUT)
@@ -198,7 +198,8 @@
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
//Transfer 5% of current tank air contents to turf
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount)
air_transfer.toxins = air_transfer.toxins * 5
if(air_transfer.gases["plasma"])
air_transfer.gases["plasma"][MOLES] *= 5
target.assume_air(air_transfer)
//Burn it based on transfered gas
target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500)
@@ -59,7 +59,7 @@
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
update_mob()
explosion(src.loc,-1,-1,-1, flame_range = range) // no explosive damage, only a large fireball.
explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball.
qdel(src)
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
@@ -23,8 +23,7 @@
user << "<span class='notice'>You'll need to get closer to see any more.</span>"
return
for(var/obj/item/I in loadedItems)
spawn(0)
user << "<span class='info'>\icon [I] It has \the [I] loaded.</span>"
user << "<span class='info'>\icon [I] It has \the [I] loaded.</span>"
if(tank)
user << "<span class='notice'>\icon [tank] It has \the [tank] mounted onto it.</span>"
@@ -93,13 +93,12 @@
"<span class='userdanger'>You feel a powerful shock course through your body sending you flying!</span>", \
"<span class='italics'>You hear a heavy electrical crack!</span>")
var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
target.throw_at(throw_target, 200, 4)
target.throw_at_fast(throw_target, 200, 4)
return
/obj/item/weapon/twohanded/mjollnir/attack(mob/M, mob/user)
..()
spawn(0)
if(wielded)
//if(charged == 5)
//charged = 0
@@ -328,12 +328,8 @@
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/loaded/New()
..()
contents = list()
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g(src)
for(var/i in 1 to 6)
new /obj/item/ammo_box/magazine/m12g(src)
new /obj/item/ammo_box/magazine/m12g/buckshot(src)
new /obj/item/ammo_box/magazine/m12g/stun(src)
new /obj/item/ammo_box/magazine/m12g/dragon(src)
@@ -398,15 +394,8 @@
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/smg/New()
..()
contents = list()
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
for(var/i in 1 to 9)
new /obj/item/ammo_box/magazine/smgm45(src)
return
@@ -416,10 +405,8 @@
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/fireteam/New()
..()
contents = list()
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/smgm45(src)
for(var/i in 1 to 4)
new /obj/item/ammo_box/magazine/smgm45(src)
new /obj/item/ammo_box/magazine/m556(src)
new /obj/item/ammo_box/magazine/m556(src)
new /obj/item/ammo_box/a40mm(src)
@@ -439,7 +426,7 @@
return
/obj/item/weapon/storage/backpack/dufflebag/syndie/m90glbundle
desc = "A large dufflebag containing a M90gl, a magazine, and a stimpack."
desc = "A large dufflebag containing an M90gl, a magazine, four additional grenades, and a pack of Syndicate cigarettes."
/obj/item/weapon/storage/backpack/dufflebag/syndie/m90glbundle/New()
..()
@@ -121,13 +121,8 @@
/obj/item/weapon/storage/belt/soulstone/full/New()
..()
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
new /obj/item/device/soulstone(src)
for(var/i in 1 to 6)
new /obj/item/device/soulstone(src)
/obj/item/weapon/storage/belt/champion
name = "championship belt"
+99 -227
View File
@@ -93,14 +93,9 @@
/obj/item/weapon/storage/box/gloves/New()
..()
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
new /obj/item/clothing/gloves/color/latex(src)
for(var/i in 1 to 7)
new /obj/item/clothing/gloves/color/latex(src)
/obj/item/weapon/storage/box/masks
name = "box of sterile masks"
desc = "This box contains sterile medical masks."
@@ -108,14 +103,9 @@
/obj/item/weapon/storage/box/masks/New()
..()
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
for(var/i in 1 to 7)
new /obj/item/clothing/mask/surgical(src)
/obj/item/weapon/storage/box/syringes
name = "box of syringes"
desc = "A box full of syringes."
@@ -124,14 +114,9 @@
/obj/item/weapon/storage/box/syringes/New()
..()
new /obj/item/weapon/reagent_containers/syringe( src )
new /obj/item/weapon/reagent_containers/syringe( src )
new /obj/item/weapon/reagent_containers/syringe( src )
new /obj/item/weapon/reagent_containers/syringe( src )
new /obj/item/weapon/reagent_containers/syringe( src )
new /obj/item/weapon/reagent_containers/syringe( src )
new /obj/item/weapon/reagent_containers/syringe( src )
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/syringe( src )
/obj/item/weapon/storage/box/medipens
name = "box of medipens"
desc = "A box full of epinephrine MediPens."
@@ -139,14 +124,9 @@
/obj/item/weapon/storage/box/medipens/New()
..()
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
/obj/item/weapon/storage/box/medipens/utility
name = "stimpack value kit"
desc = "A box with several stimpack medipens for the economical miner."
@@ -154,39 +134,29 @@
/obj/item/weapon/storage/box/medipens/utility/New()
..()
new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src)
for(var/i in 1 to 5)
new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src)
/obj/item/weapon/storage/box/beakers
name = "box of beakers"
icon_state = "beaker"
/obj/item/weapon/storage/box/beakers/New()
..()
new /obj/item/weapon/reagent_containers/glass/beaker( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
new /obj/item/weapon/reagent_containers/glass/beaker( src )
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/glass/beaker( src )
/obj/item/weapon/storage/box/injectors
name = "box of DNA injectors"
desc = "This box contains injectors it seems."
/obj/item/weapon/storage/box/injectors/New()
..()
new /obj/item/weapon/dnainjector/h2m(src)
new /obj/item/weapon/dnainjector/h2m(src)
new /obj/item/weapon/dnainjector/h2m(src)
new /obj/item/weapon/dnainjector/m2h(src)
new /obj/item/weapon/dnainjector/m2h(src)
new /obj/item/weapon/dnainjector/m2h(src)
for(var/i in 1 to 3)
new /obj/item/weapon/dnainjector/h2m(src)
for(var/i in 1 to 3)
new /obj/item/weapon/dnainjector/m2h(src)
/obj/item/weapon/storage/box/flashbangs
name = "box of flashbangs (WARNING)"
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use.</B>"
@@ -194,14 +164,9 @@
/obj/item/weapon/storage/box/flashbangs/New()
..()
new /obj/item/weapon/grenade/flashbang(src)
new /obj/item/weapon/grenade/flashbang(src)
new /obj/item/weapon/grenade/flashbang(src)
new /obj/item/weapon/grenade/flashbang(src)
new /obj/item/weapon/grenade/flashbang(src)
new /obj/item/weapon/grenade/flashbang(src)
new /obj/item/weapon/grenade/flashbang(src)
for(var/i in 1 to 7)
new /obj/item/weapon/grenade/flashbang(src)
/obj/item/weapon/storage/box/flashes
name = "box of flashbulbs"
desc = "<B>WARNING: Flashes can cause serious eye damage, protective eyewear is required.</B>"
@@ -209,13 +174,9 @@
/obj/item/weapon/storage/box/flashes/New()
..()
new /obj/item/device/assembly/flash/handheld(src)
new /obj/item/device/assembly/flash/handheld(src)
new /obj/item/device/assembly/flash/handheld(src)
new /obj/item/device/assembly/flash/handheld(src)
new /obj/item/device/assembly/flash/handheld(src)
new /obj/item/device/assembly/flash/handheld(src)
for(var/i in 1 to 6)
new /obj/item/device/assembly/flash/handheld(src)
/obj/item/weapon/storage/box/teargas
name = "box of tear gas grenades (WARNING)"
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness and skin irritation.</B>"
@@ -223,14 +184,9 @@
/obj/item/weapon/storage/box/teargas/New()
..()
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
for(var/i in 1 to 7)
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
/obj/item/weapon/storage/box/emps
name = "box of emp grenades"
desc = "A box with 5 emp grenades."
@@ -238,12 +194,9 @@
/obj/item/weapon/storage/box/emps/New()
..()
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/grenade/empgrenade(src)
new /obj/item/weapon/grenade/empgrenade(src)
for(var/i in 1 to 5)
new /obj/item/weapon/grenade/empgrenade(src)
/obj/item/weapon/storage/box/trackimp
name = "boxed tracking implant kit"
desc = "Box full of scum-bag tracking utensils."
@@ -251,10 +204,8 @@
/obj/item/weapon/storage/box/trackimp/New()
..()
new /obj/item/weapon/implantcase/tracking(src)
new /obj/item/weapon/implantcase/tracking(src)
new /obj/item/weapon/implantcase/tracking(src)
new /obj/item/weapon/implantcase/tracking(src)
for(var/i in 1 to 4)
new /obj/item/weapon/implantcase/tracking(src)
new /obj/item/weapon/implanter(src)
new /obj/item/weapon/implantpad(src)
new /obj/item/weapon/locator(src)
@@ -266,11 +217,8 @@
/obj/item/weapon/storage/box/chemimp/New()
..()
new /obj/item/weapon/implantcase/chem(src)
new /obj/item/weapon/implantcase/chem(src)
new /obj/item/weapon/implantcase/chem(src)
new /obj/item/weapon/implantcase/chem(src)
new /obj/item/weapon/implantcase/chem(src)
for(var/i in 1 to 5)
new /obj/item/weapon/implantcase/chem(src)
new /obj/item/weapon/implanter(src)
new /obj/item/weapon/implantpad(src)
@@ -281,11 +229,8 @@
/obj/item/weapon/storage/box/exileimp/New()
..()
new /obj/item/weapon/implantcase/exile(src)
new /obj/item/weapon/implantcase/exile(src)
new /obj/item/weapon/implantcase/exile(src)
new /obj/item/weapon/implantcase/exile(src)
new /obj/item/weapon/implantcase/exile(src)
for(var/i in 1 to 5)
new /obj/item/weapon/implantcase/exile(src)
new /obj/item/weapon/implanter(src)
/obj/item/weapon/storage/box/rxglasses
@@ -295,39 +240,26 @@
/obj/item/weapon/storage/box/rxglasses/New()
..()
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
new /obj/item/clothing/glasses/regular(src)
for(var/i in 1 to 7)
new /obj/item/clothing/glasses/regular(src)
/obj/item/weapon/storage/box/drinkingglasses
name = "box of drinking glasses"
desc = "It has a picture of drinking glasses on it."
/obj/item/weapon/storage/box/drinkingglasses/New()
..()
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
for(var/i in 1 to 6)
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
/obj/item/weapon/storage/box/condimentbottles
name = "box of condiment bottles"
desc = "It has a large ketchup smear on it."
/obj/item/weapon/storage/box/condimentbottles/New()
..()
new /obj/item/weapon/reagent_containers/food/condiment(src)
new /obj/item/weapon/reagent_containers/food/condiment(src)
new /obj/item/weapon/reagent_containers/food/condiment(src)
new /obj/item/weapon/reagent_containers/food/condiment(src)
new /obj/item/weapon/reagent_containers/food/condiment(src)
new /obj/item/weapon/reagent_containers/food/condiment(src)
for(var/i in 1 to 6)
new /obj/item/weapon/reagent_containers/food/condiment(src)
/obj/item/weapon/storage/box/cups
name = "box of paper cups"
@@ -335,14 +267,9 @@
/obj/item/weapon/storage/box/cups/New()
..()
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
/obj/item/weapon/storage/box/donkpockets
name = "box of donk-pockets"
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
@@ -350,12 +277,8 @@
/obj/item/weapon/storage/box/donkpockets/New()
..()
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
for(var/i in 1 to 6)
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
/obj/item/weapon/storage/box/monkeycubes
name = "monkey cube box"
@@ -378,9 +301,8 @@
/obj/item/weapon/storage/box/permits/New() //There's only a few, so blueprints are still useful beyond setting every room's name to PRIMARY FART STORAGE
..()
new /obj/item/areaeditor/permit(src)
new /obj/item/areaeditor/permit(src)
new /obj/item/areaeditor/permit(src)
for(var/i in 1 to 3)
new /obj/item/areaeditor/permit(src)
/obj/item/weapon/storage/box/ids
@@ -390,14 +312,9 @@
/obj/item/weapon/storage/box/ids/New()
..()
new /obj/item/weapon/card/id(src)
new /obj/item/weapon/card/id(src)
new /obj/item/weapon/card/id(src)
new /obj/item/weapon/card/id(src)
new /obj/item/weapon/card/id(src)
new /obj/item/weapon/card/id(src)
new /obj/item/weapon/card/id(src)
for(var/i in 1 to 7)
new /obj/item/weapon/card/id(src)
/obj/item/weapon/storage/box/silver_ids
name = "box of spare silver IDs"
desc = "Shiny IDs for important people."
@@ -405,13 +322,8 @@
/obj/item/weapon/storage/box/silver_ids/New()
..()
new /obj/item/weapon/card/id/silver(src)
new /obj/item/weapon/card/id/silver(src)
new /obj/item/weapon/card/id/silver(src)
new /obj/item/weapon/card/id/silver(src)
new /obj/item/weapon/card/id/silver(src)
new /obj/item/weapon/card/id/silver(src)
new /obj/item/weapon/card/id/silver(src)
for(var/i in 1 to 7)
new /obj/item/weapon/card/id/silver(src)
/obj/item/weapon/storage/box/prisoner
name = "box of prisoner IDs"
@@ -436,12 +348,8 @@
/obj/item/weapon/storage/box/seccarts/New()
..()
new /obj/item/weapon/cartridge/detective(src)
new /obj/item/weapon/cartridge/security(src)
new /obj/item/weapon/cartridge/security(src)
new /obj/item/weapon/cartridge/security(src)
new /obj/item/weapon/cartridge/security(src)
new /obj/item/weapon/cartridge/security(src)
new /obj/item/weapon/cartridge/security(src)
for(var/i in 1 to 6)
new /obj/item/weapon/cartridge/security(src)
/obj/item/weapon/storage/box/firingpins
name = "box of standard firing pins"
@@ -450,14 +358,9 @@
/obj/item/weapon/storage/box/firingpins/New()
..()
new /obj/item/device/firing_pin(src)
new /obj/item/device/firing_pin(src)
new /obj/item/device/firing_pin(src)
new /obj/item/device/firing_pin(src)
new /obj/item/device/firing_pin(src)
new /obj/item/device/firing_pin(src)
new /obj/item/device/firing_pin(src)
for(var/i in 1 to 7)
new /obj/item/device/firing_pin(src)
/obj/item/weapon/storage/box/handcuffs
name = "box of spare handcuffs"
desc = "A box full of handcuffs."
@@ -465,14 +368,9 @@
/obj/item/weapon/storage/box/handcuffs/New()
..()
new /obj/item/weapon/restraints/handcuffs(src)
new /obj/item/weapon/restraints/handcuffs(src)
new /obj/item/weapon/restraints/handcuffs(src)
new /obj/item/weapon/restraints/handcuffs(src)
new /obj/item/weapon/restraints/handcuffs(src)
new /obj/item/weapon/restraints/handcuffs(src)
new /obj/item/weapon/restraints/handcuffs(src)
for(var/i in 1 to 7)
new /obj/item/weapon/restraints/handcuffs(src)
/obj/item/weapon/storage/box/zipties
name = "box of spare zipties"
desc = "A box full of zipties."
@@ -480,14 +378,9 @@
/obj/item/weapon/storage/box/zipties/New()
..()
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
for(var/i in 1 to 7)
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
/obj/item/weapon/storage/box/alienhandcuffs
name = "box of spare handcuffs"
desc = "A box full of handcuffs."
@@ -495,14 +388,9 @@
/obj/item/weapon/storage/box/alienhandcuffs/New()
..()
new /obj/item/weapon/restraints/handcuffs/alien(src)
new /obj/item/weapon/restraints/handcuffs/alien(src)
new /obj/item/weapon/restraints/handcuffs/alien(src)
new /obj/item/weapon/restraints/handcuffs/alien(src)
new /obj/item/weapon/restraints/handcuffs/alien(src)
new /obj/item/weapon/restraints/handcuffs/alien(src)
new /obj/item/weapon/restraints/handcuffs/alien(src)
for(var/i in 1 to 7)
new /obj/item/weapon/restraints/handcuffs/alien(src)
/obj/item/weapon/storage/box/fakesyndiesuit
name = "boxed space suit and helmet"
desc = "A sleek, sturdy box used to hold replica spacesuits."
@@ -520,13 +408,9 @@
/obj/item/weapon/storage/box/mousetraps/New()
..()
new /obj/item/device/assembly/mousetrap( src )
new /obj/item/device/assembly/mousetrap( src )
new /obj/item/device/assembly/mousetrap( src )
new /obj/item/device/assembly/mousetrap( src )
new /obj/item/device/assembly/mousetrap( src )
new /obj/item/device/assembly/mousetrap( src )
for(var/i in 1 to 6)
new /obj/item/device/assembly/mousetrap( src )
/obj/item/weapon/storage/box/pillbottles
name = "box of pill bottles"
desc = "It has pictures of pill bottles on its front."
@@ -534,14 +418,9 @@
/obj/item/weapon/storage/box/pillbottles/New()
..()
new /obj/item/weapon/storage/pill_bottle( src )
new /obj/item/weapon/storage/pill_bottle( src )
new /obj/item/weapon/storage/pill_bottle( src )
new /obj/item/weapon/storage/pill_bottle( src )
new /obj/item/weapon/storage/pill_bottle( src )
new /obj/item/weapon/storage/pill_bottle( src )
new /obj/item/weapon/storage/pill_bottle( src )
for(var/i in 1 to 7)
new /obj/item/weapon/storage/pill_bottle( src )
/obj/item/weapon/storage/box/snappops
name = "snap pop box"
desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children."
@@ -620,14 +499,9 @@
/obj/item/weapon/storage/box/deputy/New()
..()
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
new /obj/item/clothing/tie/armband/deputy(src)
for(var/i in 1 to 7)
new /obj/item/clothing/tie/armband/deputy(src)
/obj/item/weapon/storage/box/metalfoam
name = "box of metal foam grenades"
desc = "To be used to rapidly seal hull breaches"
@@ -635,15 +509,9 @@
/obj/item/weapon/storage/box/metalfoam/New()
..()
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
for(var/i in 1 to 7)
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
/obj/item/weapon/storage/box/hug
name = "box of hugs"
desc = "A special box for sensitive people."
@@ -676,14 +544,9 @@
/obj/item/weapon/storage/box/rubbershot/New()
..()
new /obj/item/ammo_casing/shotgun/rubbershot(src)
new /obj/item/ammo_casing/shotgun/rubbershot(src)
new /obj/item/ammo_casing/shotgun/rubbershot(src)
new /obj/item/ammo_casing/shotgun/rubbershot(src)
new /obj/item/ammo_casing/shotgun/rubbershot(src)
new /obj/item/ammo_casing/shotgun/rubbershot(src)
new /obj/item/ammo_casing/shotgun/rubbershot(src)
for(var/i in 1 to 7)
new /obj/item/ammo_casing/shotgun/rubbershot(src)
/obj/item/weapon/storage/box/lethalshot
name = "box of lethal shotgun shots"
desc = "A box full of lethal shots, designed for riot shotguns."
@@ -698,3 +561,12 @@
new /obj/item/ammo_casing/shotgun/buckshot(src)
new /obj/item/ammo_casing/shotgun/buckshot(src)
new /obj/item/ammo_casing/shotgun/buckshot(src)
/obj/item/weapon/storage/box/beanbag/New()
..()
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
@@ -42,9 +42,8 @@
..()
if(empty) return
icon_state = pick("ointment","firefirstaid")
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
for(var/i in 1 to 3)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/oxandrolone(src)
new /obj/item/weapon/reagent_containers/pill/oxandrolone(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
@@ -61,12 +60,10 @@
..()
if(empty) return
icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3")
new /obj/item/weapon/reagent_containers/syringe/charcoal(src)
new /obj/item/weapon/reagent_containers/syringe/charcoal(src)
new /obj/item/weapon/reagent_containers/syringe/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
for(var/i in 1 to 3)
new /obj/item/weapon/reagent_containers/syringe/charcoal(src)
for(var/i in 1 to 3)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/device/healthanalyzer(src)
return
@@ -79,10 +76,8 @@
/obj/item/weapon/storage/firstaid/o2/New()
..()
if(empty) return
new /obj/item/weapon/reagent_containers/pill/salbutamol(src)
new /obj/item/weapon/reagent_containers/pill/salbutamol(src)
new /obj/item/weapon/reagent_containers/pill/salbutamol(src)
new /obj/item/weapon/reagent_containers/pill/salbutamol(src)
for(var/i in 1 to 4)
new /obj/item/weapon/reagent_containers/pill/salbutamol(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
new /obj/item/device/healthanalyzer(src)
@@ -97,10 +92,8 @@
/obj/item/weapon/storage/firstaid/brute/New()
..()
if(empty) return
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
for(var/i in 1 to 4)
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
new /obj/item/stack/medical/gauze(src)
new /obj/item/stack/medical/gauze(src)
new /obj/item/device/healthanalyzer(src)
@@ -168,79 +161,50 @@
/obj/item/weapon/storage/box/silver_sulf/New()
..()
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
/obj/item/weapon/storage/pill_bottle/charcoal
name = "bottle of charcoal pills"
desc = "Contains pills used to counter toxins."
/obj/item/weapon/storage/pill_bottle/charcoal/New()
..()
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
/obj/item/weapon/storage/pill_bottle/epinephrine
name = "bottle of epinephrine pills"
desc = "Contains pills used to stabilize patients."
/obj/item/weapon/storage/pill_bottle/epinephrine/New()
..()
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
/obj/item/weapon/storage/pill_bottle/mutadone
name = "bottle of mutadone pills"
desc = "Contains pills used to treat genetic abnormalities."
/obj/item/weapon/storage/pill_bottle/mutadone/New()
..()
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
/obj/item/weapon/storage/pill_bottle/mannitol
name = "bottle of mannitol pills"
desc = "Contains pills used to treat brain damage."
/obj/item/weapon/storage/pill_bottle/mannitol/New()
..()
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
/obj/item/weapon/storage/pill_bottle/stimulant
name = "bottle of stimulant pills"
desc = "Guaranteed to give you that extra burst of energy during a long shift!"
/obj/item/weapon/storage/pill_bottle/stimulant/New()
..()
new /obj/item/weapon/reagent_containers/pill/stimulant(src)
new /obj/item/weapon/reagent_containers/pill/stimulant(src)
new /obj/item/weapon/reagent_containers/pill/stimulant(src)
new /obj/item/weapon/reagent_containers/pill/stimulant(src)
new /obj/item/weapon/reagent_containers/pill/stimulant(src)
for(var/i in 1 to 5)
new /obj/item/weapon/reagent_containers/pill/stimulant(src)
@@ -82,9 +82,8 @@
/obj/item/weapon/storage/lockbox/loyalty/New()
..()
new /obj/item/weapon/implantcase/loyalty(src)
new /obj/item/weapon/implantcase/loyalty(src)
new /obj/item/weapon/implantcase/loyalty(src)
for(var/i in 1 to 3)
new /obj/item/weapon/implantcase/loyalty(src)
new /obj/item/weapon/implanter/loyalty(src)
@@ -114,7 +113,6 @@
..()
new /obj/item/clothing/tie/medal/silver/valor(src)
new /obj/item/clothing/tie/medal/bronze_heart(src)
new /obj/item/clothing/tie/medal/conduct(src)
new /obj/item/clothing/tie/medal/conduct(src)
new /obj/item/clothing/tie/medal/conduct(src)
new /obj/item/clothing/tie/medal/gold/captain(src)
for(var/i in 1 to 3)
new /obj/item/clothing/tie/medal/conduct(src)
new /obj/item/clothing/tie/medal/gold/captain(src)
@@ -36,21 +36,21 @@
if (istype(W, /obj/item/weapon/screwdriver))
if (do_after(user, 20/W.toolspeed, target = src))
src.open =! src.open
user.show_message(text("<span class='notice'>You [] the service panel.</span>", (src.open ? "open" : "close")))
user.show_message("<span class='notice'>You [open ? "open" : "close"] the service panel.</span>", 1)
return
if ((istype(W, /obj/item/device/multitool)) && (src.open == 1)&& (!src.l_hacking))
user.show_message(text("<span class='danger'>Now attempting to reset internal memory, please hold.</span>"), 1)
user.show_message("<span class='danger'>Now attempting to reset internal memory, please hold.</span>", 1)
src.l_hacking = 1
if (do_after(usr, 100/W.toolspeed, target = src))
if (prob(40))
src.l_setshort = 1
src.l_set = 0
user.show_message(text("<span class='danger'>Internal memory reset. Please give it a few seconds to reinitialize.</span>"), 1)
user.show_message("<span class='danger'>Internal memory reset. Please give it a few seconds to reinitialize.</span>", 1)
sleep(80)
src.l_setshort = 0
src.l_hacking = 0
else
user.show_message(text("<span class='danger'>Unable to reset internal memory.</span>"), 1)
user.show_message("<span class='danger'>Unable to reset internal memory.</span>", 1)
src.l_hacking = 0
else src.l_hacking = 0
return
@@ -158,16 +158,10 @@
/obj/item/weapon/storage/box/syndie_kit/bioterror/New()
..()
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
for(var/i in 1 to 7)
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
return
/obj/item/weapon/storage/box/syndie_kit/imp_adrenal
name = "boxed adrenal implant (with injector)"
@@ -178,7 +172,6 @@
O.update_icon()
return
/obj/item/weapon/storage/box/syndie_kit/imp_storage
name = "boxed storage implant (with injector)"
@@ -187,7 +180,6 @@
new /obj/item/weapon/implanter/storage(src)
return
/obj/item/weapon/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)
@@ -199,7 +191,6 @@
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
return
/obj/item/weapon/storage/box/syndie_kit/emp
name = "boxed EMP kit"
@@ -241,30 +232,25 @@
new /obj/item/nuke_core_container(src)
new /obj/item/weapon/paper/nuke_instructions(src)
/obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade
name = "boxed virus grenade kit"
name = "boxed virus grenade kit"
/obj/item/weapon/storage/box/virus_kit/tuberculosisgrenade/New()
..()
new /obj/item/weapon/grenade/chem_grenade/tuberculosis(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/syringe(src)
new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src)
return
/obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade/New()
..()
new /obj/item/weapon/grenade/chem_grenade/tuberculosis(src)
for(var/i in 1 to 5)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/syringe(src)
new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src)
return
/obj/item/weapon/storage/box/syndie_kit/tuberculosiskit
name = "boxed virus kit"
/obj/item/weapon/storage/box/virus_kit/tuberculosiskit/New()
..()
new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosis(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/syringe(src)
new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src)
return
name = "boxed virus kit"
/obj/item/weapon/storage/box/syndie_kit/tuberculosiskit/New()
..()
new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosis(src)
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
new /obj/item/weapon/reagent_containers/syringe(src)
new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src)
return
@@ -54,7 +54,7 @@
var/datum/gas_mixture/G = src.air_contents.remove(num)
var/allgases = G.carbon_dioxide + G.nitrogen + G.oxygen + G.toxins //fuck trace gases -Pete
var/allgases = G.total_moles()
if(allgases >= 0.005)
return 1
@@ -73,7 +73,8 @@
/obj/item/weapon/tank/jetpack/void/New()
..()
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("o2")
air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
/obj/item/weapon/tank/jetpack/oxygen
@@ -84,7 +85,8 @@
/obj/item/weapon/tank/jetpack/oxygen/New()
..()
air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("o2")
air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
/obj/item/weapon/tank/jetpack/oxygen/harness
name = "jet harness (oxygen)"
@@ -114,7 +116,8 @@
..()
ion_trail = new /datum/effect_system/trail_follow/ion()
ion_trail.set_up(src)
air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("co2")
air_contents.gases["co2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
/obj/item/weapon/tank/jetpack/suit
@@ -14,13 +14,14 @@
name = "oxygen tank"
desc = "A tank of oxygen."
icon_state = "oxygen"
distribute_pressure = 16
distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE
force = 10
/obj/item/weapon/tank/internals/oxygen/New()
..()
src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("o2")
air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -45,13 +46,9 @@
/obj/item/weapon/tank/internals/anesthetic/New()
..()
src.air_contents.oxygen = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
var/datum/gas/sleeping_agent/trace_gas = new()
trace_gas.moles = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
src.air_contents.trace_gases += trace_gas
air_contents.assert_gases("o2", "n2o")
air_contents.gases["o2"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
air_contents.gases["n2o"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
return
/*
@@ -66,9 +63,9 @@
/obj/item/weapon/tank/internals/air/New()
..()
src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
src.air_contents.nitrogen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
air_contents.assert_gases("o2","n2")
air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD
air_contents.gases["n2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD
return
@@ -86,8 +83,8 @@
/obj/item/weapon/tank/internals/plasma/New()
..()
src.air_contents.toxins = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("plasma")
air_contents.gases["plasma"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/obj/item/weapon/tank/internals/plasma/attackby(obj/item/weapon/W, mob/user, params)
@@ -105,7 +102,8 @@
/obj/item/weapon/tank/internals/plasma/full/New()
..()
src.air_contents.toxins = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("plasma")
air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -120,14 +118,14 @@
/obj/item/weapon/tank/internals/plasmaman/New()
..()
src.air_contents.toxins = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("plasma")
air_contents.gases["plasma"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/obj/item/weapon/tank/internals/plasmaman/full/New()
..()
src.air_contents.toxins = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("plasma")
air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -139,8 +137,8 @@
/obj/item/weapon/tank/internals/plasmaman/belt/full/New()
..()
src.air_contents.toxins = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("plasma")
air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -156,13 +154,14 @@
slot_flags = SLOT_BELT
w_class = 2
force = 4
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE
volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
/obj/item/weapon/tank/internals/emergency_oxygen/New()
..()
src.air_contents.oxygen = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
air_contents.assert_gas("o2")
air_contents.gases["o2"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/obj/item/weapon/tank/internals/emergency_oxygen/engi
@@ -1,7 +1,3 @@
#define TANK_MAX_RELEASE_PRESSURE (ONE_ATMOSPHERE*3)
#define TANK_MIN_RELEASE_PRESSURE 0
#define TANK_DEFAULT_RELEASE_PRESSURE (ONE_ATMOSPHERE*O2STANDARD)
/obj/item/weapon/tank
name = "tank"
icon = 'icons/obj/tank.dmi'
@@ -119,10 +115,11 @@
add_fingerprint(user)
ui_interact(user)
/obj/item/weapon/tank/ui_interact(mob/user, ui_key = "main", var/datum/tgui/ui = null, force_open = 0)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open = force_open)
/obj/item/weapon/tank/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = hands_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if (!ui)
ui = new(user, src, ui_key, "tanks", name, 400, 200, state = inventory_state)
ui = new(user, src, ui_key, "tanks", name, 400, 200, master_ui, state)
ui.open()
/obj/item/weapon/tank/get_ui_data()
@@ -156,7 +156,7 @@ Frequency:
if(turfs.len)
L["None (Dangerous)"] = pick(turfs)
var/t1 = input(user, "Please select a teleporter to lock in on.", "Hand Teleporter") in L
if ((user.get_active_hand() != src || user.stat || user.restrained()))
if (user.get_active_hand() != src || user.incapacitated())
return
if(active_portals >= 3)
user.show_message("<span class='notice'>\The [src] is recharging!</span>")
@@ -166,7 +166,6 @@ Frequency:
var/obj/effect/portal/P = new /obj/effect/portal(get_turf(src), T, src)
try_move_adjacent(P)
active_portals++
src.add_fingerprint(user)
return
add_fingerprint(user)
+3 -2
View File
@@ -17,6 +17,7 @@
/obj/Destroy()
if(!istype(src, /obj/machinery))
SSobj.processing.Remove(src) // TODO: Have a processing bitflag to reduce on unnecessary loops through the processing lists
SStgui.close_uis(src)
return ..()
/obj/assume_air(datum/gas_mixture/giver)
@@ -194,7 +195,7 @@
/obj/proc/tesla_act(var/power)
being_shocked = 1
var/power_bounced = power / 1.3
tesla_zap(src, 5, power_bounced)
var/power_bounced = power / 2
tesla_zap(src, 3, power_bounced)
spawn(10)
being_shocked = 0
@@ -33,6 +33,10 @@
if(!opened) // if closed, any item at the crate's loc is put in the contents
take_contents()
/obj/structure/closet/Destroy()
dump_contents()
return ..()
/obj/structure/closet/update_icon()
overlays.Cut()
if(!opened)
@@ -167,7 +171,6 @@
contents_explosion(severity, target)
if(loc && ispath(material_drop) && !(flags & NODECONSTRUCT))
new material_drop(loc)
dump_contents()
qdel(src)
..()
@@ -176,7 +179,6 @@
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
health -= Proj.damage
if(health <= 0)
dump_contents()
qdel(src)
return
@@ -184,12 +186,10 @@
if(user.environment_smash)
user.do_attack_animation(src)
visible_message("<span class='danger'>[user] destroys \the [src].</span>")
dump_contents()
qdel(src)
/obj/structure/closet/blob_act()
if(prob(75))
dump_contents()
qdel(src)
@@ -43,12 +43,10 @@
/obj/structure/closet/lasertag/red/New()
..()
new /obj/item/weapon/gun/energy/laser/redtag(src)
new /obj/item/weapon/gun/energy/laser/redtag(src)
new /obj/item/weapon/gun/energy/laser/redtag(src)
new /obj/item/clothing/suit/redtag(src)
new /obj/item/clothing/suit/redtag(src)
new /obj/item/clothing/suit/redtag(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser/redtag(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/redtag(src)
new /obj/item/clothing/head/helmet/redtaghelm(src)
@@ -59,10 +57,8 @@
/obj/structure/closet/lasertag/blue/New()
..()
new /obj/item/weapon/gun/energy/laser/bluetag(src)
new /obj/item/weapon/gun/energy/laser/bluetag(src)
new /obj/item/weapon/gun/energy/laser/bluetag(src)
new /obj/item/clothing/suit/bluetag(src)
new /obj/item/clothing/suit/bluetag(src)
new /obj/item/clothing/suit/bluetag(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser/bluetag(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/bluetag(src)
new /obj/item/clothing/head/helmet/bluetaghelm(src)
@@ -22,17 +22,10 @@
/obj/structure/closet/gimmick/russian/New()
..()
new /obj/item/clothing/head/ushanka(src)
new /obj/item/clothing/head/ushanka(src)
new /obj/item/clothing/head/ushanka(src)
new /obj/item/clothing/head/ushanka(src)
new /obj/item/clothing/head/ushanka(src)
new /obj/item/clothing/under/soviet(src)
new /obj/item/clothing/under/soviet(src)
new /obj/item/clothing/under/soviet(src)
new /obj/item/clothing/under/soviet(src)
new /obj/item/clothing/under/soviet(src)
for(var/i in 1 to 5)
new /obj/item/clothing/head/ushanka(src)
for(var/i in 1 to 5)
new /obj/item/clothing/under/soviet(src)
/obj/structure/closet/gimmick/tacticool
name = "tacticool gear closet"
@@ -67,50 +60,38 @@
/obj/structure/closet/thunderdome/tdred/New()
..()
new /obj/item/clothing/suit/armor/tdome/red(src)
new /obj/item/clothing/suit/armor/tdome/red(src)
new /obj/item/clothing/suit/armor/tdome/red(src)
new /obj/item/weapon/melee/energy/sword/saber(src)
new /obj/item/weapon/melee/energy/sword/saber(src)
new /obj/item/weapon/melee/energy/sword/saber(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/clothing/head/helmet/thunderdome(src)
new /obj/item/clothing/head/helmet/thunderdome(src)
new /obj/item/clothing/head/helmet/thunderdome(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/red(src)
for(var/i in 1 to 3)
new /obj/item/weapon/melee/energy/sword/saber(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser(src)
for(var/i in 1 to 3)
new /obj/item/weapon/melee/baton/loaded(src)
for(var/i in 1 to 3)
new /obj/item/weapon/storage/box/flashbangs(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/helmet/thunderdome(src)
/obj/structure/closet/thunderdome/tdgreen
name = "green-team Thunderdome closet"
icon_door = "green"
/obj/structure/closet/thunderdome/tdgreen/New()
..()
new /obj/item/clothing/suit/armor/tdome/green(src)
new /obj/item/clothing/suit/armor/tdome/green(src)
new /obj/item/clothing/suit/armor/tdome/green(src)
new /obj/item/weapon/melee/energy/sword/saber(src)
new /obj/item/weapon/melee/energy/sword/saber(src)
new /obj/item/weapon/melee/energy/sword/saber(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/clothing/head/helmet/thunderdome(src)
new /obj/item/clothing/head/helmet/thunderdome(src)
new /obj/item/clothing/head/helmet/thunderdome(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/green(src)
for(var/i in 1 to 3)
new /obj/item/weapon/melee/energy/sword/saber(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser(src)
for(var/i in 1 to 3)
new /obj/item/weapon/melee/baton/loaded(src)
for(var/i in 1 to 3)
new /obj/item/weapon/storage/box/flashbangs(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/helmet/thunderdome(src)
/obj/structure/closet/malf/suits
desc = "It's a storage unit for operational gear."
icon_state = "syndicate"
@@ -23,6 +23,10 @@
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/weapon/reagent_containers/glass/rag(src)
new /obj/item/weapon/reagent_containers/glass/rag(src)
new /obj/item/weapon/storage/box/beanbag(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/glasses/sunglasses/reagent(src)
new /obj/item/weapon/storage/belt/bandolier(src)
/obj/structure/closet/chefcloset
name = "\proper chef's closet"
@@ -37,9 +41,8 @@
new /obj/item/device/radio/headset/headset_srv(src)
new /obj/item/clothing/tie/waistcoat(src)
new /obj/item/clothing/tie/waistcoat(src)
new /obj/item/clothing/suit/apron/chef(src)
new /obj/item/clothing/suit/apron/chef(src)
new /obj/item/clothing/suit/apron/chef(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/apron/chef(src)
new /obj/item/clothing/head/soft/mime(src)
new /obj/item/clothing/head/soft/mime(src)
new /obj/item/weapon/storage/box/mousetraps(src)
@@ -61,9 +64,8 @@
new /obj/item/clothing/gloves/color/black(src)
new /obj/item/clothing/head/soft/purple(src)
new /obj/item/device/flashlight(src)
new /obj/item/weapon/caution(src)
new /obj/item/weapon/caution(src)
new /obj/item/weapon/caution(src)
for(var/i in 1 to 3)
new /obj/item/weapon/caution(src)
new /obj/item/weapon/holosign_creator(src)
new /obj/item/device/lightreplacer(src)
new /obj/item/weapon/soap(src)
@@ -132,18 +134,14 @@
new /obj/item/weapon/storage/backpack/satchel_sec(src)
new /obj/item/weapon/storage/backpack/dufflebag/sec(src)
new /obj/item/weapon/storage/backpack/dufflebag/sec(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/shoes/jackboots(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/beret/sec(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/head/soft/sec(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/security(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/jackboots(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/beret/sec(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/soft/sec(src)
new /obj/item/clothing/mask/bandana/red(src)
new /obj/item/clothing/mask/bandana/red(src)
return
@@ -157,18 +155,14 @@
..()
contents = list()
new /obj/item/clothing/suit/hooded/wintercoat/cargo(src)
new /obj/item/clothing/under/rank/cargotech(src)
new /obj/item/clothing/under/rank/cargotech(src)
new /obj/item/clothing/under/rank/cargotech(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/clothing/head/soft(src)
new /obj/item/clothing/head/soft(src)
new /obj/item/clothing/head/soft(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/cargotech(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/black(src)
for(var/i in 1 to 3)
new /obj/item/clothing/gloves/fingerless(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/soft(src)
new /obj/item/device/radio/headset/headset_cargo(src)
/obj/structure/closet/wardrobe/atmospherics_yellow
@@ -181,15 +175,12 @@
new /obj/item/weapon/storage/backpack/dufflebag(src)
new /obj/item/weapon/storage/backpack/satchel_norm(src)
new /obj/item/weapon/storage/backpack(src)
new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src)
new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src)
new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/atmospheric_technician(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/black(src)
return
/obj/structure/closet/wardrobe/engineering_yellow
@@ -203,18 +194,14 @@
new /obj/item/weapon/storage/backpack/industrial(src)
new /obj/item/weapon/storage/backpack/satchel_eng(src)
new /obj/item/clothing/suit/hooded/wintercoat/engineering(src)
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/under/rank/engineer(src)
new /obj/item/clothing/suit/hazardvest(src)
new /obj/item/clothing/suit/hazardvest(src)
new /obj/item/clothing/suit/hazardvest(src)
new /obj/item/clothing/shoes/workboots(src)
new /obj/item/clothing/shoes/workboots(src)
new /obj/item/clothing/shoes/workboots(src)
new /obj/item/clothing/head/hardhat(src)
new /obj/item/clothing/head/hardhat(src)
new /obj/item/clothing/head/hardhat(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/engineer(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/hazardvest(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/workboots(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/hardhat(src)
return
/obj/structure/closet/wardrobe/white/medical
@@ -232,19 +219,16 @@
new /obj/item/clothing/under/rank/medical/blue(src)
new /obj/item/clothing/under/rank/medical/green(src)
new /obj/item/clothing/under/rank/medical/purple(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/suit/toggle/labcoat(src)
new /obj/item/clothing/suit/toggle/labcoat(src)
new /obj/item/clothing/suit/toggle/labcoat/emt(src)
new /obj/item/clothing/suit/toggle/labcoat/emt(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/head/soft/emt(src)
new /obj/item/clothing/head/soft/emt(src)
new /obj/item/clothing/head/soft/emt(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/white(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/soft/emt(src)
return
/obj/structure/closet/wardrobe/robotics_black
@@ -348,20 +332,16 @@
new /obj/item/weapon/storage/backpack/satchel_tox(src)
new /obj/item/weapon/storage/backpack/satchel_tox(src)
new /obj/item/clothing/suit/hooded/wintercoat/science(src)
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/under/rank/scientist(src)
new /obj/item/clothing/suit/toggle/labcoat/science(src)
new /obj/item/clothing/suit/toggle/labcoat/science(src)
new /obj/item/clothing/suit/toggle/labcoat/science(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/scientist(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/toggle/labcoat/science(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/device/radio/headset/headset_sci(src)
new /obj/item/device/radio/headset/headset_sci(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/mask/gas(src)
for(var/i in 1 to 3)
new /obj/item/clothing/mask/gas(src)
return
/obj/structure/closet/wardrobe/botanist
@@ -380,9 +360,7 @@
new /obj/item/clothing/suit/apron(src)
new /obj/item/clothing/suit/apron/overalls(src)
new /obj/item/clothing/suit/apron/overalls(src)
new /obj/item/clothing/under/rank/hydroponics(src)
new /obj/item/clothing/under/rank/hydroponics(src)
new /obj/item/clothing/under/rank/hydroponics(src)
new /obj/item/clothing/mask/bandana(src)
new /obj/item/clothing/mask/bandana(src)
new /obj/item/clothing/mask/bandana(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/hydroponics(src)
for(var/i in 1 to 3)
new /obj/item/clothing/mask/bandana(src)
@@ -7,13 +7,5 @@
/obj/structure/closet/secure_closet/bar/New()
..()
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
for(var/i in 1 to 10)
new /obj/item/weapon/reagent_containers/food/drinks/beer( src )
@@ -34,16 +34,13 @@
..()
new /obj/item/clothing/gloves/color/yellow(src)
new /obj/item/clothing/gloves/color/yellow(src)
new /obj/item/weapon/storage/toolbox/electrical(src)
new /obj/item/weapon/storage/toolbox/electrical(src)
new /obj/item/weapon/storage/toolbox/electrical(src)
new /obj/item/weapon/electronics/apc(src)
new /obj/item/weapon/electronics/apc(src)
new /obj/item/weapon/electronics/apc(src)
new /obj/item/device/multitool(src)
new /obj/item/device/multitool(src)
new /obj/item/device/multitool(src)
for(var/i in 1 to 3)
new /obj/item/weapon/storage/toolbox/electrical(src)
for(var/i in 1 to 3)
new /obj/item/weapon/electronics/apc(src)
for(var/i in 1 to 3)
new /obj/item/device/multitool(src)
/obj/structure/closet/secure_closet/engineering_welding
name = "welding supplies locker"
req_access = list(access_engine_equip)
@@ -52,13 +49,11 @@
/obj/structure/closet/secure_closet/engineering_welding/New()
..()
new /obj/item/clothing/head/welding(src)
new /obj/item/clothing/head/welding(src)
new /obj/item/clothing/head/welding(src)
new /obj/item/weapon/weldingtool/largetank(src)
new /obj/item/weapon/weldingtool/largetank(src)
new /obj/item/weapon/weldingtool/largetank(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/welding(src)
for(var/i in 1 to 3)
new /obj/item/weapon/weldingtool/largetank(src)
/obj/structure/closet/secure_closet/engineering_personal
name = "engineer's locker"
req_access = list(access_engine_equip)
@@ -90,4 +85,4 @@
new /obj/item/weapon/watertank/atmos(src)
new /obj/item/clothing/suit/fire/atmos(src)
new /obj/item/clothing/head/hardhat/atmos(src)
new /obj/item/clothing/glasses/meson/engine/tray(src)
new /obj/item/clothing/glasses/meson/engine/tray(src)
@@ -15,12 +15,10 @@
new /obj/item/weapon/reagent_containers/glass/bottle/toxin(src)
new /obj/item/weapon/reagent_containers/glass/bottle/morphine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/morphine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
for(var/i in 1 to 3)
new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
for(var/i in 1 to 3)
new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
new /obj/item/weapon/storage/box/rxglasses(src)
/obj/structure/closet/secure_closet/medical2
@@ -30,13 +28,11 @@
/obj/structure/closet/secure_closet/medical2/New()
..()
new /obj/item/weapon/tank/internals/anesthetic(src)
new /obj/item/weapon/tank/internals/anesthetic(src)
new /obj/item/weapon/tank/internals/anesthetic(src)
new /obj/item/clothing/mask/breath/medical(src)
new /obj/item/clothing/mask/breath/medical(src)
new /obj/item/clothing/mask/breath/medical(src)
for(var/i in 1 to 3)
new /obj/item/weapon/tank/internals/anesthetic(src)
for(var/i in 1 to 3)
new /obj/item/clothing/mask/breath/medical(src)
/obj/structure/closet/secure_closet/medical3
name = "medical doctor's locker"
req_access = list(access_surgery)
@@ -81,10 +77,9 @@
/obj/structure/closet/secure_closet/animal/New()
..()
new /obj/item/device/assembly/signaler(src)
new /obj/item/device/electropack(src)
new /obj/item/device/electropack(src)
new /obj/item/device/electropack(src)
for(var/i in 1 to 3)
new /obj/item/device/electropack(src)
/obj/structure/closet/secure_closet/chemical
name = "chemical closet"
desc = "Store dangerous chemicals in here."
@@ -62,6 +62,5 @@
new /obj/item/stack/sheet/glass(src, 50)
new /obj/item/clothing/shoes/magboots(src)
new /obj/item/weapon/storage/box/metalfoam(src)
new /obj/item/weapon/rcd_ammo/large(src)
new /obj/item/weapon/rcd_ammo/large(src)
new /obj/item/weapon/rcd_ammo/large(src)
for(var/i in 1 to 3)
new /obj/item/weapon/rcd_ammo/large(src)
@@ -186,12 +186,9 @@
/obj/structure/closet/secure_closet/injection/New()
..()
new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src)
new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src)
new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src)
new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src)
new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src)
for(var/i in 1 to 5)
new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src)
/obj/structure/closet/secure_closet/brig
name = "brig locker"
req_access = list(access_brig)
@@ -210,9 +207,8 @@
/obj/structure/closet/secure_closet/courtroom/New()
..()
new /obj/item/clothing/shoes/sneakers/brown(src)
new /obj/item/weapon/paper/Court (src)
new /obj/item/weapon/paper/Court (src)
new /obj/item/weapon/paper/Court (src)
for(var/i in 1 to 3)
new /obj/item/weapon/paper/Court (src)
new /obj/item/weapon/pen (src)
new /obj/item/clothing/suit/judgerobe (src)
new /obj/item/clothing/head/powdered_wig (src)
@@ -226,16 +222,13 @@
/obj/structure/closet/secure_closet/armory1/New()
..()
new /obj/item/clothing/suit/armor/laserproof(src)
new /obj/item/clothing/suit/armor/riot(src)
new /obj/item/clothing/suit/armor/riot(src)
new /obj/item/clothing/suit/armor/riot(src)
new /obj/item/clothing/head/helmet/riot(src)
new /obj/item/clothing/head/helmet/riot(src)
new /obj/item/clothing/head/helmet/riot(src)
new /obj/item/weapon/shield/riot(src)
new /obj/item/weapon/shield/riot(src)
new /obj/item/weapon/shield/riot(src)
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/riot(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/helmet/riot(src)
for(var/i in 1 to 3)
new /obj/item/weapon/shield/riot(src)
/obj/structure/closet/secure_closet/armory2
name = "armory ballistics locker"
req_access = list(access_armory)
@@ -244,13 +237,11 @@
/obj/structure/closet/secure_closet/armory2/New()
..()
new /obj/item/weapon/storage/box/firingpins(src)
new /obj/item/weapon/storage/box/rubbershot(src)
new /obj/item/weapon/storage/box/rubbershot(src)
new /obj/item/weapon/storage/box/rubbershot(src)
new /obj/item/weapon/gun/projectile/shotgun/riot(src)
new /obj/item/weapon/gun/projectile/shotgun/riot(src)
new /obj/item/weapon/gun/projectile/shotgun/riot(src)
for(var/i in 1 to 3)
new /obj/item/weapon/storage/box/rubbershot(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/projectile/shotgun/riot(src)
/obj/structure/closet/secure_closet/armory3
name = "armory energy gun locker"
req_access = list(access_armory)
@@ -260,13 +251,11 @@
..()
new /obj/item/weapon/storage/box/firingpins(src)
new /obj/item/weapon/gun/energy/ionrifle(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/gun/energy/laser(src)
new /obj/item/weapon/gun/energy/laser(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/gun(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser(src)
/obj/structure/closet/secure_closet/tac
name = "armory tac locker"
req_access = list(access_armory)
@@ -286,6 +275,5 @@
/obj/structure/closet/secure_closet/lethalshots/New()
..()
new /obj/item/weapon/storage/box/lethalshot(src)
new /obj/item/weapon/storage/box/lethalshot(src)
new /obj/item/weapon/storage/box/lethalshot(src)
for(var/i in 1 to 3)
new /obj/item/weapon/storage/box/lethalshot(src)
@@ -23,19 +23,13 @@
/obj/structure/closet/syndicate/nuclear/New()
..()
contents = list()
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/ammo_box/magazine/m10mm(src)
for(var/i in 1 to 5)
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/teargas(src)
new /obj/item/weapon/storage/backpack/dufflebag/syndie/med(src)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/weapon/pinpointer/nukeop(src)
for(var/i in 1 to 5)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/device/pda/syndicate(src)
return
@@ -174,11 +174,5 @@
/obj/structure/closet/ammunitionlocker/New()
..()
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
for(var/i in 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
@@ -5,12 +5,10 @@
/obj/structure/closet/wardrobe/New()
..()
new /obj/item/clothing/under/color/blue(src)
new /obj/item/clothing/under/color/blue(src)
new /obj/item/clothing/under/color/blue(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/blue(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/brown(src)
return
/obj/structure/closet/wardrobe/pink
@@ -20,12 +18,10 @@
/obj/structure/closet/wardrobe/pink/New()
..()
contents = list()
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/under/color/pink(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/pink(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/brown(src)
return
/obj/structure/closet/wardrobe/black
@@ -35,22 +31,18 @@
/obj/structure/closet/wardrobe/black/New()
..()
contents = list()
new /obj/item/clothing/under/color/black(src)
new /obj/item/clothing/under/color/black(src)
new /obj/item/clothing/under/color/black(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/black(src)
if(prob(25))
new /obj/item/clothing/suit/jacket/leather(src)
if(prob(20))
new /obj/item/clothing/suit/jacket/leather/overcoat(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/head/that(src)
new /obj/item/clothing/head/that(src)
new /obj/item/clothing/head/that(src)
new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/head/soft/black(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/black(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/that(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/soft/black(src)
new /obj/item/clothing/mask/bandana/black(src)
new /obj/item/clothing/mask/bandana/black(src)
if(prob(40))
@@ -65,12 +57,10 @@
/obj/structure/closet/wardrobe/green/New()
..()
contents = list()
new /obj/item/clothing/under/color/green(src)
new /obj/item/clothing/under/color/green(src)
new /obj/item/clothing/under/color/green(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/green(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/mask/bandana/green(src)
new /obj/item/clothing/mask/bandana/green(src)
return
@@ -84,12 +74,10 @@
/obj/structure/closet/wardrobe/orange/New()
..()
contents = list()
new /obj/item/clothing/under/rank/prisoner(src)
new /obj/item/clothing/under/rank/prisoner(src)
new /obj/item/clothing/under/rank/prisoner(src)
new /obj/item/clothing/shoes/sneakers/orange(src)
new /obj/item/clothing/shoes/sneakers/orange(src)
new /obj/item/clothing/shoes/sneakers/orange(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/rank/prisoner(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/orange(src)
return
@@ -100,12 +88,10 @@
/obj/structure/closet/wardrobe/yellow/New()
..()
contents = list()
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/under/color/yellow(src)
new /obj/item/clothing/shoes/sneakers/orange(src)
new /obj/item/clothing/shoes/sneakers/orange(src)
new /obj/item/clothing/shoes/sneakers/orange(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/yellow(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/orange(src)
new /obj/item/clothing/mask/bandana/gold(src)
new /obj/item/clothing/mask/bandana/gold(src)
return
@@ -118,15 +104,12 @@
/obj/structure/closet/wardrobe/white/New()
..()
contents = list()
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/under/color/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/head/soft/mime(src)
new /obj/item/clothing/head/soft/mime(src)
new /obj/item/clothing/head/soft/mime(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/white(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/white(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/soft/mime(src)
return
/obj/structure/closet/wardrobe/pjs
@@ -140,10 +123,8 @@
new /obj/item/clothing/under/pj/red(src)
new /obj/item/clothing/under/pj/blue(src)
new /obj/item/clothing/under/pj/blue(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
new /obj/item/clothing/shoes/sneakers/white(src)
for(var/i in 1 to 4)
new /obj/item/clothing/shoes/sneakers/white(src)
return
@@ -154,15 +135,12 @@
/obj/structure/closet/wardrobe/grey/New()
..()
contents = list()
new /obj/item/clothing/under/color/grey(src)
new /obj/item/clothing/under/color/grey(src)
new /obj/item/clothing/under/color/grey(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/clothing/head/soft/grey(src)
new /obj/item/clothing/head/soft/grey(src)
new /obj/item/clothing/head/soft/grey(src)
for(var/i in 1 to 3)
new /obj/item/clothing/under/color/grey(src)
for(var/i in 1 to 3)
new /obj/item/clothing/shoes/sneakers/black(src)
for(var/i in 1 to 3)
new /obj/item/clothing/head/soft/grey(src)
if(prob(50))
new /obj/item/weapon/storage/backpack/dufflebag(src)
if(prob(40))
@@ -50,10 +50,8 @@
/obj/structure/closet/crate/rcd/New()
..()
new /obj/item/weapon/rcd_ammo(src)
new /obj/item/weapon/rcd_ammo(src)
new /obj/item/weapon/rcd_ammo(src)
new /obj/item/weapon/rcd_ammo(src)
for(var/i in 1 to 4)
new /obj/item/weapon/rcd_ammo(src)
new /obj/item/weapon/rcd(src)
/obj/structure/closet/crate/freezer
@@ -66,15 +64,14 @@
/obj/structure/closet/crate/freezer/return_air()
var/datum/gas_mixture/gas = (..())
if(!gas) return null
if(!gas)
return null
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
newgas.oxygen = gas.oxygen
newgas.carbon_dioxide = gas.carbon_dioxide
newgas.nitrogen = gas.nitrogen
newgas.toxins = gas.toxins
newgas.volume = gas.volume
newgas.temperature = gas.temperature
if(newgas.temperature <= target_temp) return
newgas.copy_from(gas)
if(newgas.temperature <= target_temp)
return
if((newgas.temperature - cooling_power) > target_temp)
newgas.temperature -= cooling_power
@@ -91,15 +88,10 @@
/obj/structure/closet/crate/radiation/New()
..()
new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src)
new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src)
new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src)
new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src)
for(var/i in 1 to 4)
new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src)
/obj/structure/closet/crate/hydroponics
name = "hydroponics crate"
desc = "All you need to destroy those pesky weeds and pests."
+5 -3
View File
@@ -23,10 +23,12 @@
/obj/structure/janitorialcart/proc/wet_mop(obj/item/weapon/mop, mob/user)
if(reagents.total_volume < 1)
user << "<span class='warning'>[src] is out of water!</span>"
return 0
else
reagents.trans_to(mop, 5) //
reagents.trans_to(mop, 5)
user << "<span class='notice'>You wet [mop] in [src].</span>"
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
return 1
/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user)
if(!user.drop_item())
@@ -43,8 +45,8 @@
if(istype(I, /obj/item/weapon/mop))
var/obj/item/weapon/mop/m=I
if(m.reagents.total_volume < m.reagents.maximum_volume)
wet_mop(m, user)
return
if (wet_mop(m, user))
return
if(!mymop)
m.janicart_insert(user, src)
else
+5 -1
View File
@@ -61,6 +61,7 @@
/obj/structure/mirror/attackby(obj/item/I, mob/living/user, params)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(I.damtype == STAMINA)
return
@@ -90,6 +91,7 @@
/obj/structure/mirror/attack_alien(mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(islarva(user))
return
@@ -106,6 +108,7 @@
var/mob/living/simple_animal/M = user
if(M.melee_damage_upper <= 0)
return
user.changeNext_move(CLICK_CD_MELEE)
M.do_attack_animation(src)
if(shattered)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
@@ -115,6 +118,7 @@
/obj/structure/mirror/attack_slime(mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(shattered)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
@@ -246,4 +250,4 @@
if(new_eye_color)
H.eye_color = sanitize_hexcolor(new_eye_color)
H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
H.update_body()
H.update_body()
+4 -3
View File
@@ -180,7 +180,7 @@ var/global/list/crematoriums = new/list()
update_icon()
for(var/mob/living/M in contents)
if (M.stat!=2)
if (M.stat != DEAD)
M.emote("scream")
if(user)
user.attack_log +="\[[time_stamp()]\] Cremated <b>[M]/[M.ckey]</b>"
@@ -188,8 +188,9 @@ var/global/list/crematoriums = new/list()
else
log_attack("\[[time_stamp()]\] <b>UNKNOWN</b> cremated <b>[M]/[M.ckey]</b>")
M.death(1)
M.ghostize()
qdel(M)
if(M) //some animals get automatically deleted on death.
M.ghostize()
qdel(M)
for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up
if(O != connected) //Creamtorium does not burn hot enough to destroy the tray
@@ -128,13 +128,12 @@
return
for(var/obj/structure/transit_tube_pod/pod in loc)
if(!pod.moving && turn(pod.dir, (reverse_launch ? 180 : 0)) in directions())
spawn(0)
pod_moving = 1
close_animation()
sleep(CLOSE_DURATION + 2)
if(icon_state == "closed" && pod)
pod.follow_tube(reverse_launch)
pod_moving = 0
pod_moving = 1
close_animation()
sleep(CLOSE_DURATION + 2)
if(icon_state == "closed" && pod)
pod.follow_tube(reverse_launch)
pod_moving = 0
return 1
return 0
@@ -11,8 +11,9 @@
/obj/structure/transit_tube_pod/New(loc)
..(loc)
air_contents.oxygen = MOLES_O2STANDARD * 2
air_contents.nitrogen = MOLES_N2STANDARD
air_contents.assert_gases("o2", "n2")
air_contents.gases["o2"][MOLES] = MOLES_O2STANDARD * 2
air_contents.gases["n2"][MOLES] = MOLES_N2STANDARD
air_contents.temperature = T20C
// Give auto tubes time to align before trying to start moving
@@ -61,73 +62,70 @@
else return ..()
/obj/structure/transit_tube_pod/proc/follow_tube(reverse_launch)
set waitfor = 0
if(moving)
return
moving = 1
spawn()
var/obj/structure/transit_tube/current_tube = null
var/next_dir
var/next_loc
var/last_delay = 0
var/exit_delay
if(reverse_launch)
dir = turn(dir, 180) // Back it up
var/obj/structure/transit_tube/current_tube = null
var/next_dir
var/next_loc
var/last_delay = 0
var/exit_delay
for(var/obj/structure/transit_tube/tube in loc)
if(tube.has_exit(dir))
if(reverse_launch)
dir = turn(dir, 180) // Back it up
for(var/obj/structure/transit_tube/tube in loc)
if(tube.has_exit(dir))
current_tube = tube
break
while(current_tube)
next_dir = current_tube.get_exit(dir)
if(!next_dir)
break
exit_delay = current_tube.exit_delay(src, dir)
last_delay += exit_delay
sleep(exit_delay)
next_loc = get_step(loc, next_dir)
current_tube = null
for(var/obj/structure/transit_tube/tube in next_loc)
if(tube.has_entrance(next_dir))
current_tube = tube
break
while(current_tube)
next_dir = current_tube.get_exit(dir)
if(!next_dir)
break
exit_delay = current_tube.exit_delay(src, dir)
last_delay += exit_delay
sleep(exit_delay)
next_loc = get_step(loc, next_dir)
current_tube = null
for(var/obj/structure/transit_tube/tube in next_loc)
if(tube.has_entrance(next_dir))
current_tube = tube
break
if(current_tube == null)
dir = next_dir
Move(get_step(loc, dir), dir) // Allow collisions when leaving the tubes.
break
last_delay = current_tube.enter_delay(src, next_dir)
sleep(last_delay)
if(current_tube == null)
dir = next_dir
loc = next_loc // When moving from one tube to another, skip collision and such.
density = current_tube.density
Move(get_step(loc, dir), dir) // Allow collisions when leaving the tubes.
break
if(current_tube && current_tube.should_stop_pod(src, next_dir))
current_tube.pod_stopped(src, dir)
break
last_delay = current_tube.enter_delay(src, next_dir)
sleep(last_delay)
dir = next_dir
loc = next_loc // When moving from one tube to another, skip collision and such.
density = current_tube.density
density = 1
moving = 0
if(current_tube && current_tube.should_stop_pod(src, next_dir))
current_tube.pod_stopped(src, dir)
break
density = 1
moving = 0
// Should I return a copy here? If the caller edits or del()s the returned
// datum, there might be problems if I don't...
/obj/structure/transit_tube_pod/return_air()
var/datum/gas_mixture/GM = new()
GM.oxygen = air_contents.oxygen
GM.carbon_dioxide = air_contents.carbon_dioxide
GM.nitrogen = air_contents.nitrogen
GM.toxins = air_contents.toxins
GM.temperature = air_contents.temperature
GM.copy_from(air_contents)
return GM
// For now, copying what I found in an unused FEA file (and almost identical in a
+1
View File
@@ -196,6 +196,7 @@
health = maxhealth
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
update_nearby_icons()
user << "<span class='notice'>You repair [src].</span>"
else
user << "<span class='warning'>[src] is already in good condition!</span>"
return