Merge branch 'master' into sizecode

This commit is contained in:
Dahlular
2020-04-17 08:07:37 -06:00
218 changed files with 4187 additions and 70480 deletions
+1 -1
View File
@@ -471,4 +471,4 @@
// Abductor Replication Lab
/area/ruin/space/has_grav/powered/advancedlab
name = "Abductor Replication Lab"
icon_state = "yellow"
icon_state = "yellow"
+2 -2
View File
@@ -124,12 +124,12 @@
L[avoid_assoc_duplicate_keys(A.name, areaindex)] = R
for(var/obj/item/implant/tracking/I in GLOB.tracked_implants)
if(!I.imp_in || !isliving(I.loc))
if(!I.imp_in || !I.allow_teleport || !isliving(I.imp_in))
continue
else
var/mob/living/M = I.loc
if(M.stat == DEAD)
if(M.timeofdeath + 6000 < world.time)
if(M.timeofdeath + I.lifespan_postmortem < world.time)
continue
if(is_eligible(I))
L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I
+2 -1
View File
@@ -210,13 +210,13 @@
add_fingerprint(user)
/obj/machinery/suit_storage_unit/proc/cook()
var/mob/living/mob_occupant = occupant
if(uv_cycles)
uv_cycles--
uv = TRUE
locked = TRUE
update_icon()
if(occupant)
var/mob/living/mob_occupant = occupant
if(uv_super)
mob_occupant.adjustFireLoss(rand(20, 36))
else
@@ -245,6 +245,7 @@
visible_message("<span class='notice'>[src]'s door slides open. The glowing yellow lights dim to a gentle green.</span>")
else
visible_message("<span class='warning'>[src]'s door slides open, barraging you with the nauseating smell of charred flesh.</span>")
mob_occupant.radiation = 0
playsound(src, 'sound/machines/airlockclose.ogg', 25, 1)
for(var/obj/item/I in src) //Scorches away blood and forensic evidence, although the SSU itself is unaffected
SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRONG)
+40 -8
View File
@@ -1,3 +1,7 @@
GLOBAL_VAR_INIT(singularity_counter, 0)
#define METEOR_DISASTER_MODIFIER 0.5
////////////////////////////////////////
//Singularity beacon
////////////////////////////////////////
@@ -14,38 +18,58 @@
verb_say = "states"
var/cooldown = 0
var/active = 0
var/active = FALSE
var/meteor_buff = FALSE
var/icontype = "beacon"
/obj/machinery/power/singularity_beacon/proc/Activate(mob/user = null)
if(active)
return FALSE
if(surplus() < 1500)
if(user)
to_chat(user, "<span class='notice'>The connected wire doesn't have enough current.</span>")
return
return FALSE
if(is_station_level(z))
increment_meteor_waves()
for(var/obj/singularity/singulo in GLOB.singularities)
if(singulo.z == z)
singulo.target = src
icon_state = "[icontype]1"
active = 1
active = TRUE
if(user)
to_chat(user, "<span class='notice'>You activate the beacon.</span>")
return TRUE
/obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user = null)
/obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user)
if(!active)
return FALSE
for(var/obj/singularity/singulo in GLOB.singularities)
if(singulo.target == src)
singulo.target = null
icon_state = "[icontype]0"
active = 0
active = FALSE
if(user)
to_chat(user, "<span class='notice'>You deactivate the beacon.</span>")
if(meteor_buff)
decrement_meteor_waves()
return TRUE
/obj/machinery/power/singularity_beacon/proc/increment_meteor_waves()
meteor_buff = TRUE
GLOB.singularity_counter++
for(var/datum/round_event_control/meteor_wave/W in SSevents.control)
W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER)
/obj/machinery/power/singularity_beacon/proc/decrement_meteor_waves()
meteor_buff = FALSE
GLOB.singularity_counter--
for(var/datum/round_event_control/meteor_wave/W in SSevents.control)
W.weight -= round(initial(W.weight) * METEOR_DISASTER_MODIFIER)
/obj/machinery/power/singularity_beacon/attack_ai(mob/user)
return
/obj/machinery/power/singularity_beacon/attack_hand(mob/user)
. = ..()
if(.)
@@ -86,6 +110,12 @@
if(!active)
return
var/is_on_station = is_station_level(z)
if(meteor_buff && !is_on_station)
decrement_meteor_waves()
else if(!meteor_buff && is_on_station)
increment_meteor_waves()
if(surplus() >= 1500)
add_load(1500)
if(cooldown <= world.time)
@@ -133,3 +163,5 @@
/obj/item/sbeacondrop/clownbomb
desc = "A label on it reads: <i>Warning: Activating this device will send a silly explosive to your location</i>."
droptype = /obj/machinery/syndicatebomb/badmin/clown
#undef METEOR_DISASTER_MODIFIER
+21
View File
@@ -160,6 +160,7 @@ RLD
var/mode = 1
var/ranged = FALSE
var/computer_dir = 1
var/airlock_dir = 1
var/airlock_type = /obj/machinery/door/airlock
var/airlock_glass = FALSE // So the floor's rcd_act knows how much ammo to use
var/window_type = /obj/structure/window/fulltile
@@ -281,6 +282,22 @@ RLD
return FALSE
return TRUE
/obj/item/construction/rcd/proc/change_airlock_direction(mob/user)
if(!user)
return
var/list/airlock_dirs = list(
"North/South" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlocknorthsouth"),
"East/West" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlockeastwest")
)
var/airlockdirs = show_radial_menu(user, src, airlock_dirs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(airlockdirs)
if("North/South")
airlock_dir = 1
if("East/West")
airlock_dir = 4
/obj/item/construction/rcd/proc/change_computer_dir(mob/user)
if(!user)
return
@@ -486,6 +503,7 @@ RLD
if(mode == RCD_AIRLOCK)
choices += list(
"Change Access" = image(icon = 'icons/mob/radial.dmi', icon_state = "access"),
"Change Direction" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlockrotation"),
"Change Airlock Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "airlocktype")
)
else if(mode == RCD_WINDOWGRILLE)
@@ -513,6 +531,9 @@ RLD
if("Change Access")
change_airlock_access(user)
return
if("Change Direction")
change_airlock_direction(user)
return
if("Change Airlock Type")
change_airlock_setting(user)
return
+15 -1
View File
@@ -453,7 +453,7 @@ GENE SCANNER
if(M.reagents.reagent_list.len)
var/list/datum/reagent/reagents = list()
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R.invisible)
if(R.chemical_flags & REAGENT_INVISIBLE)
continue
reagents += R
@@ -475,6 +475,20 @@ GENE SCANNER
msg += "*---------*</span>"
to_chat(user, msg)
if(M.reagents.has_reagent("fermiTox"))
var/datum/reagent/fermiTox = M.reagents.has_reagent("fermiTox")
switch(fermiTox.volume)
if(5 to 10)
msg += "<span class='notice'>Subject contains a low amount of toxic isomers.</span>\n"
if(10 to 25)
msg += "<span class='danger'>Subject contains toxic isomers.</span>\n"
if(25 to 50)
msg += "<span class='danger'>Subject contains a substantial amount of toxic isomers.</span>\n"
if(50 to 95)
msg += "<span class='danger'>Subject contains a high amount of toxic isomers.</span>\n"
if(95 to INFINITY)
msg += "<span class='danger'>Subject contains a extremely dangerous amount of toxic isomers.</span>\n"
/obj/item/healthanalyzer/verb/toggle_mode()
set name = "Switch Verbosity"
set category = "Object"
+2
View File
@@ -1,5 +1,6 @@
/obj/item/restraints
breakouttime = 600
var/demoralize_criminals = TRUE // checked on carbon/carbon.dm to decide wheter to apply the handcuffed negative moodlet or not.
/obj/item/restraints/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -220,6 +221,7 @@
name = "fake handcuffs"
desc = "Fake handcuffs meant for gag purposes."
breakouttime = 10 //Deciseconds = 1s
demoralize_criminals = FALSE
/obj/item/restraints/handcuffs/fake/kinky
name = "kinky handcuffs"
+2 -2
View File
@@ -249,7 +249,7 @@
return
var/obj/item/nullrod/holy_weapon
var/list/holy_weapons_list = typesof(/obj/item/nullrod) + list(
/obj/item/melee/transforming/energy/sword/cx/chaplain
/obj/item/twohanded/dualsaber/hypereutactic/chaplain
)
var/list/display_names = list()
for(var/V in holy_weapons_list)
@@ -710,7 +710,7 @@
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("bashes", "smacks", "whacks")
/obj/item/nullrod/hypertool
icon = 'icons/obj/device.dmi'
icon_state = "hypertool"
@@ -1,7 +1,19 @@
/obj/item/implant/tracking
name = "tracking implant"
desc = "Track with this."
activated = 0
activated = FALSE
var/lifespan_postmortem = 10 MINUTES //for how many deciseconds after user death will the implant work?
var/allow_teleport = TRUE //will people implanted with this act as teleporter beacons?
/obj/item/implant/tracking/c38
name = "TRAC implant"
desc = "A smaller tracking implant that supplies power for only a few minutes."
var/lifespan = 5 MINUTES //how many deciseconds does the implant last?
allow_teleport = FALSE
/obj/item/implant/tracking/c38/Initialize()
. = ..()
QDEL_IN(src, lifespan)
/obj/item/implant/tracking/New()
..()
@@ -21,7 +33,7 @@
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Tracking Beacon<BR>
<b>Life:</b> 10 minutes after death of host<BR>
<b>Important Notes:</b> None<BR>
<b>Important Notes:</b> Implant also works as a teleporter beacon.<BR>
<HR>
<b>Implant Details:</b> <BR>
<b>Function:</b> Continuously transmits low power signal. Useful for tracking.<BR>
+13 -9
View File
@@ -75,15 +75,14 @@
temp += "<B>Implant Signals:</B><BR>"
for (var/obj/item/implant/tracking/W in GLOB.tracked_implants)
if (!W.imp_in || !isliving(W.loc))
if (!isliving(W.imp_in))
continue
else
var/mob/living/M = W.loc
if (M.stat == DEAD)
if (M.timeofdeath + 6000 < world.time)
continue
var/mob/living/M = W.imp_in
if (M.stat == DEAD)
if (M.timeofdeath + W.lifespan_postmortem < world.time)
continue
var/turf/tr = get_turf(W)
var/turf/tr = get_turf(M)
if (tr.z == sr.z && tr)
var/direct = max(abs(tr.x - sr.x), abs(tr.y - sr.y))
if (direct < 20)
@@ -188,8 +187,13 @@
user.show_message("<span class='notice'>\The [src] is recharging!</span>")
return
var/atom/T = L[t1]
var/implantcheckmate = FALSE
if(isliving(T))
var/mob/living/M = T
if(!locate(/obj/item/implant/tracking) in M.implants) //The user was too slow and let the target mob's tracking implant expire or get removed.
implantcheckmate = TRUE
var/area/A = get_area(T)
if(A.noteleport)
if(A.noteleport || implantcheckmate)
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
return
current_location = get_turf(user) //Recheck.
@@ -233,4 +237,4 @@
itemUser.visible_message("<span class='suicide'>The portal snaps closed taking [user]'s head with it!</span>")
else
itemUser.visible_message("<span class='suicide'>[user] looks even further depressed as they realize they do not have a head...and suddenly dies of shame!</span>")
return (BRUTELOSS)
return (BRUTELOSS)
+1 -1
View File
@@ -232,7 +232,7 @@
. = ..()
if(!sliver)
return
if(ismovableatom(O) && O != sliver)
if(proximity && ismovableatom(O) && O != sliver)
Consume(O, user)
/obj/item/hemostat/supermatter/throw_impact(atom/hit_atom) // no instakill supermatter javelins
+10
View File
@@ -304,6 +304,16 @@
icon = "meow_mix"
desc = "No, we don't serve catnip, officer!"
/datum/barsign/goose
name = "The Loose Goose"
icon = "goose"
desc = "Drink till you puke and/or break the laws of reality!"
/datum/barsign/the_hive
name = "The Hive"
icon = "thehive"
desc = "Comb in for some sweet drinks! Not known for serving any sappy drink."
/datum/barsign/hiddensigns
hidden = TRUE
@@ -22,7 +22,9 @@
if(opened || move_delay || user.stat || user.IsStun() || user.IsKnockdown() || user.IsUnconscious() || !isturf(loc) || !has_gravity(loc))
return
move_delay = TRUE
if(step(src, direction))
var/oldloc = loc
step(src, direction)
if(oldloc != loc)
addtimer(CALLBACK(src, .proc/ResetMoveDelay), (use_mob_movespeed ? user.movement_delay() : CONFIG_GET(number/movedelay/walk_delay)) * move_speed_multiplier)
else
ResetMoveDelay()
@@ -561,7 +561,7 @@
icon = 'icons/obj/machines/sleeper.dmi'
icon_state = "sleeper"
mob_name = "a space pirate"
mob_species = /datum/species/skeleton/pirate
mob_species = /datum/species/skeleton/space
outfit = /datum/outfit/pirate/space
roundstart = FALSE
death = FALSE
+89 -32
View File
@@ -28,6 +28,8 @@
rad_insulation = RAD_VERY_LIGHT_INSULATION
rad_flags = RAD_PROTECT_CONTENTS
/obj/structure/window/examine(mob/user)
..()
if(reinf)
@@ -471,11 +473,12 @@
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/turf/closed/indestructible/riveted/,
/turf/closed/indestructible/riveted/uranium,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
@@ -503,7 +506,10 @@
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door)
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity,)
// canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile)
glass_amount = 2
@@ -529,11 +535,9 @@
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
@@ -561,7 +565,13 @@
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door)
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity,
/turf/closed/indestructible/,
/turf/closed/indestructible/riveted,
/turf/closed/indestructible/fakeglass)
glass_amount = 2
/obj/structure/window/plasma/fulltile/unanchored
@@ -577,31 +587,12 @@
smooth = SMOOTH_TRUE
glass_amount = 2
/obj/structure/window/plasma/reinforced/fulltile/unanchored
anchored = FALSE
/obj/structure/window/reinforced/fulltile
icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
icon_state = "r_window"
dir = FULLTILE_WINDOW_DIR
max_integrity = 100
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smooth = SMOOTH_TRUE
canSmoothWith = list(
/turf/closed/wall,
/turf/closed/wall/r_wall,
/obj/structure/falsewall,
/obj/structure/falsewall/brass,
/obj/structure/falsewall/reinforced,
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
@@ -629,7 +620,70 @@
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door)
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity
)
/obj/structure/window/plasma/reinforced/fulltile/unanchored
anchored = FALSE
/obj/structure/window/reinforced/fulltile
icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
icon_state = "r_window"
dir = FULLTILE_WINDOW_DIR
max_integrity = 100
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smooth = SMOOTH_TRUE
canSmoothWith = list(
/turf/closed/wall,
/turf/closed/wall/r_wall,
/obj/structure/falsewall,
/obj/structure/falsewall/brass,
/obj/structure/falsewall/reinforced,
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/turf/closed/indestructible/riveted/,
/turf/closed/indestructible/riveted/uranium,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
/obj/machinery/door/airlock/medical,
/obj/machinery/door/airlock/medical/glass,
/obj/machinery/door/airlock/public,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/airlock/research,
/obj/machinery/door/airlock/research/glass,
/obj/machinery/door/airlock/maintenance,
/obj/machinery/door/airlock/maintenance/glass,
/obj/machinery/door/airlock/command/,
/obj/machinery/door/airlock/command/glass,
/obj/machinery/door/airlock/engineering,
/obj/machinery/door/airlock/engineering/glass,
/obj/machinery/door/airlock/engineering/abandoned,
/obj/machinery/door/airlock/security,
/obj/machinery/door/airlock/security/glass,
/obj/machinery/door/airlock/maintenance/abandoned,
/obj/machinery/door/poddoor/shutters/preopen,
/obj/machinery/door/poddoor/shutters,
/obj/machinery/door/window/eastright,
/obj/machinery/door/window/eastleft,
/obj/machinery/door/window/northleft,
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity,)
level = 3
glass_amount = 2
@@ -654,11 +708,12 @@
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/turf/closed/indestructible/riveted/,
/turf/closed/indestructible/riveted/uranium,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
@@ -686,8 +741,10 @@
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door)
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity,)
//Old code left of reference
//canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile)
level = 3
+2
View File
@@ -182,6 +182,8 @@
soundin = pick('sound/voice/beepsky/god.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/beepsky/secureday.ogg', 'sound/voice/beepsky/radio.ogg', 'sound/voice/beepsky/insult.ogg', 'sound/voice/beepsky/creep.ogg')
if("honkbot_e")
soundin = pick('sound/items/bikehorn.ogg', 'sound/items/AirHorn2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/items/AirHorn.ogg', 'sound/effects/reee.ogg', 'sound/items/WEEOO1.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/beepsky/creep.ogg','sound/magic/Fireball.ogg' ,'sound/effects/pray.ogg', 'sound/voice/hiss1.ogg','sound/machines/buzz-sigh.ogg', 'sound/machines/ping.ogg', 'sound/weapons/flashbang.ogg', 'sound/weapons/bladeslice.ogg')
if("goose")
soundin = pick('sound/creatures/goose1.ogg', 'sound/creatures/goose2.ogg', 'sound/creatures/goose3.ogg', 'sound/creatures/goose4.ogg')
//START OF CIT CHANGES - adds random vore sounds
if ("struggle_sound")
soundin = pick( 'sound/vore/pred/struggle_01.ogg','sound/vore/pred/struggle_02.ogg','sound/vore/pred/struggle_03.ogg',
+148
View File
@@ -86,9 +86,108 @@
smooth = SMOOTH_TRUE
explosion_block = INFINITY
canSmoothWith = list(
/turf/closed/wall,
/turf/closed/wall/r_wall,
/obj/structure/falsewall,
/obj/structure/falsewall/brass,
/obj/structure/falsewall/reinforced,
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/turf/closed/indestructible/riveted/,
/turf/closed/indestructible/riveted/uranium,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
/obj/machinery/door/airlock/medical,
/obj/machinery/door/airlock/medical/glass,
/obj/machinery/door/airlock/public,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/airlock/research,
/obj/machinery/door/airlock/research/glass,
/obj/machinery/door/airlock/maintenance,
/obj/machinery/door/airlock/maintenance/glass,
/obj/machinery/door/airlock/command/,
/obj/machinery/door/airlock/command/glass,
/obj/machinery/door/airlock/engineering,
/obj/machinery/door/airlock/engineering/glass,
/obj/machinery/door/airlock/engineering/abandoned,
/obj/machinery/door/airlock/security,
/obj/machinery/door/airlock/security/glass,
/obj/machinery/door/airlock/maintenance/abandoned,
/obj/machinery/door/poddoor/shutters/preopen,
/obj/machinery/door/poddoor/shutters,
/obj/machinery/door/window/eastright,
/obj/machinery/door/window/eastleft,
/obj/machinery/door/window/northleft,
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity,
/obj/machinery/door/airlock/centcom)
/turf/closed/indestructible/riveted/uranium
icon = 'icons/turf/walls/uranium_wall.dmi'
icon_state = "uranium"
canSmoothWith = list(
/turf/closed/wall,
/turf/closed/wall/r_wall,
/obj/structure/falsewall,
/obj/structure/falsewall/brass,
/obj/structure/falsewall/reinforced,
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/turf/closed/indestructible/riveted/,
/turf/closed/indestructible/riveted/uranium,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
/obj/machinery/door/airlock/medical,
/obj/machinery/door/airlock/medical/glass,
/obj/machinery/door/airlock/public,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/airlock/research,
/obj/machinery/door/airlock/research/glass,
/obj/machinery/door/airlock/maintenance,
/obj/machinery/door/airlock/maintenance/glass,
/obj/machinery/door/airlock/command/,
/obj/machinery/door/airlock/command/glass,
/obj/machinery/door/airlock/engineering,
/obj/machinery/door/airlock/engineering/glass,
/obj/machinery/door/airlock/engineering/abandoned,
/obj/machinery/door/airlock/security,
/obj/machinery/door/airlock/security/glass,
/obj/machinery/door/airlock/maintenance/abandoned,
/obj/machinery/door/poddoor/shutters/preopen,
/obj/machinery/door/poddoor/shutters,
/obj/machinery/door/window/eastright,
/obj/machinery/door/window/eastleft,
/obj/machinery/door/window/northleft,
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity,
/obj/machinery/door/airlock/centcom)
/turf/closed/indestructible/abductor
icon_state = "alien1"
@@ -102,6 +201,55 @@
opacity = 0
smooth = SMOOTH_TRUE
icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
canSmoothWith = list(
/turf/closed/wall,
/turf/closed/wall/r_wall,
/obj/structure/falsewall,
/obj/structure/falsewall/brass,
/obj/structure/falsewall/reinforced,
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/turf/closed/indestructible/riveted/,
/turf/closed/indestructible/riveted/uranium,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
/obj/machinery/door/airlock/medical,
/obj/machinery/door/airlock/medical/glass,
/obj/machinery/door/airlock/public,
/obj/machinery/door/airlock/public/glass,
/obj/machinery/door/airlock/research,
/obj/machinery/door/airlock/research/glass,
/obj/machinery/door/airlock/maintenance,
/obj/machinery/door/airlock/maintenance/glass,
/obj/machinery/door/airlock/command/,
/obj/machinery/door/airlock/command/glass,
/obj/machinery/door/airlock/engineering,
/obj/machinery/door/airlock/engineering/glass,
/obj/machinery/door/airlock/engineering/abandoned,
/obj/machinery/door/airlock/security,
/obj/machinery/door/airlock/security/glass,
/obj/machinery/door/airlock/maintenance/abandoned,
/obj/machinery/door/poddoor/shutters/preopen,
/obj/machinery/door/poddoor/shutters,
/obj/machinery/door/window/eastright,
/obj/machinery/door/window/eastleft,
/obj/machinery/door/window/northleft,
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity,
/obj/machinery/door/airlock/centcom)
/turf/closed/indestructible/fakeglass/Initialize()
. = ..()
+1 -1
View File
@@ -253,7 +253,7 @@
return FALSE
to_chat(user, "<span class='notice'>You build an airlock.</span>")
var/obj/machinery/door/airlock/A = new the_rcd.airlock_type(src)
A.setDir(the_rcd.airlock_dir)
A.electronics = new/obj/item/electronics/airlock(A)
if(the_rcd.conf_access)
@@ -192,7 +192,7 @@
explosion_block = 3
flags_1 = CAN_BE_DIRTY_1 | CHECK_RICOCHET_1
sheet_type = /obj/item/stack/sheet/mineral/titanium
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
smooth = SMOOTH_MORE
canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater, /obj/structure/falsewall/titanium)
/turf/closed/wall/mineral/titanium/nodiagonal
+7 -1
View File
@@ -27,11 +27,14 @@
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust,
/turf/closed/wall/clockwork,
/turf/closed/indestructible/riveted/,
/turf/closed/indestructible/riveted/uranium,
/obj/structure/window/fulltile,
/obj/structure/window/reinforced/fulltile,
/obj/structure/window/reinforced/tinted/fulltile,
/obj/structure/window/plasma/fulltile,
/obj/structure/window/plasma/reinforced/fulltile,
/obj/machinery/door,
/obj/machinery/door/airlock/,
/obj/machinery/door/airlock/mining,
/obj/machinery/door/airlock/mining/glass,
@@ -59,7 +62,10 @@
/obj/machinery/door/window/northright,
/obj/machinery/door/airlock/external,
/obj/machinery/door/airlock,
/obj/machinery/door)
/obj/machinery/door/airlock/hatch,
/obj/machinery/door/airlock/engineering/glass/critical,
/obj/machinery/door/airlock/atmos,
/obj/machinery/door/airlock/highsecurity)
smooth = SMOOTH_TRUE
+8 -3
View File
@@ -452,16 +452,21 @@
/turf/AllowDrop()
return TRUE
/turf/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = NONE)
/turf/proc/add_vomit_floor(mob/living/M, toxvomit = NONE)
var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses())
// If the vomit combined, apply toxicity and reagents to the old vomit
//if the vomit combined, apply toxicity and reagents to the old vomit
if (QDELETED(V))
V = locate() in src
// Make toxins and blazaam vomit look different
if(toxvomit == VOMIT_PURPLE)
V.icon_state = "vomitpurp_[pick(1,4)]"
else if(toxvomit == VOMIT_TOXIC)
else if (toxvomit == VOMIT_TOXIC)
V.icon_state = "vomittox_[pick(1,4)]"
if (iscarbon(M))
var/mob/living/carbon/C = M
if(C.reagents)
clear_reagents_to_vomit_pool(C,V)
/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V)
M.reagents.trans_to(V, M.reagents.total_volume / 10)