diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index 9c6639c3bd7..c7d00e16013 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -70,17 +70,16 @@
#define BOT_MOVING 9 // for clean/floor/med bots, when moving.
#define BOT_HEALING 10 // healing people (medbots)
#define BOT_RESPONDING 11 // responding to a call from the AI
- #define BOT_LOADING 12 // loading/unloading
- #define BOT_DELIVER 13 // moving to deliver
- #define BOT_GO_HOME 14 // returning to home
- #define BOT_BLOCKED 15 // blocked
- #define BOT_NAV 16 // computing navigation
- #define BOT_WAIT_FOR_NAV 17 // waiting for nav computation
- #define BOT_NO_ROUTE 18 // no destination beacon found (or no route)
+ #define BOT_DELIVER 12 // moving to deliver
+ #define BOT_GO_HOME 13 // returning to home
+ #define BOT_BLOCKED 14 // blocked
+ #define BOT_NAV 15 // computing navigation
+ #define BOT_WAIT_FOR_NAV 16 // waiting for nav computation
+ #define BOT_NO_ROUTE 17 // no destination beacon found (or no route)
var/list/mode_name = list("In Pursuit","Preparing to Arrest", "Arresting", \
"Beginning Patrol", "Patrolling", "Summoned by PDA", \
"Cleaning", "Repairing", "Proceeding to work site", "Healing", \
- "Proceeding to AI waypoint", "Loading/Unloading", "Navigating to Delivery Location", "Navigating to Home", \
+ "Proceeding to AI waypoint", "Navigating to Delivery Location", "Navigating to Home", \
"Waiting for clear path", "Calculating navigation path", "Pinging beacon network", "Unable to reach destination")
//This holds text for what the bot is mode doing, reported on the remote bot control interface.
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index 9e33fc9f4cf..9c57d710916 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -6,6 +6,11 @@
var/global/mulebot_count = 0
+
+#define SIGH 0
+#define ANNOYED 1
+#define DELIGHT 2
+
/obj/machinery/bot/mulebot
name = "\improper MULEbot"
desc = "A Multiple Utility Load Effector bot."
@@ -22,6 +27,8 @@ var/global/mulebot_count = 0
bot_type = MULE_BOT
model = "MULE"
blood_DNA = list()
+ can_buckle = 1
+ buckle_lying = 0
suffix = ""
@@ -83,6 +90,26 @@ obj/machinery/bot/mulebot/bot_reset()
reached_target = 0
+obj/machinery/bot/mulebot/Move(atom/newloc, direct)
+ . = ..()
+ if(buckled_mob)
+ if(!buckled_mob.Move(loc, direct))
+ loc = buckled_mob.loc //we gotta go back
+ last_move = buckled_mob.last_move
+ inertia_dir = last_move
+ buckled_mob.inertia_dir = last_move
+ . = 0
+
+obj/machinery/bot/mulebot/Process_Spacemove(movement_dir = 0)
+ if(buckled_mob)
+ return buckled_mob.Process_Spacemove(movement_dir)
+ return ..()
+
+obj/machinery/bot/mulebot/CanPass(atom/movable/mover, turf/target, height=1.5)
+ if(mover == buckled_mob)
+ return 1
+ return ..()
+
// attack by item
// emag : lock/unlock,
// screwdriver: open/close hatch
@@ -189,8 +216,6 @@ obj/machinery/bot/mulebot/bot_reset()
switch(mode)
if(BOT_IDLE)
dat += "Ready"
- if(BOT_LOADING)
- dat += "[mode_name[BOT_LOADING]]"
if(BOT_DELIVER)
dat += "[mode_name[BOT_DELIVER]]"
if(BOT_GO_HOME)
@@ -364,7 +389,7 @@ obj/machinery/bot/mulebot/bot_reset()
updateDialog()
if("unload")
- if(load && mode !=1)
+ if(load && mode != BOT_HUNT)
if(loc == target)
unload(loaddir)
else
@@ -385,7 +410,6 @@ obj/machinery/bot/mulebot/bot_reset()
-
// returns true if the bot has power
/obj/machinery/bot/mulebot/proc/has_power()
return !open && cell && cell.charge > 0 && wires.HasPower()
@@ -399,66 +423,94 @@ obj/machinery/bot/mulebot/bot_reset()
user << "Access denied."
return 0
+/obj/machinery/bot/mulebot/proc/buzz(type)
+ switch(type)
+ if(SIGH)
+ visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
+ playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
+ if(ANNOYED)
+ visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
+ playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
+ if(DELIGHT)
+ visible_message("[src] makes a delighted ping!", "You hear a ping.")
+ playsound(loc, 'sound/machines/ping.ogg', 50, 0)
+
+
// mousedrop a crate to load the bot
// can load anything if emagged
+/obj/machinery/bot/mulebot/MouseDrop_T(atom/movable/AM, mob/user)
-/obj/machinery/bot/mulebot/MouseDrop_T(atom/movable/C, mob/user)
-
- if(user.stat)
+ if(user.incapacitated() || user.lying)
return
- if (!on || !istype(C)|| C.anchored || get_dist(user, src) > 1 || get_dist(src,C) > 1 )
+ if (!istype(AM))
return
- if(load)
- return
-
- load(C)
-
+ load(AM)
// called to load a crate
-/obj/machinery/bot/mulebot/proc/load(atom/movable/C)
- if(wires.LoadCheck() && !istype(C,/obj/structure/closet/crate))
- visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
- playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
- return // if not emagged, only allow crates to be loaded
-
- //I'm sure someone will come along and ask why this is here... well people were dragging screen items onto the mule, and that was not cool.
- //So this is a simple fix that only allows a selection of item types to be considered. Further narrowing-down is below.
- if(!istype(C,/obj/item) && !istype(C,/obj/machinery) && !istype(C,/obj/structure) && !ismob(C))
- return
- if(!isturf(C.loc)) //To prevent the loading from stuff from someone's inventory, which wouldn't get handled properly.
+/obj/machinery/bot/mulebot/proc/load(atom/movable/AM)
+ if(load || AM.anchored)
return
- if(get_dist(C, src) > 1 || load || !on)
+ if(!isturf(AM.loc)) //To prevent the loading from stuff from someone's inventory or screen icons.
return
- mode = BOT_LOADING
- // if a create, close before loading
- var/obj/structure/closet/crate/crate = C
- if(istype(crate))
- crate.close()
+ var/obj/structure/closet/crate/CRATE
+ if(istype(AM,/obj/structure/closet/crate))
+ CRATE = AM
+ else
+ if(wires.LoadCheck())
+ buzz(SIGH)
+ return // if not emagged, only allow crates to be loaded
- C.loc = loc
- sleep(2)
- if(C.loc != loc) //To prevent you from going onto more thano ne bot.
- return
- C.loc = src
- load = C
+ if(CRATE) // if it's a crate, close before loading
+ CRATE.close()
- C.pixel_y += 9
- if(C.layer < layer)
- C.layer = layer + 0.1
- overlays += C
+ if(isobj(AM))
+ var/obj/O = AM
+ if(O.buckled_mob || (locate(/mob) in AM)) //can't load non crates objects with mobs buckled to it or inside it.
+ buzz(SIGH)
+ return
- if(ismob(C))
- var/mob/M = C
- if(M.client)
- M.client.perspective = EYE_PERSPECTIVE
- M.client.eye = src
+ if(isliving(AM))
+ if(!buckle_mob(AM))
+ return
+ else
+ AM.loc = src
+ AM.pixel_y += 9
+ if(AM.layer < layer)
+ AM.layer = layer + 0.1
+ overlays += AM
+ load= AM
mode = BOT_IDLE
+/obj/machinery/bot/mulebot/buckle_mob(mob/living/M)
+ if(M.buckled)
+ return 0
+ var/turf/T = get_turf(src)
+ if(M.loc != T)
+ density = 0
+ var/can_step = step_towards(M, T)
+ density = 1
+ if(!can_step)
+ return 0
+ return ..()
+
+
+/obj/machinery/bot/mulebot/post_buckle_mob(mob/living/M)
+ if(M == buckled_mob) //post buckling
+ M.pixel_y = initial(M.pixel_y) + 9
+ if(M.layer < layer)
+ M.layer = layer + 0.1
+
+ else //post unbuckling
+ load = null
+ M.layer = initial(M.layer)
+ M.pixel_y = initial(M.pixel_y)
+
+
// called to unload the bot
// argument is optional direction to unload
// if zero, unload at bot's location
@@ -466,18 +518,16 @@ obj/machinery/bot/mulebot/bot_reset()
if(!load)
return
- mode = BOT_LOADING
+ mode = BOT_IDLE
+
overlays.Cut()
- if(ismob(load))
- var/mob/M = load
- if(M.client)
- M.client.perspective = MOB_PERSPECTIVE
- M.client.eye = src
-
+ if(buckled_mob)
+ unbuckle_mob()
+ return
load.loc = loc
- load.pixel_y -= 9
+ load.pixel_y = initial(load.pixel_y)
load.layer = initial(load.layer)
if(dirn)
var/turf/T = loc
@@ -487,22 +537,7 @@ obj/machinery/bot/mulebot/bot_reset()
load = null
- // in case non-load items end up in contents, dump every else too
- // this seems to happen sometimes due to race conditions
- // with items dropping as mobs are loaded
- for(var/atom/movable/AM in src)
- if(AM == cell || istype(AM , botcard) || AM == Radio) continue
-
- AM.loc = loc
- AM.layer = initial(AM.layer)
- AM.pixel_y = initial(AM.pixel_y)
- if(ismob(AM))
- var/mob/M = AM
- if(M.client)
- M.client.perspective = MOB_PERSPECTIVE
- M.client.eye = src
- mode = BOT_IDLE
/obj/machinery/bot/mulebot/call_bot()
..()
@@ -542,14 +577,14 @@ obj/machinery/bot/mulebot/bot_reset()
if(refresh) updateDialog()
/obj/machinery/bot/mulebot/proc/process_bot()
- //if(mode) world << "Mode: [mode]"
+
+ if(!on)
+ return
switch(mode)
if(BOT_IDLE) // idle
icon_state = "mulebot0"
return
- if(BOT_LOADING) // loading/unloading
- return
if(BOT_DELIVER,BOT_GO_HOME,BOT_BLOCKED) // navigating to deliver,home, or blocked
if(loc == target) // reached target
@@ -609,26 +644,22 @@ obj/machinery/bot/mulebot/bot_reset()
blockcount++
mode = BOT_BLOCKED
if(blockcount == 3)
- visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
- playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
+ buzz(ANNOYED)
if(blockcount > 10) // attempt 10 times before recomputing
// find new path excluding blocked turf
- visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
- playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
+ buzz(SIGH)
spawn(2)
calc_path(next)
if(path.len > 0)
- visible_message("[src] makes a delighted ping!", "You hear a ping.")
- playsound(loc, 'sound/machines/ping.ogg', 50, 0)
+ buzz(DELIGHT)
mode = BOT_BLOCKED
mode = BOT_WAIT_FOR_NAV
return
return
else
- visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
- playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
+ buzz(ANNOYED)
//world << "Bad turf."
mode = BOT_NAV
return
@@ -647,20 +678,12 @@ obj/machinery/bot/mulebot/bot_reset()
if(path.len > 0)
blockcount = 0
mode = BOT_BLOCKED
- visible_message("[src] makes a delighted ping!", "You hear a ping.")
- playsound(loc, 'sound/machines/ping.ogg', 50, 0)
+ buzz(DELIGHT)
else
- visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
- playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
+ buzz(SIGH)
mode = BOT_NO_ROUTE
- //if(6)
- //world << "Pending path calc."
- //if(7)
- //world << "No dest / no route."
-
- return
// calculates a path to the current destination
@@ -679,6 +702,8 @@ obj/machinery/bot/mulebot/bot_reset()
// starts bot moving to current destination
/obj/machinery/bot/mulebot/proc/start()
+ if(!on)
+ return
if(destination == home_destination)
mode = BOT_GO_HOME
else
@@ -689,6 +714,8 @@ obj/machinery/bot/mulebot/bot_reset()
// starts bot moving to home
// sends a beacon query to find
/obj/machinery/bot/mulebot/proc/start_home()
+ if(!on)
+ return
spawn(0)
set_destination(home_destination)
mode = BOT_BLOCKED
@@ -725,7 +752,7 @@ obj/machinery/bot/mulebot/bot_reset()
break
else // otherwise, look for crates only
AM = locate(/obj/structure/closet/crate) in get_step(loc,loaddir)
- if(AM)
+ if(AM && AM.Adjacent(src))
load(AM)
if(report_delivery)
speak("Now loading [load] at [get_area(src)].", radio_frequency)
@@ -780,11 +807,10 @@ obj/machinery/bot/mulebot/bot_reset()
// player on mulebot attempted to move
/obj/machinery/bot/mulebot/relaymove(mob/user)
- if(user.stat)
+ if(user.incapacitated())
return
if(load == user)
unload(0)
- return
//Update navigation data. Called when commanded to deliver, return home, or a route update is needed...
@@ -834,5 +860,12 @@ obj/machinery/bot/mulebot/bot_reset()
s.start()
new /obj/effect/decal/cleanable/oil(loc)
- unload(0)
qdel(src)
+
+/obj/machinery/bot/mulebot/Destroy()
+ unload(0)
+ return ..()
+
+#undef SIGH
+#undef ANNOYED
+#undef DELIGHT
diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm
index 2ea4b0b285e..460adf2b0d8 100644
--- a/code/game/machinery/computer/shuttle.dm
+++ b/code/game/machinery/computer/shuttle.dm
@@ -93,7 +93,9 @@
else if(istype(A, /mob/living)) // You Shall Not Pass!
var/mob/living/M = A
- if(!M.lying && !ismonkey(M) && !isslime(M)) //If your not laying down, or a small creature, no pass.
+ if(M.buckled && istype(M.buckled, /obj/machinery/bot/mulebot)) // mulebot passenger gets a free pass.
+ return 1
+ if(!M.lying && !M.ventcrawler && M.mob_size != MOB_SIZE_TINY) //If your not laying down, or a ventcrawler or a small creature, no pass.
return 0
return ..()
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 88a0b285c62..e47bcec43c6 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -72,7 +72,7 @@
//Wrapper procs that handle sanity and user feedback
/obj/proc/user_buckle_mob(mob/living/M, mob/user)
- if(!user.Adjacent(M) || user.restrained() || user.lying || user.stat)
+ if(!user.Adjacent(M) || user.lying || user.incapacitated())
return
add_fingerprint(user)
diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm
index 51b551565c5..555e25b09be 100644
--- a/code/game/turfs/simulated/floor/plasteel_floor.dm
+++ b/code/game/turfs/simulated/floor/plasteel_floor.dm
@@ -11,8 +11,36 @@
icon_state = icon_regular_floor
+
/turf/simulated/floor/plasteel/black
icon_state = "dark"
+/turf/simulated/floor/plasteel/black/side
+ icon_state = "black" //NOTICE ME SEMPAI: floors.dmi contains two sprites named black, remove the incorrect one
+/turf/simulated/floor/plasteel/black/corner
+ icon_state = "blackcorner"
+
+
+/turf/simulated/floor/plasteel/white
+ icon_state = "white"
+/turf/simulated/floor/plasteel/white/side
+ icon_state = "whitehall"
+/turf/simulated/floor/plasteel/white/corner
+ icon_state = "whitecorner"
+
+
+
+/turf/simulated/floor/plasteel/brown
+ icon_state = "brown"
+/turf/simulated/floor/plasteel/brown/corner
+ icon_state = "browncorner"
+
+/turf/simulated/floor/plasteel/darkbrown
+ icon_state = "darkbrownfull"
+/turf/simulated/floor/plasteel/darkbrown/side
+ icon_state = "darkbrown"
+/turf/simulated/floor/plasteel/darkbrown/corner
+ icon_state = "darkbrowncorners"
+
/turf/simulated/floor/plasteel/green
@@ -22,7 +50,6 @@
/turf/simulated/floor/plasteel/green/corner
icon_state = "greencorner"
-
/turf/simulated/floor/plasteel/darkgreen
icon_state = "darkgreenfull"
/turf/simulated/floor/plasteel/darkgreen/side
@@ -30,11 +57,13 @@
/turf/simulated/floor/plasteel/darkgreen/corner
icon_state = "darkgreencorners"
+/turf/simulated/floor/plasteel/whitegreen
+ icon_state = "whitegreenfull"
+/turf/simulated/floor/plasteel/whitegreen/side
+ icon_state = "whitegreen"
+/turf/simulated/floor/plasteel/whitegreen/corner
+ icon_state = "whitegreencorner"
-/turf/simulated/floor/plasteel/brown
- icon_state = "brown"
-/turf/simulated/floor/plasteel/brown/corner
- icon_state = "browncorner"
/turf/simulated/floor/plasteel/red
@@ -44,7 +73,6 @@
/turf/simulated/floor/plasteel/red/corner
icon_state = "redcorner"
-
/turf/simulated/floor/plasteel/darkred
icon_state = "darkredfull"
/turf/simulated/floor/plasteel/darkred/side
@@ -52,6 +80,90 @@
/turf/simulated/floor/plasteel/darkred/corner
icon_state = "darkredcorners"
+/turf/simulated/floor/plasteel/whitered
+ icon_state = "whiteredfull"
+/turf/simulated/floor/plasteel/whitered/side
+ icon_state = "whitered"
+/turf/simulated/floor/plasteel/whitered/corner
+ icon_state = "whiteredcorner"
+
+
+
+/turf/simulated/floor/plasteel/blue
+ icon_state = "bluefull"
+/turf/simulated/floor/plasteel/blue/side
+ icon_state = "blue"
+/turf/simulated/floor/plasteel/blue/corner
+ icon_state = "bluecorner"
+
+/turf/simulated/floor/plasteel/darkblue
+ icon_state = "darkbluefull"
+/turf/simulated/floor/plasteel/darkblue/side
+ icon_state = "darkblue"
+/turf/simulated/floor/plasteel/darkblue/corner
+ icon_state = "darkbluecorners"
+
+/turf/simulated/floor/plasteel/whiteblue
+ icon_state = "whitebluefull"
+/turf/simulated/floor/plasteel/whiteblue/side
+ icon_state = "whiteblue"
+/turf/simulated/floor/plasteel/whiteblue/corner
+ icon_state = "whitebluecorner"
+
+
+
+/turf/simulated/floor/plasteel/yellow
+ icon_state = "yellowfull"
+/turf/simulated/floor/plasteel/yellow/side
+ icon_state = "yellow"
+/turf/simulated/floor/plasteel/yellow/corner
+ icon_state = "yellowcorner"
+
+/turf/simulated/floor/plasteel/darkyellow
+ icon_state = "darkyellowfull"
+/turf/simulated/floor/plasteel/darkyellow/side
+ icon_state = "darkyellow"
+/turf/simulated/floor/plasteel/darkyellow/corner
+ icon_state = "darkyellowcorners"
+
+/turf/simulated/floor/plasteel/whiteyellow
+ icon_state = "whiteyellowfull"
+/turf/simulated/floor/plasteel/whiteyellow/side
+ icon_state = "whiteyellow"
+/turf/simulated/floor/plasteel/whiteyellow/corner
+ icon_state = "whiteyellowcorner"
+
+
+
+/turf/simulated/floor/plasteel/purple
+ icon_state = "purplefull"
+/turf/simulated/floor/plasteel/purple/side
+ icon_state = "purple"
+/turf/simulated/floor/plasteel/purple/corner
+ icon_state = "purplecorner"
+
+/turf/simulated/floor/plasteel/darkpurple
+ icon_state = "darkpurplefull"
+/turf/simulated/floor/plasteel/darkpurple/side
+ icon_state = "darkpurple"
+/turf/simulated/floor/plasteel/darkpurple/corner
+ icon_state = "darkpurplecorners"
+
+/turf/simulated/floor/plasteel/whitepurple
+ icon_state = "whitepurplefull"
+/turf/simulated/floor/plasteel/whitepurple/side
+ icon_state = "whitepurple"
+/turf/simulated/floor/plasteel/whitepurple/corner
+ icon_state = "whitepurplecorner"
+
+
+/turf/simulated/floor/plasteel/orange
+ icon_state = "orangefull"
+/turf/simulated/floor/plasteel/orange/side
+ icon_state = "orange"
+/turf/simulated/floor/plasteel/orange/corner
+ icon_state = "orangecorner"
+
/turf/simulated/floor/plasteel/neutral
icon_state = "neutralfull"
@@ -61,12 +173,48 @@
icon_state = "neutralcorner"
+/turf/simulated/floor/plasteel/arrival
+ icon_state = "arrival"
+/turf/simulated/floor/plasteel/arrival/corner
+ icon_state = "arrivalcorner"
+
+
+/turf/simulated/floor/plasteel/escape
+ icon_state = "escape"
+/turf/simulated/floor/plasteel/escape/corner
+ icon_state = "escapecorner"
+
+
+/turf/simulated/floor/plasteel/caution
+ icon_state = "caution"
+/turf/simulated/floor/plasteel/caution/corner
+ icon_state = "cautioncorner"
+
+
/turf/simulated/floor/plasteel/warning
icon_state = "warning"
/turf/simulated/floor/plasteel/warning/corner
icon_state = "warningcorner"
+/turf/simulated/floor/plasteel/warnplate
+ icon_state = "warnplate"
+/turf/simulated/floor/plasteel/warnplate/corner
+ icon_state = "warnplatecorner"
+
+
+/turf/simulated/floor/plasteel/warnwhite
+ icon_state = "warnwhite"
+/turf/simulated/floor/plasteel/warnwhite/corner
+ icon_state = "warnwhitecorner"
+
+
+/turf/simulated/floor/plasteel/whitebot
+ icon_state = "whitebot"
+/turf/simulated/floor/plasteel/whitebot/delivery
+ icon_state = "whitedelivery"
+
+
/turf/simulated/floor/plasteel/redyellow
icon_state = "redyellowfull"
/turf/simulated/floor/plasteel/redyellow/side
@@ -75,15 +223,45 @@
/turf/simulated/floor/plasteel/redblue
icon_state = "redbluefull"
-/turf/simulated/floor/plasteel/redblue/side
+/turf/simulated/floor/plasteel/redblue/blueside
+ icon_state = "bluered"
+/turf/simulated/floor/plasteel/redblue/redside
icon_state = "redblue"
+/turf/simulated/floor/plasteel/redgreen
+ icon_state = "redgreenfull"
+/turf/simulated/floor/plasteel/redgreen/side
+ icon_state = "redgreen"
+
+
+/turf/simulated/floor/plasteel/greenyellow
+ icon_state = "greenyellowfull"
+/turf/simulated/floor/plasteel/greenyellow/side
+ icon_state = "greenyellow"
+
+
+/turf/simulated/floor/plasteel/greenblue
+ icon_state = "greenbluefull"
+/turf/simulated/floor/plasteel/greenblue/side
+ icon_state = "greenblue"
+
+
+/turf/simulated/floor/plasteel/blueyellow
+ icon_state = "blueyellowfull"
+/turf/simulated/floor/plasteel/blueyellow/side
+ icon_state = "blueyellow"
+
+
/turf/simulated/floor/plasteel/darkwarning
icon_state = "warndark"
/turf/simulated/floor/plasteel/darkwarning/corner
icon_state = "warndarkcorners"
+/turf/simulated/floor/plasteel/warningline
+ icon_state = "warningline"
+/turf/simulated/floor/plasteel/warningline/corner
+ icon_state = "warninglinecorners"
/turf/simulated/floor/plasteel/yellowsiding
icon_state = "yellowsiding"
@@ -97,12 +275,86 @@
icon_state = "podhatchcorner"
+
+/turf/simulated/floor/plasteel/circuit
+ icon_state = "bcircuit"
+/turf/simulated/floor/plasteel/circuit/off
+ icon_state = "bcircuitoff"
+
+/turf/simulated/floor/plasteel/circuit/gcircuit
+ icon_state = "gcircuit"
+/turf/simulated/floor/plasteel/circuit/gcircuit/off
+ icon_state = "gcircuitoff"
+/turf/simulated/floor/plasteel/circuit/gcircuit/animated
+ icon_state = "gcircuitanim"
+
+/turf/simulated/floor/plasteel/circuit/rcircuit
+ icon_state = "rcircuit"
+/turf/simulated/floor/plasteel/circuit/rcircuit/animated
+ icon_state = "rcircuitanim"
+
+
+
/turf/simulated/floor/plasteel/loadingarea
icon_state = "loadingarea"
+/turf/simulated/floor/plasteel/loadingarea/dirty
+ icon_state = "loadingareadirty1"
+/turf/simulated/floor/plasteel/loadingarea/dirtydirty
+ icon_state = "loadingareadirty2"
+
+
+/turf/simulated/floor/plasteel/shuttle
+ icon_state = "shuttlefloor"
+/turf/simulated/floor/plasteel/shuttle/red
+ name = "Brig floor"
+ icon_state = "shuttlefloor4"
+/turf/simulated/floor/plasteel/shuttle/yellow
+ icon_state = "shuttlefloor2"
+/turf/simulated/floor/plasteel/shuttle/white
+ icon_state = "shuttlefloor3"
+/turf/simulated/floor/plasteel/shuttle/purple
+ icon_state = "shuttlefloor5"
+
+
+/turf/simulated/floor/plasteel/asteroid
+ icon_state = "asteroidfloor"
+/turf/simulated/floor/plasteel/asteroid/warning
+ icon_state = "asteroidwarning"
+
+
+/turf/simulated/floor/plasteel/recharge_floor
+ icon_state = "recharge_floor"
+/turf/simulated/floor/plasteel/recharge_floor/asteroid
+ icon_state = "recharge_floor_asteroid"
+
+
+/turf/simulated/floor/plasteel/chapel
+ icon_state = "chapel"
+
+/turf/simulated/floor/plasteel/showroomfloor
+ icon_state = "showroomfloor"
+
+/turf/simulated/floor/plasteel/floorgrime
+ icon_state = "floorgrime"
+
+/turf/simulated/floor/plasteel/solarpanel
+ icon_state = "solarpanel"
+
+/turf/simulated/floor/plasteel/cmo
+ icon_state = "cmo"
+
+/turf/simulated/floor/plasteel/barber
+ icon_state = "barber"
+
+/turf/simulated/floor/plasteel/hydrofloor
+ icon_state = "hydrofloor"
/turf/simulated/floor/plasteel/delivery
icon_state = "delivery"
+/turf/simulated/floor/plasteel/bot
+ icon_state = "bot"
+
/turf/simulated/floor/plasteel/freezer
icon_state = "freezerfloor"
@@ -115,10 +367,18 @@
/turf/simulated/floor/plasteel/cafeteria
icon_state = "cafeteria"
+/turf/simulated/floor/plasteel/vault
+ icon_state = "vault"
+
/turf/simulated/floor/plasteel/cult
icon_state = "cult"
name = "engraved floor"
+/turf/simulated/floor/plasteel/goonplaque
+ icon_state = "plaque"
+ name = "Commemorative Plaque"
+ desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding."
+
/turf/simulated/floor/plasteel/cult/narsie_act()
return
@@ -127,9 +387,61 @@
nitrogen = 0
temperature = TCMB
-/turf/simulated/floor/plasteel/shuttle
- icon_state = "shuttlefloor"
-/turf/simulated/floor/plasteel/shuttle/red
- name = "Brig floor"
- icon_state = "shuttlefloor4"
\ No newline at end of file
+
+
+
+
+//
+//unused? remove?
+//
+/turf/simulated/floor/plasteel/stage_bottom
+ icon_state = "stage_bottom"
+/turf/simulated/floor/plasteel/stage_left
+ icon_state = "stage_left"
+/turf/simulated/floor/plasteel/stage_bleft
+ icon_state = "stage_bleft"
+
+
+/turf/simulated/floor/plasteel/stairs
+ icon_state = "stairs"
+/turf/simulated/floor/plasteel/stairs/left
+ icon_state = "stairs-l"
+/turf/simulated/floor/plasteel/stairs/medium
+ icon_state = "stairs-m"
+/turf/simulated/floor/plasteel/stairs/right
+ icon_state = "stairs-r"
+/turf/simulated/floor/plasteel/stairs/old
+ icon_state = "stairs-old"
+
+
+/turf/simulated/floor/plasteel/brownold
+ icon_state = "brownold"
+/turf/simulated/floor/plasteel/brownold/corner
+ icon_state = "browncornerold"
+
+
+/turf/simulated/floor/plasteel/rockvault
+ icon_state = "rockvault"
+/turf/simulated/floor/plasteel/rockvault/alien
+ icon_state = "alienvault"
+/turf/simulated/floor/plasteel/rockvault/sandstone
+ icon_state = "sandstonevault"
+
+
+/turf/simulated/floor/plasteel/elevatorshaft
+ icon_state = "elevatorshaft"
+
+/turf/simulated/floor/plasteel/bluespace
+ icon_state = "bluespace"
+
+/turf/simulated/floor/plasteel/sepia
+ icon_state = "sepia"
+
+
+/turf/simulated/floor/plasteel/sandeffect
+ icon_state = "sandeffect"
+/turf/simulated/floor/plasteel/sandeffect/warning
+ icon_state = "warningsandeffect"
+/turf/simulated/floor/plasteel/sandeffect/warning/corner
+ icon_state = "warningsandeffectcorners"
\ No newline at end of file