Merge branch 'master' of https://github.com/PolarisSS13/Polaris into radio_freqs
@@ -7,4 +7,7 @@
|
||||
#define TURF_HAS_EDGES 64
|
||||
#define TURF_HAS_CORNERS 128
|
||||
#define TURF_IS_FRAGILE 256
|
||||
#define TURF_ACID_IMMUNE 512
|
||||
#define TURF_ACID_IMMUNE 512
|
||||
|
||||
#define isCardinal(x) (x == NORTH || x == SOUTH || x == EAST || x == WEST)
|
||||
#define isDiagonal(x) (x == NORTHEAST || x == SOUTHEAST || x == NORTHWEST || x == SOUTHWEST)
|
||||
@@ -753,9 +753,6 @@ proc/GaussRandRound(var/sigma,var/roundto)
|
||||
C.x_pos = (T.x - trg_min_x)
|
||||
C.y_pos = (T.y - trg_min_y)
|
||||
|
||||
var/list/fromupdate = new/list()
|
||||
var/list/toupdate = new/list()
|
||||
|
||||
moving:
|
||||
for (var/turf/T in refined_src)
|
||||
var/datum/coords/C_src = refined_src[T]
|
||||
@@ -763,19 +760,40 @@ proc/GaussRandRound(var/sigma,var/roundto)
|
||||
var/datum/coords/C_trg = refined_trg[B]
|
||||
if(C_src.x_pos == C_trg.x_pos && C_src.y_pos == C_trg.y_pos)
|
||||
|
||||
var/old_dir1 = T.dir
|
||||
var/old_icon_state1 = T.icon_state
|
||||
var/old_icon1 = T.icon
|
||||
var/old_overlays = T.overlays.Copy()
|
||||
var/old_underlays = T.underlays.Copy()
|
||||
//You can stay, though.
|
||||
if(istype(T,/turf/space))
|
||||
refined_src -= T
|
||||
refined_trg -= B
|
||||
continue moving
|
||||
|
||||
var/turf/X = B.ChangeTurf(T.type)
|
||||
X.set_dir(old_dir1)
|
||||
X.icon_state = old_icon_state1
|
||||
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
|
||||
X.overlays = old_overlays
|
||||
X.underlays = old_underlays
|
||||
var/turf/X //New Destination Turf
|
||||
|
||||
//Are we doing shuttlework? Just to save another type check later.
|
||||
var/shuttlework = 0
|
||||
|
||||
//Shuttle turfs handle their own fancy moving.
|
||||
if(istype(T,/turf/simulated/shuttle))
|
||||
shuttlework = 1
|
||||
var/turf/simulated/shuttle/SS = T
|
||||
if(!SS.landed_holder) SS.landed_holder = new(turf = SS)
|
||||
X = SS.landed_holder.land_on(B)
|
||||
|
||||
//Generic non-shuttle turf move.
|
||||
else
|
||||
var/old_dir1 = T.dir
|
||||
var/old_icon_state1 = T.icon_state
|
||||
var/old_icon1 = T.icon
|
||||
var/old_overlays = T.overlays.Copy()
|
||||
var/old_underlays = T.underlays.Copy()
|
||||
|
||||
X = B.ChangeTurf(T.type)
|
||||
X.set_dir(old_dir1)
|
||||
X.icon_state = old_icon_state1
|
||||
X.icon = old_icon1
|
||||
X.overlays = old_overlays
|
||||
X.underlays = old_underlays
|
||||
|
||||
//Move the air from source to dest
|
||||
var/turf/simulated/ST = T
|
||||
if(istype(ST) && ST.zone)
|
||||
var/turf/simulated/SX = X
|
||||
@@ -784,55 +802,22 @@ proc/GaussRandRound(var/sigma,var/roundto)
|
||||
SX.air.copy_from(ST.zone.air)
|
||||
ST.zone.remove(ST)
|
||||
|
||||
/* Quick visual fix for some weird shuttle corner artefacts when on transit space tiles */
|
||||
if(direction && findtext(X.icon_state, "swall_s"))
|
||||
|
||||
// Spawn a new shuttle corner object
|
||||
var/obj/corner = new()
|
||||
corner.loc = X
|
||||
corner.density = 1
|
||||
corner.anchored = 1
|
||||
corner.icon = X.icon
|
||||
corner.icon_state = replacetext(X.icon_state, "_s", "_f")
|
||||
corner.tag = "delete me"
|
||||
corner.name = "wall"
|
||||
|
||||
// Find a new turf to take on the property of
|
||||
var/turf/nextturf = get_step(corner, direction)
|
||||
if(!nextturf || !istype(nextturf, /turf/space))
|
||||
nextturf = get_step(corner, turn(direction, 180))
|
||||
|
||||
|
||||
// Take on the icon of a neighboring scrolling space icon
|
||||
X.icon = nextturf.icon
|
||||
X.icon_state = nextturf.icon_state
|
||||
|
||||
|
||||
//Move the objects. Not forceMove because the object isn't "moving" really, it's supposed to be on the "same" turf.
|
||||
for(var/obj/O in T)
|
||||
|
||||
// Reset the shuttle corners
|
||||
if(O.tag == "delete me")
|
||||
X.icon = 'icons/turf/shuttle.dmi'
|
||||
X.icon_state = replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state
|
||||
X.name = "wall"
|
||||
qdel(O) // prevents multiple shuttle corners from stacking
|
||||
continue
|
||||
if(!istype(O,/obj)) continue
|
||||
O.loc = X
|
||||
|
||||
//Move the mobs unless it's an AI eye or other eye type.
|
||||
for(var/mob/M in T)
|
||||
if(!istype(M,/mob) || istype(M, /mob/observer/eye)) continue // If we need to check for more mobs, I'll add a variable
|
||||
if(istype(M, /mob/observer/eye)) continue // If we need to check for more mobs, I'll add a variable
|
||||
M.loc = X
|
||||
|
||||
// var/area/AR = X.loc
|
||||
if(shuttlework)
|
||||
var/turf/simulated/shuttle/SS = T
|
||||
SS.landed_holder.leave_turf()
|
||||
|
||||
// if(AR.lighting_use_dynamic) //TODO: rewrite this code so it's not messed by lighting ~Carn
|
||||
// X.opacity = !X.opacity
|
||||
// X.SetOpacity(!X.opacity)
|
||||
else if(turftoleave)
|
||||
T.ChangeTurf(turftoleave)
|
||||
|
||||
toupdate += X
|
||||
|
||||
if(turftoleave)
|
||||
fromupdate += T.ChangeTurf(turftoleave)
|
||||
else
|
||||
T.ChangeTurf(get_base_turf_by_area(T))
|
||||
|
||||
@@ -840,7 +825,6 @@ proc/GaussRandRound(var/sigma,var/roundto)
|
||||
refined_trg -= B
|
||||
continue moving
|
||||
|
||||
|
||||
proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
||||
if(!original)
|
||||
return null
|
||||
|
||||
@@ -156,7 +156,7 @@ datum/supply_packs/costumes/witch
|
||||
/obj/item/clothing/under/wedding/bride_blue,
|
||||
/obj/item/clothing/under/wedding/bride_red,
|
||||
/obj/item/clothing/under/wedding/bride_white,
|
||||
/obj/item/clothing/under/sundress,
|
||||
/obj/item/clothing/under/dress/sundress,
|
||||
/obj/item/clothing/under/dress/dress_green,
|
||||
/obj/item/clothing/under/dress/dress_pink,
|
||||
/obj/item/clothing/under/dress/dress_orange,
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
candidates -= player
|
||||
log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role! They have been removed from the draft.")
|
||||
else if(config.use_age_restriction_for_antags && player.current.client.player_age < minimum_player_age)
|
||||
candidates -= player
|
||||
log_debug("[key_name(player)] is not eligible to become a [role_text]: Is only [player.current.client.player_age] day\s old, has to be [minimum_player_age] day\s!")
|
||||
else if(istype(player.current, /mob/living/voice))
|
||||
candidates -= player
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
if(src.locked) return
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/door/unpowered/emag_act()
|
||||
return -1
|
||||
|
||||
/obj/machinery/door/unpowered/shuttle
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
icon = 'icons/turf/shuttle_white.dmi'
|
||||
name = "door"
|
||||
icon_state = "door1"
|
||||
opacity = 1
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/cutewitch/New()
|
||||
new /obj/item/clothing/under/sundress(src.loc)
|
||||
new /obj/item/clothing/under/dress/sundress(src.loc)
|
||||
new /obj/item/clothing/head/witchwig(src.loc)
|
||||
new /obj/item/weapon/staff/broom(src.loc)
|
||||
delete_me = 1
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
a hostile enviroment."
|
||||
icon = 'icons/obj/cryobag.dmi'
|
||||
icon_state = "bodybag_folded"
|
||||
item_state = "bodybag_cryo_folded"
|
||||
origin_tech = list(TECH_BIO = 4)
|
||||
|
||||
/obj/item/bodybag/cryobag/attack_self(mob/user)
|
||||
|
||||
@@ -243,7 +243,6 @@ REAGENT SCANNER
|
||||
name = "mass spectrometer"
|
||||
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
|
||||
icon_state = "spectrometer"
|
||||
item_state = "analyzer"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
flags = CONDUCT | OPENCONTAINER
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
desc = "Extracts information on wounds."
|
||||
icon = 'icons/obj/autopsy_scanner.dmi'
|
||||
icon_state = ""
|
||||
item_state = "autopsy_scanner"
|
||||
flags = CONDUCT
|
||||
w_class = ITEMSIZE_SMALL
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
|
||||
|
||||
@@ -101,17 +101,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
flags |= NOREACT // so it doesn't react until you light it
|
||||
create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15
|
||||
|
||||
/obj/item/clothing/mask/smokable/process()
|
||||
var/turf/location = get_turf(src)
|
||||
smoketime--
|
||||
if(smoketime < 1)
|
||||
die()
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/C = loc
|
||||
to_chat(C, "<span class='notice'>Your [name] goes out.</span>")
|
||||
return
|
||||
if(location)
|
||||
location.hotspot_expose(700, 5)
|
||||
/obj/item/clothing/mask/smokable/proc/smoke(amount)
|
||||
smoketime -= amount
|
||||
if(reagents && reagents.total_volume) // check if it has any reagents at all
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/C = loc
|
||||
@@ -120,6 +111,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
else // else just remove some of the reagents
|
||||
reagents.remove_any(REM)
|
||||
|
||||
/obj/item/clothing/mask/smokable/process()
|
||||
var/turf/location = get_turf(src)
|
||||
smoke(1)
|
||||
if(smoketime < 1)
|
||||
die()
|
||||
return
|
||||
if(location)
|
||||
location.hotspot_expose(700, 5)
|
||||
|
||||
/obj/item/clothing/mask/smokable/examine(mob/user)
|
||||
..()
|
||||
if(is_pipe)
|
||||
@@ -214,6 +214,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
|
||||
/obj/item/clothing/mask/smokable/attack(mob/living/carbon/human/H, mob/user, def_zone)
|
||||
if(lit && H == user && istype(H))
|
||||
var/obj/item/blocked = H.check_mouth_coverage()
|
||||
if(blocked)
|
||||
to_chat(H, "<span class='warning'>\The [blocked] is in the way!</span>")
|
||||
return 1
|
||||
to_chat(H, "<span class='notice'>You take a drag on your [name].</span>")
|
||||
smoke(5)
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/mask/smokable/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if(isflamesource(W))
|
||||
|
||||
@@ -68,3 +68,40 @@
|
||||
qdel(src)
|
||||
user.put_in_hands(finished)
|
||||
update_icon(user)
|
||||
|
||||
/obj/item/woodcirclet
|
||||
name = "wood circlet"
|
||||
desc = "A small wood circlet for making a flower crown."
|
||||
icon = 'icons/obj/buildingobject.dmi'
|
||||
icon_state = "woodcirclet"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/obj/item/woodcirclet/attackby(obj/item/W as obj, mob/user as mob)
|
||||
var/obj/item/complete
|
||||
if(istype(W,/obj/item/seeds/poppyseed))
|
||||
user << "You attach the poppy to the circlet and create a beautiful flower crown."
|
||||
complete = new /obj/item/clothing/head/poppy_crown(get_turf(user))
|
||||
user.drop_from_inventory(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
user.put_in_hands(complete)
|
||||
return
|
||||
else if(istype(W,/obj/item/seeds/sunflowerseed))
|
||||
user << "You attach the sunflower to the circlet and create a beautiful flower crown."
|
||||
complete = new /obj/item/clothing/head/sunflower_crown(get_turf(user))
|
||||
user.drop_from_inventory(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
user.put_in_hands(complete)
|
||||
return
|
||||
else if(istype(W,/obj/item/seeds/lavenderseed))
|
||||
user << "You attach the lavender to the circlet and create a beautiful flower crown."
|
||||
complete = new /obj/item/clothing/head/lavender_crown(get_turf(user))
|
||||
user.drop_from_inventory(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
user.put_in_hands(complete)
|
||||
return
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
/obj/structure/closet/chefcloset/New()
|
||||
..()
|
||||
new /obj/item/clothing/under/sundress(src)
|
||||
new /obj/item/clothing/under/dress/sundress(src)
|
||||
new /obj/item/clothing/under/waiter(src)
|
||||
new /obj/item/clothing/under/waiter(src)
|
||||
new /obj/item/device/radio/headset/headset_service(src)
|
||||
|
||||
@@ -256,7 +256,6 @@
|
||||
name = "inflatable barrier box"
|
||||
desc = "Contains inflatable walls and doors."
|
||||
icon_state = "inf_box"
|
||||
item_state = "syringe_kit"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 7
|
||||
can_hold = list(/obj/item/inflatable)
|
||||
|
||||
@@ -1,18 +1,48 @@
|
||||
/obj/structure/shuttle
|
||||
name = "shuttle"
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
icon = 'icons/turf/shuttle_parts.dmi'
|
||||
|
||||
/obj/structure/shuttle/window
|
||||
name = "shuttle window"
|
||||
icon = 'icons/obj/podwindows.dmi'
|
||||
icon_state = "1"
|
||||
icon_state = "0_0" //The states are a bitflag for connecting window directions, then connecting shuttle wall directions
|
||||
density = 1
|
||||
opacity = 0
|
||||
anchored = 1
|
||||
|
||||
CanPass(atom/movable/mover, turf/target, height, air_group)
|
||||
if(!height || air_group) return 0
|
||||
else return ..()
|
||||
var/window_flags = 0 // Bitflags to indicate connected windows
|
||||
var/wall_flags = 0 // Bitflags to indicate connected walls
|
||||
|
||||
/obj/structure/shuttle/window/CanPass(atom/movable/mover, turf/target, height, air_group)
|
||||
if(!height || air_group) return 0
|
||||
else return ..()
|
||||
|
||||
/obj/structure/shuttle/window/initialize()
|
||||
..()
|
||||
auto_join()
|
||||
|
||||
/obj/structure/shuttle/window/proc/auto_join()
|
||||
match_windows(NORTH, NORTH)
|
||||
match_windows(EAST, EAST)
|
||||
match_windows(SOUTH, SOUTH)
|
||||
match_windows(WEST, WEST)
|
||||
|
||||
icon_state = "[window_flags]_[wall_flags]"
|
||||
|
||||
return icon_state
|
||||
|
||||
/obj/structure/shuttle/window/proc/match_windows(direction, flag, mask=0)
|
||||
var/turf/adj = get_step(src, direction)
|
||||
|
||||
if(istype(adj,/turf/simulated/shuttle/wall))
|
||||
wall_flags |= flag // turn on the bit flag
|
||||
else
|
||||
var/obj/structure/shuttle/window/window = locate(src.type) in adj
|
||||
if(window)
|
||||
window_flags |= flag // turn on the bit flag
|
||||
else
|
||||
window_flags &= ~flag // turn off the bit flag
|
||||
wall_flags &= ~flag // turn off the bit flag
|
||||
|
||||
/obj/structure/shuttle/engine
|
||||
name = "engine"
|
||||
|
||||
@@ -5,79 +5,216 @@
|
||||
/turf/simulated/floor/diona/attackby()
|
||||
return
|
||||
|
||||
//Shuttle Floors
|
||||
/obj/landed_holder
|
||||
name = "landed turf holder"
|
||||
desc = "holds all the info about the turf this turf 'landed on'"
|
||||
var/turf/turf_type
|
||||
var/turf/simulated/shuttle/my_turf
|
||||
var/image/turf_image
|
||||
|
||||
New(var/location = null, var/turf/simulated/shuttle/turf)
|
||||
my_turf = turf
|
||||
|
||||
/obj/landed_holder/proc/land_on(var/turf/T)
|
||||
//Gather destination information
|
||||
var/old_dest_type = T.type
|
||||
var/old_dest_dir = T.dir
|
||||
var/old_dest_icon_state = T.icon_state
|
||||
var/old_dest_icon = T.icon
|
||||
var/list/old_dest_overlays = T.overlays.Copy()
|
||||
var/list/old_dest_underlays = T.underlays.Copy()
|
||||
|
||||
//Set the destination to be like us
|
||||
T.Destroy()
|
||||
var/turf/simulated/shuttle/new_dest = T.ChangeTurf(my_turf.type,,1)
|
||||
new_dest.set_dir(my_turf.dir)
|
||||
new_dest.icon_state = my_turf.icon_state
|
||||
new_dest.icon = my_turf.icon
|
||||
new_dest.overlays = my_turf.overlays
|
||||
new_dest.underlays = my_turf.underlays
|
||||
//Shuttle specific stuff
|
||||
new_dest.interior_corner = my_turf.interior_corner
|
||||
new_dest.takes_underlays = my_turf.takes_underlays
|
||||
new_dest.under_turf = my_turf.under_turf
|
||||
new_dest.join_flags = my_turf.join_flags
|
||||
new_dest.join_group = my_turf.join_group
|
||||
|
||||
//Tell the new turf about what was there before
|
||||
new_dest.landed_holder = new(turf = new_dest)
|
||||
new_dest.landed_holder.turf_type = old_dest_type
|
||||
new_dest.landed_holder.dir = old_dest_dir
|
||||
new_dest.landed_holder.icon = old_dest_icon
|
||||
new_dest.landed_holder.icon_state = old_dest_icon_state
|
||||
new_dest.landed_holder.overlays = old_dest_overlays
|
||||
new_dest.landed_holder.underlays = old_dest_underlays
|
||||
|
||||
//Update underlays if necessary (interior corners won't have changed).
|
||||
if(new_dest.takes_underlays && !new_dest.interior_corner)
|
||||
new_dest.underlay_update()
|
||||
|
||||
return new_dest
|
||||
|
||||
/obj/landed_holder/proc/leave_turf()
|
||||
var/turf/new_source
|
||||
//Change our source to whatever it was before
|
||||
if(turf_type)
|
||||
new_source = my_turf.ChangeTurf(turf_type,,1)
|
||||
new_source.set_dir(dir)
|
||||
new_source.icon_state = icon_state
|
||||
new_source.icon = icon
|
||||
new_source.overlays = overlays
|
||||
new_source.underlays = underlays
|
||||
else
|
||||
new_source = my_turf.ChangeTurf(get_base_turf_by_area(my_turf),,1)
|
||||
|
||||
return new_source
|
||||
|
||||
/turf/simulated/shuttle
|
||||
name = "shuttle"
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
icon = 'icons/turf/shuttle_white.dmi'
|
||||
thermal_conductivity = 0.05
|
||||
heat_capacity = 0
|
||||
layer = 2
|
||||
|
||||
/turf/simulated/shuttle/wall
|
||||
name = "wall"
|
||||
icon_state = "wall1"
|
||||
opacity = 1
|
||||
density = 1
|
||||
blocks_air = 1
|
||||
var/obj/landed_holder/landed_holder
|
||||
var/interior_corner = 0
|
||||
var/takes_underlays = 0
|
||||
var/turf/under_turf //Underlay override turf path.
|
||||
var/join_flags = 0 //Bitstring to represent adjacency of joining walls
|
||||
var/join_group = "shuttle" //A tag for what other walls to join with. Null if you don't want them to.
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft
|
||||
name = "voidcraft wall"
|
||||
icon = 'icons/turf/voidcraft_walls.dmi'
|
||||
icon_state = "voidcraft_wall_alone"
|
||||
var/stripe_color = null // If set, generates a colored stripe overlay. Accepts #XXXXXX as input.
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/red
|
||||
stripe_color = "#FF0000"
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/blue
|
||||
stripe_color = "#0000FF"
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/green
|
||||
stripe_color = "#00FF00"
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/New()
|
||||
/turf/simulated/shuttle/Destroy()
|
||||
landed_holder = null
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/update_icon()
|
||||
var/list/icon_states = icon_states(src.icon)
|
||||
if(("[icon_state]_stripe" in icon_states) && stripe_color)
|
||||
overlays.Cut()
|
||||
var/image/I = image(icon = src.icon, dir = src.dir, icon_state = "[icon_state]_stripe")
|
||||
if(stripe_color)
|
||||
I.color = stripe_color
|
||||
overlays.Add(I)
|
||||
/turf/simulated/shuttle/proc/underlay_update()
|
||||
if(!takes_underlays)
|
||||
//Basically, if it's not forced, and we don't care, don't do it.
|
||||
return 0
|
||||
|
||||
var/turf/under //May be a path or a turf
|
||||
|
||||
//Mapper wanted something specific
|
||||
if(under_turf)
|
||||
under = under_turf
|
||||
|
||||
//Well if this isn't our first rodeo, we know EXACTLY what we landed on, and it looks like this.
|
||||
if(landed_holder && !interior_corner)
|
||||
underlays.Cut()
|
||||
underlays += image(landed_holder,layer=FLOAT_LAYER)
|
||||
return
|
||||
|
||||
if(!under)
|
||||
var/turf/T1
|
||||
var/turf/T2
|
||||
var/turf/T3
|
||||
|
||||
T1 = get_step(src, turn(join_flags,135)) // 45 degrees before opposite
|
||||
T2 = get_step(src, turn(join_flags,225)) // 45 degrees beyond opposite
|
||||
T3 = get_step(src, turn(join_flags,180)) // Opposite from the diagonal
|
||||
|
||||
if(isfloor(T1) && ((T1.type == T2.type) || (T1.type == T3.type)))
|
||||
under = T1
|
||||
else if(isfloor(T2) && T2.type == T3.type)
|
||||
under = T2
|
||||
else if(isfloor(T3) || istype(T3,/turf/space/transit))
|
||||
under = T3
|
||||
else
|
||||
under = get_base_turf_by_area(src)
|
||||
|
||||
var/use_icon = ispath(under) ? initial(under.icon) : under.icon
|
||||
var/use_icon_state
|
||||
|
||||
if(istype(under,/turf/simulated/shuttle))
|
||||
interior_corner = 1 //Prevents us from 'landing on grass' and having interior corners update.
|
||||
|
||||
if(ispath(under,/turf/space))
|
||||
use_icon_state = "[rand(1,25)]" //Space turfs should be random.
|
||||
else
|
||||
use_icon_state = ispath(under) ? initial(under.icon_state) : under.icon_state
|
||||
|
||||
var/image/under_image = new(use_icon,icon_state = use_icon_state)
|
||||
underlays.Cut()
|
||||
underlays |= under_image
|
||||
|
||||
return under
|
||||
|
||||
/turf/simulated/shuttle/floor
|
||||
name = "floor"
|
||||
icon_state = "floor"
|
||||
icon = 'icons/turf/flooring/shuttle.dmi'
|
||||
icon_state = "floor_blue"
|
||||
|
||||
/turf/simulated/shuttle/floor/red
|
||||
icon_state = "floor_red"
|
||||
|
||||
/turf/simulated/shuttle/floor/yellow
|
||||
icon_state = "floor_yellow"
|
||||
|
||||
/turf/simulated/shuttle/floor/darkred
|
||||
icon_state = "floor_dred"
|
||||
|
||||
/turf/simulated/shuttle/floor/purple
|
||||
icon_state = "floor_purple"
|
||||
|
||||
/turf/simulated/shuttle/floor/white
|
||||
icon_state = "floor_white"
|
||||
|
||||
/turf/simulated/shuttle/floor/black
|
||||
icon_state = "floor_black"
|
||||
|
||||
/turf/simulated/shuttle/floor/glass
|
||||
icon_state = "floor_glass"
|
||||
takes_underlays = 1
|
||||
|
||||
/turf/simulated/shuttle/plating
|
||||
name = "plating"
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "plating"
|
||||
|
||||
/turf/simulated/shuttle/plating/airless
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
|
||||
//For 'carrying' otherwise empty turfs or stuff in space turfs with you or having holes in the floor or whatever.
|
||||
/turf/simulated/shuttle/plating/carry
|
||||
name = "carry turf"
|
||||
icon = 'icons/turf/shuttle_parts.dmi'
|
||||
icon_state = "carry"
|
||||
takes_underlays = 1
|
||||
blocks_air = 1 //I'd make these unsimulated but it just fucks with so much stuff so many other places.
|
||||
|
||||
initialize()
|
||||
icon_state = "carry_ingame"
|
||||
|
||||
/turf/simulated/shuttle/plating/airless/carry
|
||||
name = "airless carry turf"
|
||||
icon = 'icons/turf/shuttle_parts.dmi'
|
||||
icon_state = "carry"
|
||||
takes_underlays = 1
|
||||
blocks_air = 1
|
||||
|
||||
initialize()
|
||||
icon_state = "carry_ingame"
|
||||
|
||||
/turf/simulated/shuttle/plating/skipjack //Skipjack plating
|
||||
oxygen = 0
|
||||
nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD
|
||||
|
||||
/turf/simulated/shuttle/floor4 // Added this floor tile so that I have a seperate turf to check in the shuttle -- Polymorph
|
||||
name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle.
|
||||
icon_state = "floor4"
|
||||
|
||||
/turf/simulated/shuttle/floor4/skipjack //skipjack floors
|
||||
/turf/simulated/shuttle/floor/skipjack //Skipjack floors
|
||||
name = "skipjack floor"
|
||||
icon_state = "floor_dred"
|
||||
oxygen = 0
|
||||
nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD
|
||||
|
||||
/turf/simulated/shuttle/floor/voidcraft
|
||||
name = "voidcraft tiles"
|
||||
icon_state = "voidcraft_floor"
|
||||
icon_state = "void"
|
||||
|
||||
/turf/simulated/shuttle/floor/voidcraft/dark
|
||||
name = "voidcraft tiles"
|
||||
icon_state = "voidcraft_floor_dark"
|
||||
icon_state = "void_dark"
|
||||
|
||||
/turf/simulated/shuttle/floor/voidcraft/light
|
||||
name = "voidcraft tiles"
|
||||
icon_state = "voidcraft_floor_light"
|
||||
icon_state = "void_light"
|
||||
|
||||
|
||||
@@ -51,4 +51,149 @@
|
||||
..(newloc,"wood")
|
||||
|
||||
/turf/simulated/wall/sifwood/New(var/newloc)
|
||||
..(newloc,"alien wood")
|
||||
..(newloc,"alien wood")
|
||||
|
||||
// Shuttle Walls
|
||||
/turf/simulated/shuttle/wall
|
||||
name = "autojoin wall"
|
||||
icon_state = "light"
|
||||
opacity = 1
|
||||
density = 1
|
||||
blocks_air = 1
|
||||
|
||||
var/base_state = "light" //The base iconstate to base sprites on
|
||||
var/hard_corner = 0 //Forces hard corners (as opposed to diagonals)
|
||||
var/true_name = "wall" //What to rename this to on init
|
||||
|
||||
//Extra things this will try to locate and act like we're joining to. You can put doors, or whatever.
|
||||
//Carefully means only if it's on a /turf/simulated/shuttle subtype turf.
|
||||
var/static/list/join_carefully = list(
|
||||
/obj/structure/grille,
|
||||
/obj/machinery/door/blast/regular
|
||||
)
|
||||
var/static/list/join_always = list(
|
||||
/obj/structure/shuttle/engine,
|
||||
/obj/structure/shuttle/window,
|
||||
/obj/machinery/door/airlock/voidcraft
|
||||
)
|
||||
|
||||
/turf/simulated/shuttle/wall/hard_corner
|
||||
name = "hardcorner wall"
|
||||
icon_state = "light-hc"
|
||||
hard_corner = 1
|
||||
|
||||
/turf/simulated/shuttle/wall/no_join
|
||||
icon_state = "light-nj"
|
||||
join_group = null
|
||||
|
||||
/turf/simulated/shuttle/wall/dark
|
||||
icon = 'icons/turf/shuttle_dark.dmi'
|
||||
icon_state = "dark"
|
||||
base_state = "dark"
|
||||
|
||||
/turf/simulated/shuttle/wall/dark/hard_corner
|
||||
name = "hardcorner wall"
|
||||
icon_state = "dark-hc"
|
||||
hard_corner = 1
|
||||
|
||||
/turf/simulated/shuttle/wall/dark/no_join
|
||||
name = "nojoin wall"
|
||||
icon_state = "dark-nj"
|
||||
join_group = null
|
||||
|
||||
/turf/simulated/shuttle/wall/New()
|
||||
..()
|
||||
//To allow mappers to rename shuttle walls to like "redfloor interior" or whatever for ease of use.
|
||||
name = true_name
|
||||
|
||||
/turf/simulated/shuttle/wall/initialize()
|
||||
..()
|
||||
|
||||
if(join_group)
|
||||
src.auto_join()
|
||||
else
|
||||
icon_state = base_state
|
||||
|
||||
if(takes_underlays)
|
||||
underlay_update()
|
||||
|
||||
/turf/simulated/shuttle/wall/proc/auto_join()
|
||||
match_turf(NORTH, NORTH)
|
||||
match_turf(EAST, EAST)
|
||||
match_turf(SOUTH, SOUTH)
|
||||
match_turf(WEST, WEST)
|
||||
|
||||
icon_state = "[base_state][join_flags]"
|
||||
if(isDiagonal(join_flags))
|
||||
if(hard_corner) //You are using 'hard' (aka full-tile) corners.
|
||||
icon_state += "h" //Hard corners have 'h' at the end of the state
|
||||
else //Diagonals need an underlay to not look ugly.
|
||||
takes_underlays = 1
|
||||
else //Everything else doesn't deserve our time!
|
||||
takes_underlays = initial(takes_underlays)
|
||||
|
||||
return join_flags
|
||||
|
||||
/turf/simulated/shuttle/wall/proc/match_turf(direction, flag, mask=0)
|
||||
if((join_flags & mask) == mask)
|
||||
var/turf/simulated/shuttle/wall/adj = get_step(src, direction)
|
||||
if(istype(adj, /turf/simulated/shuttle/wall) && adj.join_group == src.join_group)
|
||||
join_flags |= flag // turn on the bit flag
|
||||
return
|
||||
|
||||
else if(istype(adj, /turf/simulated/shuttle))
|
||||
var/turf/simulated/shuttle/adj_cast = adj
|
||||
if(adj_cast.join_group == src.join_group)
|
||||
var/found
|
||||
for(var/E in join_carefully)
|
||||
found = locate(E) in adj
|
||||
if(found) break
|
||||
if(found)
|
||||
join_flags |= flag // turn on the bit flag
|
||||
return
|
||||
|
||||
var/always_found
|
||||
for(var/E in join_always)
|
||||
always_found = locate(E) in adj
|
||||
if(always_found) break
|
||||
if(always_found)
|
||||
join_flags |= flag // turn on the bit flag
|
||||
else
|
||||
join_flags &= ~flag // turn off the bit flag
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft
|
||||
name = "voidcraft wall"
|
||||
icon = 'icons/turf/shuttle_void.dmi'
|
||||
icon_state = "void"
|
||||
base_state = "void"
|
||||
var/stripe_color = null // If set, generates a colored stripe overlay. Accepts #XXXXXX as input.
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/hard_corner
|
||||
name = "hardcorner wall"
|
||||
icon_state = "void-hc"
|
||||
hard_corner = 1
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/no_join
|
||||
name = "nojoin wall"
|
||||
icon_state = "void-nj"
|
||||
join_group = null
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/red
|
||||
stripe_color = "#FF0000"
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/blue
|
||||
stripe_color = "#0000FF"
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/green
|
||||
stripe_color = "#00FF00"
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/initialize()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/turf/simulated/shuttle/wall/voidcraft/update_icon()
|
||||
if(stripe_color)
|
||||
overlays.Cut()
|
||||
var/image/I = image(icon = src.icon, icon_state = "o_[icon_state]")
|
||||
I.color = stripe_color
|
||||
overlays.Add(I)
|
||||
|
||||
27
code/game/turfs/unsimulated/shuttle.dm
Normal file
@@ -0,0 +1,27 @@
|
||||
/turf/unsimulated/shuttle
|
||||
name = "shuttle"
|
||||
icon = 'icons/turf/shuttle_white.dmi'
|
||||
thermal_conductivity = 0.05
|
||||
heat_capacity = 0
|
||||
layer = 2
|
||||
|
||||
/turf/unsimulated/shuttle/wall
|
||||
name = "wall"
|
||||
icon_state = "light"
|
||||
opacity = 1
|
||||
density = 1
|
||||
blocks_air = 1
|
||||
|
||||
/turf/unsimulated/shuttle/wall/dark
|
||||
icon = 'icons/turf/shuttle_dark.dmi'
|
||||
icon_state = "dark"
|
||||
|
||||
/turf/unsimulated/shuttle/floor
|
||||
name = "floor"
|
||||
icon = 'icons/turf/flooring/shuttle.dmi'
|
||||
icon_state = "floor_blue"
|
||||
|
||||
/turf/unsimulated/shuttle/plating
|
||||
name = "plating"
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "plating"
|
||||
@@ -12,4 +12,4 @@
|
||||
/datum/gear/ears/translator
|
||||
display_name = "universal translator, ear"
|
||||
path = /obj/item/device/universal_translator/ear
|
||||
cost = 5
|
||||
cost = 8
|
||||
@@ -153,4 +153,12 @@
|
||||
|
||||
/datum/gear/shoes/dress/white
|
||||
display_name = "shoes, dress white"
|
||||
path = /obj/item/clothing/shoes/dress/white
|
||||
path = /obj/item/clothing/shoes/dress/white
|
||||
|
||||
/datum/gear/shoes/heels
|
||||
display_name = "high heels"
|
||||
path = /obj/item/clothing/shoes/heels
|
||||
|
||||
/datum/gear/shoes/heels/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
@@ -348,3 +348,14 @@
|
||||
services[initial(service.name)] = service
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(services))
|
||||
|
||||
/datum/gear/suit/miscellaneous/kimono
|
||||
display_name = "kimono"
|
||||
path = /obj/item/clothing/suit/kimono
|
||||
|
||||
/datum/gear/suit/miscellaneous/kimono/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/suit/miscellaneous/redandblackjacket
|
||||
display_name = "red and black jacket"
|
||||
path = /obj/item/clothing/suit/storage/toggle/redandblackjacket
|
||||
@@ -273,11 +273,11 @@
|
||||
|
||||
/datum/gear/uniform/sundress
|
||||
display_name = "sundress"
|
||||
path = /obj/item/clothing/under/sundress
|
||||
path = /obj/item/clothing/under/dress/sundress
|
||||
|
||||
/datum/gear/uniform/sundress/white
|
||||
display_name = "sundress, white"
|
||||
path = /obj/item/clothing/under/sundress_white
|
||||
path = /obj/item/clothing/under/dress/sundress/white
|
||||
|
||||
/datum/gear/uniform/dress_fire
|
||||
display_name = "flame dress"
|
||||
@@ -444,4 +444,12 @@
|
||||
|
||||
/datum/gear/uniform/brandsuit/hephaestus
|
||||
display_name = "jumpsuit, hephaestus"
|
||||
path = /obj/item/clothing/under/hephaestus
|
||||
path = /obj/item/clothing/under/hephaestus
|
||||
|
||||
/datum/gear/uniform/yoga
|
||||
display_name = "yoga pants"
|
||||
path = /obj/item/clothing/under/pants/yoga
|
||||
|
||||
/datum/gear/uniform/yoga/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
@@ -65,4 +65,4 @@
|
||||
/datum/gear/utility/translator
|
||||
display_name = "universal translator"
|
||||
path = /obj/item/device/universal_translator
|
||||
cost = 5
|
||||
cost = 8
|
||||
|
||||
@@ -525,6 +525,10 @@
|
||||
var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
||||
var/rolled_sleeves = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/uniform.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/uniform.dmi',
|
||||
"Tajaran" = 'icons/mob/species/tajaran/uniforms/uniform.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/uniform.dmi',
|
||||
"Teshari" = 'icons/mob/species/seromi/uniform.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
@@ -347,3 +347,24 @@
|
||||
desc = "A wide-brimmed hat popularly worn in Mexico."
|
||||
icon_state = "sombrero"
|
||||
body_parts_covered = 0
|
||||
|
||||
|
||||
//Flower crowns
|
||||
|
||||
/obj/item/clothing/head/sunflower_crown
|
||||
name = "sunflower crown"
|
||||
desc = "A flower crown weaved with sunflowers."
|
||||
icon_state = "sunflower_crown"
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/lavender_crown
|
||||
name = "lavender crown"
|
||||
desc = "A flower crown weaved with lavender."
|
||||
icon_state = "lavender_crown"
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/poppy_crown
|
||||
name = "poppy crown"
|
||||
desc = "A flower crown weaved with poppies."
|
||||
icon_state = "poppy_crown"
|
||||
body_parts_covered = 0
|
||||
@@ -134,3 +134,8 @@
|
||||
desc = "A pair of wide shoes with thick soles. Designed for skating."
|
||||
icon_state = "skatershoe"
|
||||
item_state_slots = list(slot_r_hand_str = "skaterheld", slot_l_hand_str = "skaterheld")
|
||||
|
||||
/obj/item/clothing/shoes/heels
|
||||
name = "high heels"
|
||||
desc = "A pair of high-heeled shoes. Fancy!"
|
||||
icon_state = "heels"
|
||||
@@ -174,20 +174,16 @@
|
||||
/obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
|
||||
name = "blue suit jacket"
|
||||
desc = "A snappy dress jacket."
|
||||
icon_state = "suitjacket_blue_open"
|
||||
icon_state = "suitjacket_blue"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue")
|
||||
icon_open = "suitjacket_blue_open"
|
||||
icon_closed = "suitjacket_blue"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/lawyer/purpjacket
|
||||
name = "purple suit jacket"
|
||||
desc = "A snappy dress jacket."
|
||||
icon_state = "suitjacket_purp_open"
|
||||
icon_state = "suitjacket_purp"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_purple", slot_l_hand_str = "suit_purple")
|
||||
icon_open = "suitjacket_purp_open"
|
||||
icon_closed = "suitjacket_purp"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
@@ -195,10 +191,8 @@
|
||||
/obj/item/clothing/suit/storage/toggle/internalaffairs
|
||||
name = "black suit jacket"
|
||||
desc = "A smooth black jacket."
|
||||
icon_state = "ia_jacket_open"
|
||||
icon_state = "ia_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
icon_open = "ia_jacket_open"
|
||||
icon_closed = "ia_jacket"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
@@ -206,10 +200,8 @@
|
||||
/obj/item/clothing/suit/storage/toggle/fr_jacket
|
||||
name = "first responder jacket"
|
||||
desc = "A high-visibility jacket worn by medical first responders."
|
||||
icon_state = "fr_jacket_open"
|
||||
icon_state = "fr_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "fr_jacket", slot_l_hand_str = "fr_jacket")
|
||||
icon_open = "fr_jacket_open"
|
||||
icon_closed = "fr_jacket"
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency/oxygen)
|
||||
@@ -218,10 +210,8 @@
|
||||
/obj/item/clothing/suit/storage/toggle/fr_jacket/ems
|
||||
name = "\improper EMS jacket"
|
||||
desc = "A dark blue, martian-pattern, EMS jacket. It sports high-visibility reflective stripes and a star of life on the back."
|
||||
icon_state = "ems_jacket_closed"
|
||||
icon_state = "ems_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "ems_jacket", slot_l_hand_str = "ems_jacket")
|
||||
icon_open = "ems_jacket_open"
|
||||
icon_closed = "ems_jacket_closed"
|
||||
|
||||
/obj/item/clothing/suit/surgicalapron
|
||||
name = "surgical apron"
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat
|
||||
name = "labcoat"
|
||||
desc = "A suit that protects against minor chemical spills."
|
||||
icon_state = "labcoat_open"
|
||||
icon_state = "labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat")
|
||||
icon_open = "labcoat_open"
|
||||
icon_closed = "labcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -14,120 +12,90 @@
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/red
|
||||
name = "red labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is red."
|
||||
icon_state = "red_labcoat_open"
|
||||
icon_open = "red_labcoat_open"
|
||||
icon_closed = "red_labcoat"
|
||||
icon_state = "red_labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/blue
|
||||
name = "blue labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is blue."
|
||||
icon_state = "blue_labcoat_open"
|
||||
icon_open = "blue_labcoat_open"
|
||||
icon_closed = "blue_labcoat"
|
||||
icon_state = "blue_labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/purple
|
||||
name = "purple labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is purple."
|
||||
icon_state = "purple_labcoat_open"
|
||||
icon_open = "purple_labcoat_open"
|
||||
icon_closed = "purple_labcoat"
|
||||
icon_state = "purple_labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "purple_labcoat", slot_l_hand_str = "purple_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/orange
|
||||
name = "orange labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is orange."
|
||||
icon_state = "orange_labcoat_open"
|
||||
icon_open = "orange_labcoat_open"
|
||||
icon_closed = "orange_labcoat"
|
||||
icon_state = "orange_labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "orange_labcoat", slot_l_hand_str = "orange_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/green
|
||||
name = "green labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is green."
|
||||
icon_state = "green_labcoat_open"
|
||||
icon_open = "green_labcoat_open"
|
||||
icon_closed = "green_labcoat"
|
||||
icon_state = "green_labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/yellow
|
||||
name = "yellow labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is yellow."
|
||||
icon_state = "yellow_labcoat_open"
|
||||
icon_open = "yellow_labcoat_open"
|
||||
icon_closed = "yellow_labcoat"
|
||||
icon_state = "yellow_labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "yellow_labcoat", slot_l_hand_str = "yellow_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/pink
|
||||
name = "pink labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. This one is pink."
|
||||
icon_state = "pink_labcoat_open"
|
||||
icon_open = "pink_labcoat_open"
|
||||
icon_closed = "pink_labcoat"
|
||||
icon_state = "pink_labcoat"
|
||||
item_state_slots = list(slot_r_hand_str = "pink_labcoat", slot_l_hand_str = "pink_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/cmo
|
||||
name = "chief medical officer's labcoat"
|
||||
desc = "Bluer than the standard model."
|
||||
icon_state = "labcoat_cmo_open"
|
||||
icon_open = "labcoat_cmo_open"
|
||||
icon_closed = "labcoat_cmo"
|
||||
icon_state = "labcoat_cmo"
|
||||
item_state_slots = list(slot_r_hand_str = "cmo_labcoat", slot_l_hand_str = "cmo_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/cmoalt
|
||||
name = "chief medical officer labcoat"
|
||||
desc = "A labcoat with command blue highlights."
|
||||
icon_state = "labcoat_cmoalt_open"
|
||||
icon_open = "labcoat_cmoalt_open"
|
||||
icon_closed = "labcoat_cmoalt"
|
||||
icon_state = "labcoat_cmoalt"
|
||||
item_state_slots = list(slot_r_hand_str = "cmo_labcoat", slot_l_hand_str = "cmo_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/mad
|
||||
name = "The Mad's labcoat"
|
||||
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
|
||||
icon_state = "labgreen_open"
|
||||
icon_open = "labgreen_open"
|
||||
icon_closed = "labgreen"
|
||||
icon_state = "labgreen"
|
||||
item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/genetics
|
||||
name = "Geneticist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder."
|
||||
icon_state = "labcoat_gen_open"
|
||||
icon_open = "labcoat_gen_open"
|
||||
icon_closed = "labcoat_gen"
|
||||
icon_state = "labcoat_gen"
|
||||
item_state_slots = list(slot_r_hand_str = "genetics_labcoat", slot_l_hand_str = "genetics_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/chemist
|
||||
name = "Chemist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder."
|
||||
icon_state = "labcoat_chem_open"
|
||||
icon_open = "labcoat_chem_open"
|
||||
icon_closed = "labcoat_chem"
|
||||
icon_state = "labcoat_chem"
|
||||
item_state_slots = list(slot_r_hand_str = "chemist_labcoat", slot_l_hand_str = "chemist_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/virologist
|
||||
name = "Virologist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder."
|
||||
icon_state = "labcoat_vir_open"
|
||||
icon_open = "labcoat_vir_open"
|
||||
icon_closed = "labcoat_vir"
|
||||
icon_state = "labcoat_vir"
|
||||
item_state_slots = list(slot_r_hand_str = "virologist_labcoat", slot_l_hand_str = "virologist_labcoat")
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/science
|
||||
name = "Scientist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
|
||||
icon_state = "labcoat_tox_open"
|
||||
icon_open = "labcoat_tox_open"
|
||||
icon_closed = "labcoat_tox"
|
||||
icon_state = "labcoat_tox"
|
||||
item_state_slots = list(slot_r_hand_str = "science_labcoat", slot_l_hand_str = "science_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat/emt
|
||||
name = "EMT's labcoat"
|
||||
desc = "A dark blue labcoat with reflective strips for emergency medical technicians."
|
||||
icon_state = "labcoat_emt_open"
|
||||
icon_open = "labcoat_emt_open"
|
||||
icon_closed = "labcoat_emt"
|
||||
icon_state = "labcoat_emt"
|
||||
item_state_slots = list(slot_r_hand_str = "emt_labcoat", slot_l_hand_str = "emt_labcoat")
|
||||
@@ -265,6 +265,11 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
|
||||
obj/item/clothing/suit/kimono
|
||||
name = "kimono"
|
||||
desc = "A traditional Japanese kimono."
|
||||
icon_state = "kimono"
|
||||
|
||||
/*
|
||||
* coats
|
||||
*/
|
||||
@@ -391,8 +396,6 @@
|
||||
desc = "A thick, well-worn WW2 leather bomber jacket."
|
||||
icon_state = "bomber"
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
icon_open = "bomber_open"
|
||||
icon_closed = "bomber"
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -415,7 +418,6 @@
|
||||
name = "leather jacket"
|
||||
desc = "A black leather coat."
|
||||
icon_state = "leather_jacket"
|
||||
icon_open = "leather_jacket_open"
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -424,8 +426,6 @@
|
||||
name = "leather vest"
|
||||
desc = "A black leather vest."
|
||||
icon_state = "leather_jacket_sleeveless"
|
||||
icon_open = "leather_jacket_sleeveless_open"
|
||||
icon_closed = "leather_jacket_sleeveless"
|
||||
body_parts_covered = UPPER_TORSO
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
|
||||
@@ -439,16 +439,12 @@
|
||||
/obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen
|
||||
desc = "A black leather coat. A corporate logo is proudly displayed on the back."
|
||||
icon_state = "leather_jacket_nt"
|
||||
icon_closed = "leather_jacket_nt"
|
||||
icon_open = "leather_jacket_nt_open"
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen/sleeveless
|
||||
name = "leather vest"
|
||||
desc = "A black leather vest. A corporate logo is proudly displayed on the back."
|
||||
icon_state = "leather_jacket_nt_sleeveless"
|
||||
icon_open = "leather_jacket_nt_sleeveless_open"
|
||||
icon_closed = "leather_jacket_nt_sleeveless"
|
||||
body_parts_covered = UPPER_TORSO
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
|
||||
@@ -458,8 +454,6 @@
|
||||
desc = "A brown leather coat."
|
||||
icon_state = "brown_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
icon_open = "brown_jacket_open"
|
||||
icon_closed = "brown_jacket"
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -468,8 +462,6 @@
|
||||
name = "brown vest"
|
||||
desc = "A brown leather vest."
|
||||
icon_state = "brown_jacket_sleeveless"
|
||||
icon_open = "brown_jacket_sleeveless_open"
|
||||
icon_closed = "brown_jacket_sleeveless"
|
||||
body_parts_covered = UPPER_TORSO
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
|
||||
@@ -477,15 +469,11 @@
|
||||
desc = "A brown leather coat. A corporate logo is proudly displayed on the back."
|
||||
icon_state = "brown_jacket_nt"
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
icon_open = "brown_jacket_nt_open"
|
||||
icon_closed = "brown_jacket_nt"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen/sleeveless
|
||||
name = "brown vest"
|
||||
desc = "A brown leather vest. A corporate logo is proudly displayed on the back."
|
||||
icon_state = "brown_jacket_nt_sleeveless"
|
||||
icon_open = "brown_jacket_nt_open"
|
||||
icon_closed = "brown_jacket_nt_sleeveless"
|
||||
body_parts_covered = UPPER_TORSO
|
||||
item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket")
|
||||
|
||||
@@ -494,8 +482,6 @@
|
||||
desc = "A denim coat."
|
||||
icon_state = "denim_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "denim_jacket", slot_l_hand_str = "denim_jacket")
|
||||
icon_open = "denim_jacket_open"
|
||||
icon_closed = "denim_jacket"
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -504,8 +490,6 @@
|
||||
name = "denim vest"
|
||||
desc = "A denim vest."
|
||||
icon_state = "denim_jacket_sleeveless"
|
||||
icon_open = "denim_jacket_sleeveless_open"
|
||||
icon_closed = "denim_jacket_sleeveless"
|
||||
body_parts_covered = UPPER_TORSO
|
||||
item_state_slots = list(slot_r_hand_str = "denim_jacket", slot_l_hand_str = "denim_jacket")
|
||||
|
||||
@@ -513,15 +497,11 @@
|
||||
desc = "A denim coat. A corporate logo is proudly displayed on the back."
|
||||
icon_state = "denim_jacket_nt"
|
||||
item_state_slots = list(slot_r_hand_str = "denim_jacket", slot_l_hand_str = "denim_jacket")
|
||||
icon_open = "denim_jacket_nt_open"
|
||||
icon_closed = "denim_jacket_nt"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen/sleeveless
|
||||
name = "denim vest"
|
||||
desc = "A denim vest. A corporate logo is proudly displayed on the back."
|
||||
icon_state = "denim_jacket_nt_sleeveless"
|
||||
icon_open = "denim_jacket_nt_open"
|
||||
icon_closed = "denim_jacket_nt_sleeveless"
|
||||
body_parts_covered = UPPER_TORSO
|
||||
item_state_slots = list(slot_r_hand_str = "denim_jacket", slot_l_hand_str = "denim_jacket")
|
||||
|
||||
@@ -530,8 +510,6 @@
|
||||
desc = "A warm, grey sweatshirt."
|
||||
icon_state = "grey_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey")
|
||||
icon_open = "grey_hoodie_open"
|
||||
icon_closed = "grey_hoodie"
|
||||
min_cold_protection_temperature = T0C - 20
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -541,80 +519,66 @@
|
||||
desc = "A warm, black sweatshirt."
|
||||
icon_state = "black_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
icon_open = "black_hoodie_open"
|
||||
icon_closed = "black_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/red
|
||||
name = "red hoodie"
|
||||
desc = "A warm, red sweatshirt."
|
||||
icon_state = "red_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_red", slot_l_hand_str = "suit_red")
|
||||
icon_open = "red_hoodie_open"
|
||||
icon_closed = "red_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/blue
|
||||
name = "blue hoodie"
|
||||
desc = "A warm, blue sweatshirt."
|
||||
icon_state = "blue_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue")
|
||||
icon_open = "blue_hoodie_open"
|
||||
icon_closed = "blue_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/green
|
||||
name = "green hoodie"
|
||||
desc = "A warm, green sweatshirt."
|
||||
icon_state = "green_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
|
||||
icon_open = "green_hoodie_open"
|
||||
icon_closed = "green_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/orange
|
||||
name = "orange hoodie"
|
||||
desc = "A warm, orange sweatshirt."
|
||||
icon_state = "orange_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_orange", slot_l_hand_str = "suit_orange")
|
||||
icon_open = "orange_hoodie_open"
|
||||
icon_closed = "orange_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/yellow
|
||||
name = "yellow hoodie"
|
||||
desc = "A warm, yellow sweatshirt."
|
||||
icon_state = "yellow_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_yellow", slot_l_hand_str = "suit_yellow")
|
||||
icon_open = "yellow_hoodie_open"
|
||||
icon_closed = "yellow_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/cti
|
||||
name = "CTI hoodie"
|
||||
desc = "A warm, black sweatshirt. It bears the letters CTI on the back, a lettering to the prestigious university in Tau Ceti, Ceti Technical Institute. There is a blue supernova embroidered on the front, the emblem of CTI."
|
||||
icon_state = "cti_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
icon_open = "cti_hoodie_open"
|
||||
icon_closed = "cti_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/mu
|
||||
name = "mojave university hoodie"
|
||||
desc = "A warm, gray sweatshirt. It bears the letters MU on the front, a lettering to the well-known public college, Mojave University."
|
||||
icon_state = "mu_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey")
|
||||
icon_open = "mu_hoodie_open"
|
||||
icon_closed = "mu_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/nt
|
||||
name = "NT hoodie"
|
||||
desc = "A warm, blue sweatshirt. It proudly bears the silver NanoTrasen insignia lettering on the back. The edges are trimmed with silver."
|
||||
icon_state = "nt_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue")
|
||||
icon_open = "nt_hoodie_open"
|
||||
icon_closed = "nt_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/smw
|
||||
name = "Space Mountain Wind hoodie"
|
||||
desc = "A warm, black sweatshirt. It has the logo for the popular softdrink Space Mountain Wind on both the front and the back."
|
||||
icon_state = "smw_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
icon_open = "smw_hoodie_open"
|
||||
icon_closed = "smw_hoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/redandblackjacket
|
||||
name = "red and black jacket"
|
||||
desc = "A cool red and black jacket to keep you stylish and cozy."
|
||||
icon_state = "redandblackjacket"
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/whitedress
|
||||
name = "white dress"
|
||||
@@ -820,37 +784,28 @@
|
||||
desc = "a track jacket, for the athletic."
|
||||
icon_state = "trackjacket"
|
||||
item_state_slots = list(slot_r_hand_str = "black_labcoat", slot_l_hand_str = "black_labcoat")
|
||||
icon_open = "trackjacket_open"
|
||||
icon_closed = "trackjacket"
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/track/blue
|
||||
name = "blue track jacket"
|
||||
icon_state = "trackjacketblue"
|
||||
item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat")
|
||||
icon_open = "trackjacketblue_open"
|
||||
icon_closed = "trackjacketblue"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/track/green
|
||||
name = "green track jacket"
|
||||
icon_state = "trackjacketgreen"
|
||||
item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat")
|
||||
icon_open = "trackjacketgreen_open"
|
||||
icon_closed = "trackjacketgreen"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/track/red
|
||||
name = "red track jacket"
|
||||
icon_state = "trackjacketred"
|
||||
item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat")
|
||||
icon_open = "trackjacketred_open"
|
||||
icon_closed = "trackjacketred"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/track/white
|
||||
name = "white track jacket"
|
||||
icon_state = "trackjacketwhite"
|
||||
item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat")
|
||||
icon_open = "trackjacketwhite_open"
|
||||
icon_closed = "trackjacketwhite"
|
||||
|
||||
//Flannels
|
||||
|
||||
@@ -944,10 +899,9 @@
|
||||
/obj/item/clothing/suit/storage/toggle/greengov
|
||||
name = "green formal jacket"
|
||||
desc = "A sleek proper formal jacket with gold buttons."
|
||||
icon_state = "suitjacket_green_open"
|
||||
icon_state = "suitjacket_green"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive")
|
||||
icon_open = "suitjacket_green_open"
|
||||
icon_closed = "suitjacket_green"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
|
||||
@@ -129,8 +129,6 @@
|
||||
desc = "A uniform dress jacket with gold toggles."
|
||||
icon_state = "whitedress"
|
||||
item_state = "labcoat"
|
||||
icon_open = "whitedress_open"
|
||||
icon_closed = "whitedress"
|
||||
blood_overlay_type = "coat"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/dress/fleet
|
||||
@@ -142,8 +140,6 @@
|
||||
desc = "A crisp white SCG Fleet dress jacket dripping with gold accents. So bright it's blinding."
|
||||
icon_state = "whitedress_com"
|
||||
item_state = "labcoat"
|
||||
icon_open = "whitedress_com_open"
|
||||
icon_closed = "whitedress_com"
|
||||
blood_overlay_type = "coat"
|
||||
|
||||
/obj/item/clothing/suit/dress/marine
|
||||
@@ -163,6 +159,4 @@
|
||||
desc = "A black synthleather jacket. The word 'MARSHAL' is stenciled onto the back in gold lettering."
|
||||
icon_state = "marshal_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
icon_open = "marshal_jacket_open"
|
||||
icon_closed = "marshal_jacket"
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
@@ -31,8 +31,7 @@
|
||||
//Jackets with buttons, used for labcoats, IA jackets, First Responder jackets, and brown jackets.
|
||||
/obj/item/clothing/suit/storage/toggle
|
||||
flags_inv = HIDEHOLSTER
|
||||
var/icon_open
|
||||
var/icon_closed
|
||||
var/open = 0 //0 is closed, 1 is open, -1 means it won't be able to toggle
|
||||
verb/toggle()
|
||||
set name = "Toggle Coat Buttons"
|
||||
set category = "Object"
|
||||
@@ -40,12 +39,14 @@
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
|
||||
icon_state = icon_closed
|
||||
if(open == 1) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
|
||||
open = 0
|
||||
icon_state = initial(icon_state)
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
usr << "You button up the coat."
|
||||
else if(icon_state == icon_closed)
|
||||
icon_state = icon_open
|
||||
else if(open == 0)
|
||||
open = 1
|
||||
icon_state = "[icon_state]_open"
|
||||
flags_inv = HIDEHOLSTER
|
||||
usr << "You unbutton the coat."
|
||||
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
|
||||
@@ -56,8 +57,7 @@
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/toggle
|
||||
flags_inv = HIDEHOLSTER
|
||||
var/icon_open
|
||||
var/icon_closed
|
||||
var/open = 0 //0 is closed, 1 is open, -1 means it won't be able to toggle
|
||||
verb/toggle()
|
||||
set name = "Toggle Coat Buttons"
|
||||
set category = "Object"
|
||||
@@ -65,12 +65,14 @@
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
if(icon_state == icon_open) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
|
||||
icon_state = icon_closed
|
||||
if(open == 1) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user
|
||||
open = 0
|
||||
icon_state = initial(icon_state)
|
||||
flags_inv = HIDETIE|HIDEHOLSTER
|
||||
usr << "You button up the coat."
|
||||
else if(icon_state == icon_closed)
|
||||
icon_state = icon_open
|
||||
else if(open == 0)
|
||||
open = 1
|
||||
icon_state = "[icon_state]_open"
|
||||
flags_inv = HIDEHOLSTER
|
||||
usr << "You unbutton the coat."
|
||||
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
/obj/item/clothing/under/color
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/color.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/color.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/color.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/color.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/color.dmi'
|
||||
)
|
||||
/obj/item/clothing/under/color/black
|
||||
name = "black jumpsuit"
|
||||
icon_state = "black"
|
||||
|
||||
@@ -255,6 +255,13 @@
|
||||
*/
|
||||
/obj/item/clothing/under/dress
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/dresses.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/dresses.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/dresses.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/dresses.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/dresses.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/dress/blacktango
|
||||
name = "black tango dress"
|
||||
@@ -344,8 +351,16 @@
|
||||
/*
|
||||
* wedding stuff
|
||||
*/
|
||||
/obj/item/clothing/under/wedding/
|
||||
/obj/item/clothing/under/wedding
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/dresses.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/dresses.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/dresses.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/dresses.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/dresses.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/wedding/bride_orange
|
||||
name = "orange wedding dress"
|
||||
@@ -378,13 +393,13 @@
|
||||
flags_inv = HIDESHOES
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/sundress
|
||||
/obj/item/clothing/under/dress/sundress
|
||||
name = "sundress"
|
||||
desc = "Makes you want to frolic in a field of daisies."
|
||||
icon_state = "sundress"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/sundress_white
|
||||
/obj/item/clothing/under/dress/sundress/white
|
||||
name = "white sundress"
|
||||
desc = "A white sundress decorated with purple lilies."
|
||||
icon_state = "sundress_white"
|
||||
@@ -459,6 +474,13 @@
|
||||
/obj/item/clothing/under/cheongsam
|
||||
name = "white cheongsam"
|
||||
desc = "It is a white cheongsam dress."
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/dresses.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/dresses.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/dresses.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/dresses.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/dresses.dmi'
|
||||
)
|
||||
icon_state = "mai_yang"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||
|
||||
@@ -486,6 +508,13 @@
|
||||
/obj/item/clothing/under/croptop
|
||||
name = "crop top"
|
||||
desc = "A shirt that has had the top cropped. This one is NT sponsored."
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/dresses.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/dresses.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/dresses.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/dresses.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/dresses.dmi'
|
||||
)
|
||||
icon_state = "croptop"
|
||||
item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey")
|
||||
|
||||
|
||||
@@ -2,6 +2,13 @@
|
||||
/obj/item/clothing/under/pants
|
||||
name = "jeans"
|
||||
desc = "A nondescript pair of tough blue jeans."
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/pants.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/pants.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/pants.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/pants.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/pants.dmi'
|
||||
)
|
||||
icon_state = "jeans"
|
||||
gender = PLURAL
|
||||
body_parts_covered = LOWER_TORSO|LEGS
|
||||
@@ -117,6 +124,11 @@
|
||||
desc = "A pair of sexy, tight black leather chaps."
|
||||
icon_state = "chapsbl"
|
||||
|
||||
/obj/item/clothing/under/pants/yoga
|
||||
name = "yoga pants"
|
||||
desc = "A pair of tight-fitting yoga pants for those lazy days."
|
||||
icon_state = "yoga"
|
||||
|
||||
/*
|
||||
* Baggy Pants
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,13 @@
|
||||
/obj/item/clothing/under/shorts
|
||||
name = "athletic shorts"
|
||||
desc = "95% Polyester, 5% Spandex!"
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/pants.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/pants.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/pants.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/pants.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/pants.dmi'
|
||||
)
|
||||
gender = PLURAL
|
||||
body_parts_covered = LOWER_TORSO
|
||||
|
||||
@@ -91,16 +98,18 @@
|
||||
name = "khaki short shorts"
|
||||
icon_state = "khaki_shorts_f"
|
||||
|
||||
/obj/item/clothing/under/shorts/loincloth
|
||||
name = "loincloth"
|
||||
desc = "A piece of cloth wrapped around the waist."
|
||||
icon_state = "loincloth"
|
||||
|
||||
//Argh, skirts be below this line -> ------------------------------
|
||||
|
||||
/obj/item/clothing/under/skirt
|
||||
name = "short black skirt"
|
||||
desc = "A skirt that is a shiny black."
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/dresses.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/dresses.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/dresses.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/dresses.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/dresses.dmi'
|
||||
)
|
||||
icon_state = "skirt_short_black"
|
||||
body_parts_covered = LOWER_TORSO
|
||||
rolled_sleeves = -1
|
||||
@@ -130,6 +139,11 @@
|
||||
desc = "A skirt that is swept to one side."
|
||||
icon_state = "skirt_swept"
|
||||
|
||||
/obj/item/clothing/under/skirt/loincloth
|
||||
name = "loincloth"
|
||||
desc = "A piece of cloth wrapped around the waist."
|
||||
icon_state = "loincloth"
|
||||
|
||||
/obj/item/clothing/under/skirt/outfit
|
||||
name = "black skirt"
|
||||
desc = "A black skirt, very fancy!"
|
||||
@@ -154,6 +168,8 @@
|
||||
icon_state = "plaid_purple"
|
||||
item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple")
|
||||
|
||||
//Job skirts
|
||||
|
||||
/obj/item/clothing/under/rank/cargo/skirt
|
||||
name = "quartermaster's jumpskirt"
|
||||
desc = "It's a jumpskirt worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper."
|
||||
|
||||
@@ -4,6 +4,12 @@
|
||||
/obj/item/clothing/under/pt
|
||||
name = "pt uniform"
|
||||
desc = "Shorts! Shirt! Miami! Sexy!"
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/military.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/military.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/military.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/military.dmi'
|
||||
)
|
||||
icon_state = "miami"
|
||||
worn_state = "miami"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
@@ -34,6 +40,13 @@
|
||||
/obj/item/clothing/under/utility
|
||||
name = "utility uniform"
|
||||
desc = "A comfortable turtleneck and black utility trousers."
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/military.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/military.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/military.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/military.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/military.dmi'
|
||||
)
|
||||
icon_state = "blackutility"
|
||||
worn_state = "blackutility"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
@@ -94,7 +107,6 @@
|
||||
icon_state = "blackutility_com"
|
||||
worn_state = "blackutility_com"
|
||||
|
||||
|
||||
/obj/item/clothing/under/utility/fleet
|
||||
name = "fleet coveralls"
|
||||
desc = "The utility uniform of the SCG Fleet, made from an insulated material."
|
||||
@@ -133,7 +145,6 @@
|
||||
icon_state = "navyutility_com"
|
||||
worn_state = "navyutility_com"
|
||||
|
||||
|
||||
/obj/item/clothing/under/utility/marine
|
||||
name = "marine fatigues"
|
||||
desc = "The utility uniform of the SCG Marine Corps, made from durable material."
|
||||
@@ -188,6 +199,13 @@
|
||||
/obj/item/clothing/under/service
|
||||
name = "service uniform"
|
||||
desc = "A service uniform of some kind."
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/military.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/military.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/military.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/military.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/military.dmi'
|
||||
)
|
||||
icon_state = "whiteservice"
|
||||
worn_state = "whiteservice"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
@@ -212,33 +230,40 @@
|
||||
worn_state = "greenservice_com"
|
||||
|
||||
//Dress
|
||||
/obj/item/clothing/under/dress/plain
|
||||
/obj/item/clothing/under/mildress
|
||||
name = "dress uniform"
|
||||
desc = "A dress uniform of some kind."
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/uniforms/military.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/uniforms/military.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/uniforms/military.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/uniforms/military.dmi',
|
||||
"Diona" = 'icons/mob/species/diona/uniforms/military.dmi'
|
||||
)
|
||||
icon_state = "greydress"
|
||||
worn_state = "greydress"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
|
||||
/obj/item/clothing/under/dress/expeditionary
|
||||
/obj/item/clothing/under/mildress/expeditionary
|
||||
name = "\improper SifGuard dress uniform"
|
||||
desc = "The dress uniform of the Sif Homeguard Corps in silver trim."
|
||||
icon_state = "greydress"
|
||||
worn_state = "greydress"
|
||||
|
||||
/obj/item/clothing/under/dress/expeditionary/command
|
||||
/obj/item/clothing/under/mildress/expeditionary/command
|
||||
name = "\improper SifGuard command dress uniform"
|
||||
desc = "The dress uniform of the Sif Homeguard Corps in gold trim."
|
||||
icon_state = "greydress_com"
|
||||
worn_state = "greydress_com"
|
||||
|
||||
/obj/item/clothing/under/dress/marine
|
||||
/obj/item/clothing/under/mildress/marine
|
||||
name = "marine dress uniform"
|
||||
desc = "The dress uniform of the SCG Marine Corps, class given form."
|
||||
icon_state = "blackdress"
|
||||
worn_state = "blackdress"
|
||||
|
||||
/obj/item/clothing/under/dress/marine/command
|
||||
/obj/item/clothing/under/mildress/marine/command
|
||||
name = "marine command dress uniform"
|
||||
desc = "The dress uniform of the SCG Marine Corps, even classier in gold."
|
||||
icon_state = "blackdress_com"
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
/material/wood/generate_recipes()
|
||||
..()
|
||||
recipes += new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1)
|
||||
recipes += new/datum/stack_recipe("wood circlet", /obj/item/woodcirclet, 1)
|
||||
recipes += new/datum/stack_recipe("clipboard", /obj/item/weapon/clipboard, 1)
|
||||
recipes += new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20)
|
||||
recipes += new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1)
|
||||
|
||||
@@ -257,19 +257,11 @@ var/global/list/damage_icon_parts = list()
|
||||
var/obj/item/organ/external/part = organs_by_name[organ_tag]
|
||||
if(isnull(part) || part.is_stump())
|
||||
icon_key += "0"
|
||||
else if(part.robotic >= ORGAN_ROBOT)
|
||||
icon_key += "2[part.model ? "-[part.model]": ""]"
|
||||
robolimb_count++
|
||||
if(part.organ_tag == BP_HEAD || part.organ_tag == BP_TORSO || part.organ_tag == BP_GROIN)
|
||||
robobody_count ++
|
||||
else if(part.status & ORGAN_DEAD)
|
||||
icon_key += "3"
|
||||
else
|
||||
icon_key += "1"
|
||||
continue
|
||||
if(part)
|
||||
icon_key += "[part.species.get_race_key(part.owner)]"
|
||||
icon_key += "[part.dna.GetUIState(DNA_UI_GENDER)]"
|
||||
icon_key += "[part.dna.GetUIValue(DNA_UI_SKIN_TONE)]"
|
||||
icon_key += "[part.s_tone]"
|
||||
if(part.s_col && part.s_col.len >= 3)
|
||||
icon_key += "[rgb(part.s_col[1],part.s_col[2],part.s_col[3])]"
|
||||
if(part.body_hair && part.h_col && part.h_col.len >= 3)
|
||||
@@ -277,6 +269,13 @@ var/global/list/damage_icon_parts = list()
|
||||
else
|
||||
icon_key += "#000000"
|
||||
|
||||
if(part.robotic >= ORGAN_ROBOT)
|
||||
icon_key += "2[part.model ? "-[part.model]": ""]"
|
||||
else if(part.status & ORGAN_DEAD)
|
||||
icon_key += "3"
|
||||
else
|
||||
icon_key += "1"
|
||||
|
||||
icon_key = "[icon_key][husk ? 1 : 0][fat ? 1 : 0][hulk ? 1 : 0][skeleton ? 1 : 0]"
|
||||
|
||||
var/icon/base_icon
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
return
|
||||
|
||||
var/deathtime = world.time - src.timeofdeath
|
||||
var/deathtimeminutes = round(deathtime / 600)
|
||||
var/deathtimeminutes = round(deathtime / 300)
|
||||
var/pluralcheck = "minute"
|
||||
if(deathtimeminutes == 0)
|
||||
pluralcheck = ""
|
||||
@@ -122,11 +122,11 @@
|
||||
pluralcheck = " [deathtimeminutes] minute and"
|
||||
else if(deathtimeminutes > 1)
|
||||
pluralcheck = " [deathtimeminutes] minutes and"
|
||||
var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
|
||||
var/deathtimeseconds = round((deathtime - deathtimeminutes * 300) / 10,1)
|
||||
|
||||
if (deathtime < 6000)
|
||||
if (deathtime < 3000)
|
||||
usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds."
|
||||
usr << "You must wait 10 minutes to respawn as a drone!"
|
||||
usr << "You must wait 5 minutes to respawn as a drone!"
|
||||
return
|
||||
|
||||
var/list/all_fabricators = list()
|
||||
|
||||
@@ -17,7 +17,9 @@ var/global/list/limb_icon_cache = list()
|
||||
s_col = null
|
||||
h_col = null
|
||||
if(robotic >= ORGAN_ROBOT)
|
||||
return
|
||||
var/datum/robolimb/franchise = all_robolimbs[model]
|
||||
if(!(franchise && franchise.lifelike))
|
||||
return
|
||||
if(species && human.species && species.name != human.species.name)
|
||||
return
|
||||
if(!isnull(human.s_tone) && (human.species.appearance_flags & HAS_SKIN_TONE))
|
||||
@@ -31,7 +33,9 @@ var/global/list/limb_icon_cache = list()
|
||||
s_col = null
|
||||
h_col = null
|
||||
if(robotic >= ORGAN_ROBOT)
|
||||
return
|
||||
var/datum/robolimb/franchise = all_robolimbs[model]
|
||||
if(!(franchise && franchise.lifelike))
|
||||
return
|
||||
if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && (species.appearance_flags & HAS_SKIN_TONE))
|
||||
s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE)
|
||||
if(species.appearance_flags & HAS_SKIN_COLOR)
|
||||
@@ -110,6 +114,7 @@ var/global/list/limb_icon_cache = list()
|
||||
mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]")
|
||||
else if (robotic >= ORGAN_ROBOT)
|
||||
mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]")
|
||||
apply_colouration(mob_icon)
|
||||
else
|
||||
mob_icon = new /icon(species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]")
|
||||
apply_colouration(mob_icon)
|
||||
@@ -124,6 +129,7 @@ var/global/list/limb_icon_cache = list()
|
||||
|
||||
if(model)
|
||||
icon_cache_key += "_model_[model]"
|
||||
apply_colouration(mob_icon)
|
||||
|
||||
dir = EAST
|
||||
icon = mob_icon
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
desc = "Contains blood used for transfusion."
|
||||
icon = 'icons/obj/bloodpack.dmi'
|
||||
icon_state = "empty"
|
||||
item_state = "bloodpack_empty"
|
||||
volume = 200
|
||||
|
||||
var/blood_type = null
|
||||
@@ -34,10 +35,15 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/update_icon()
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 9) icon_state = "empty"
|
||||
if(10 to 50) icon_state = "half"
|
||||
if(51 to INFINITY) icon_state = "full"
|
||||
if(percent >= 0 && percent <= 9)
|
||||
icon_state = "empty"
|
||||
item_state = "bloodpack_empty"
|
||||
else if(percent >= 10 && percent <= 50)
|
||||
icon_state = "half"
|
||||
item_state = "bloodpack_half"
|
||||
else if(percent >= 51 && percent < INFINITY)
|
||||
icon_state = "full"
|
||||
item_state = "bloodpack_full"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/APlus
|
||||
blood_type = "A+"
|
||||
@@ -60,4 +66,5 @@
|
||||
/obj/item/weapon/reagent_containers/blood/empty
|
||||
name = "Empty BloodPack"
|
||||
desc = "Seems pretty useless... Maybe if there were a way to fill it?"
|
||||
icon_state = "empty"
|
||||
icon_state = "empty"
|
||||
item_state = "bloodpack_empty"
|
||||
@@ -104,8 +104,6 @@
|
||||
var/turf/D = locate(T.x, throwy - 1, 1)
|
||||
for(var/atom/movable/AM as mob|obj in T)
|
||||
AM.Move(D)
|
||||
if(istype(T, /turf/simulated))
|
||||
qdel(T)
|
||||
|
||||
for(var/mob/living/carbon/bug in destination)
|
||||
bug.gib()
|
||||
@@ -119,7 +117,7 @@
|
||||
if(M.client)
|
||||
spawn(0)
|
||||
if(M.buckled)
|
||||
M << "\red Sudden acceleration presses you into your chair!"
|
||||
M << "\red Sudden acceleration presses you into \the [M.buckled]!"
|
||||
shake_camera(M, 3, 1)
|
||||
else
|
||||
M << "\red The floor lurches beneath you!"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
var/list/GM_checked = list()
|
||||
|
||||
for(var/turf/simulated/T in A)
|
||||
if(!istype(T) || isnull(T.zone) || istype(T, /turf/simulated/floor/airless))
|
||||
if(!istype(T) || isnull(T.zone) || istype(T, /turf/simulated/floor/airless) || istype(T,/turf/simulated/shuttle/plating/airless))
|
||||
continue
|
||||
if(T.zone.air in GM_checked)
|
||||
continue
|
||||
|
||||
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
BIN
icons/mob/species/diona/uniforms/color.dmi
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
icons/mob/species/diona/uniforms/dresses.dmi
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
icons/mob/species/diona/uniforms/military.dmi
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
icons/mob/species/diona/uniforms/pants.dmi
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
icons/mob/species/diona/uniforms/uniform.dmi
Normal file
|
After Width: | Height: | Size: 332 KiB |
BIN
icons/mob/species/diona/uniforms/uniform_fat.dmi
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
icons/mob/species/skrell/uniforms/color.dmi
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
icons/mob/species/skrell/uniforms/dresses.dmi
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
icons/mob/species/skrell/uniforms/military.dmi
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
icons/mob/species/skrell/uniforms/pants.dmi
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
icons/mob/species/skrell/uniforms/uniform.dmi
Normal file
|
After Width: | Height: | Size: 332 KiB |
BIN
icons/mob/species/skrell/uniforms/uniform_fat.dmi
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
icons/mob/species/tajaran/uniforms/color.dmi
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
icons/mob/species/tajaran/uniforms/dresses.dmi
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
icons/mob/species/tajaran/uniforms/military.dmi
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
icons/mob/species/tajaran/uniforms/pants.dmi
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
icons/mob/species/tajaran/uniforms/uniform.dmi
Normal file
|
After Width: | Height: | Size: 332 KiB |
BIN
icons/mob/species/tajaran/uniforms/uniform_fat.dmi
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
icons/mob/species/unathi/uniforms/color.dmi
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
icons/mob/species/unathi/uniforms/dresses.dmi
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
icons/mob/species/unathi/uniforms/military.dmi
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
icons/mob/species/unathi/uniforms/pants.dmi
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
icons/mob/species/unathi/uniforms/uniform.dmi
Normal file
|
After Width: | Height: | Size: 332 KiB |
BIN
icons/mob/species/unathi/uniforms/uniform_fat.dmi
Normal file
|
After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 447 KiB After Width: | Height: | Size: 449 KiB |
|
Before Width: | Height: | Size: 422 KiB After Width: | Height: | Size: 395 KiB |
BIN
icons/mob/uniforms/color.dmi
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
icons/mob/uniforms/dresses.dmi
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
icons/mob/uniforms/military.dmi
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
icons/mob/uniforms/pants.dmi
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
icons/mob/uniforms/uniform.dmi
Normal file
|
After Width: | Height: | Size: 331 KiB |
BIN
icons/mob/uniforms/uniform_fat.dmi
Normal file
|
After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 585 B After Width: | Height: | Size: 654 B |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 6.7 KiB |
BIN
icons/turf/flooring/shuttle.dmi
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 53 KiB |
BIN
icons/turf/shuttle_dark.dmi
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
icons/turf/shuttle_orange.dmi
Normal file
|
After Width: | Height: | Size: 933 B |
BIN
icons/turf/shuttle_parts.dmi
Normal file
|
After Width: | Height: | Size: 9.9 KiB |