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