mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-30 23:49:21 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into electric_welder
# Conflicts: # icons/mob/items/lefthand.dmi # icons/mob/items/righthand.dmi
This commit is contained in:
@@ -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)
|
||||
+41
-57
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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,force_lighting_update = 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)
|
||||
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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")
|
||||
@@ -396,8 +396,6 @@ obj/item/clothing/suit/kimono
|
||||
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
|
||||
@@ -420,7 +418,6 @@ obj/item/clothing/suit/kimono
|
||||
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
|
||||
@@ -429,8 +426,6 @@ obj/item/clothing/suit/kimono
|
||||
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")
|
||||
|
||||
@@ -444,16 +439,12 @@ obj/item/clothing/suit/kimono
|
||||
/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")
|
||||
|
||||
@@ -463,8 +454,6 @@ obj/item/clothing/suit/kimono
|
||||
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
|
||||
@@ -473,8 +462,6 @@ obj/item/clothing/suit/kimono
|
||||
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")
|
||||
|
||||
@@ -482,15 +469,11 @@ obj/item/clothing/suit/kimono
|
||||
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")
|
||||
|
||||
@@ -499,8 +482,6 @@ obj/item/clothing/suit/kimono
|
||||
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
|
||||
@@ -509,8 +490,6 @@ obj/item/clothing/suit/kimono
|
||||
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")
|
||||
|
||||
@@ -518,15 +497,11 @@ obj/item/clothing/suit/kimono
|
||||
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")
|
||||
|
||||
@@ -535,8 +510,6 @@ obj/item/clothing/suit/kimono
|
||||
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
|
||||
@@ -546,87 +519,65 @@ obj/item/clothing/suit/kimono
|
||||
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"
|
||||
icon_open = "redandblackjacket_open"
|
||||
icon_closed = "redandblackjacket"
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/whitedress
|
||||
@@ -833,37 +784,28 @@ obj/item/clothing/suit/kimono
|
||||
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
|
||||
|
||||
@@ -957,10 +899,8 @@ obj/item/clothing/suit/kimono
|
||||
/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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user