Merge remote-tracking branch 'upstream/master' into airlockQDEL

This commit is contained in:
xxalpha
2015-08-27 18:44:06 +01:00
5 changed files with 461 additions and 115 deletions
+7 -8
View File
@@ -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.
+126 -93
View File
@@ -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 += "<span class='good'>Ready</span>"
if(BOT_LOADING)
dat += "<span class='good'>[mode_name[BOT_LOADING]]</span>"
if(BOT_DELIVER)
dat += "<span class='good'>[mode_name[BOT_DELIVER]]</span>"
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 << "<span class='danger'>Access denied.</span>"
return 0
/obj/machinery/bot/mulebot/proc/buzz(type)
switch(type)
if(SIGH)
visible_message("[src] makes a sighing buzz.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(ANNOYED)
visible_message("[src] makes an annoyed buzzing sound.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
if(DELIGHT)
visible_message("[src] makes a delighted ping!", "<span class='italics'>You hear a ping.</span>")
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.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
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.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
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.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
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!", "<span class='italics'>You hear a ping.</span>")
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.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
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!", "<span class='italics'>You hear a ping.</span>")
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
buzz(DELIGHT)
else
visible_message("[src] makes a sighing buzz.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
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 <b>[get_area(src)]</b>.", 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
+3 -1
View File
@@ -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 ..()
+1 -1
View File
@@ -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)
+324 -12
View File
@@ -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"
//
//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"