Merge branch 'master' of https://github.com/PolarisSS13/Polaris into radio_freqs

This commit is contained in:
Anewbe
2017-03-28 14:06:18 -05:00
117 changed files with 3801 additions and 3496 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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))

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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"

View File

@@ -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"

View File

@@ -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)

View 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"

View File

@@ -12,4 +12,4 @@
/datum/gear/ears/translator
display_name = "universal translator, ear"
path = /obj/item/device/universal_translator/ear
cost = 5
cost = 8

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -65,4 +65,4 @@
/datum/gear/utility/translator
display_name = "universal translator"
path = /obj/item/device/universal_translator
cost = 5
cost = 8

View File

@@ -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'
)

View File

@@ -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

View File

@@ -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"

View File

@@ -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"

View File

@@ -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")

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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")

View File

@@ -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
*/

View File

@@ -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."

View File

@@ -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"

View File

@@ -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)

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -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"

View File

@@ -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!"

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 KiB

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 585 B

After

Width:  |  Height:  |  Size: 654 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

BIN
icons/turf/shuttle_dark.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Some files were not shown because too many files have changed in this diff Show More