From 1c51550559b465d1a9dbc1c947662c0ab6ab0965 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 8 Aug 2015 21:43:30 +0200 Subject: [PATCH 1/5] Changes how mulebots handle loading mobs. It now buckles them to the bot. You can no longer load objects containing mobs or with mobs buckled to them. You can no longer pass through plastic flaps by getting on a mulebot. Some simplification in mulebot code (buzzing sound code) Loading is now instantaneous and the mode BOT_LOADING is removed. The mulebot can no longer do certain stuff while off. Removing unneeded comments. Fixes mulebot loading/unloading being possible through border windows. Fixes mulebot not dropping its loaded cargo when qdel'd (wasn't a problem for explosion but for alien acid for example) --- code/game/machinery/bots/bots.dm | 15 +- code/game/machinery/bots/mulebot.dm | 219 ++++++++++++++++------------ code/game/objects/buckling.dm | 2 +- 3 files changed, 135 insertions(+), 101 deletions(-) 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 68643c28cb6..d7ffb7b8405 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,13 +27,15 @@ var/global/mulebot_count = 0 bot_type = MULE_BOT model = "MULE" blood_DNA = list() + can_buckle = 1 + buckle_lying = 0 suffix = "" var/turf/target // this is turf to navigate to (location of beacon) var/loaddir = 0 // this the direction to unload onto/load from var/home_destination = "" // tag of home beacon - req_access = list(access_cargo) + req_access = list(access_cargo) mode = BOT_IDLE @@ -77,6 +84,28 @@ obj/machinery/bot/mulebot/bot_reset() reached_target = 0 +obj/machinery/bot/mulebot/Move(atom/newloc, direct) + . = ..() + if(buckled_mob) + buckled_mob.buckled = null + 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 + buckled_mob.buckled = src + +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 @@ -183,8 +212,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) @@ -358,7 +385,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 @@ -379,7 +406,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() @@ -393,66 +419,93 @@ 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) + 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 @@ -460,18 +513,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 @@ -481,22 +532,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() ..() @@ -536,14 +572,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 @@ -603,26 +639,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 @@ -641,20 +673,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 @@ -673,6 +697,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 @@ -683,6 +709,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 @@ -719,7 +747,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) @@ -828,5 +856,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 \ No newline at end of file diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 0c781f27f9b..21fca6593d0 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) From e16c03f01023a17bda9d166723f473e83ddc0130 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sat, 8 Aug 2015 22:10:25 +0200 Subject: [PATCH 2/5] woops, now buckling succeeds if you are on the mulebot's turf. --- code/game/machinery/bots/mulebot.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index d7ffb7b8405..fca41d8291e 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -486,11 +486,12 @@ obj/machinery/bot/mulebot/CanPass(atom/movable/mover, turf/target, height=1.5) if(M.buckled) return 0 var/turf/T = get_turf(src) - density = 0 - var/can_step = step_towards(M, T) - density = 1 - if(!can_step) - return 0 + if(M.loc != T) + density = 0 + var/can_step = step_towards(M, T) + density = 1 + if(!can_step) + return 0 return ..() @@ -802,11 +803,10 @@ obj/machinery/bot/mulebot/CanPass(atom/movable/mover, turf/target, height=1.5) // 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... From 27b7e3b6f622606b200bce99341ba5218a9978fa Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 23 Aug 2015 20:55:41 +0200 Subject: [PATCH 3/5] Beds no longer use this trick in Move() so neither should the mulebot. --- code/game/machinery/bots/mulebot.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index fca41d8291e..8f69d506dc5 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -87,14 +87,12 @@ obj/machinery/bot/mulebot/bot_reset() obj/machinery/bot/mulebot/Move(atom/newloc, direct) . = ..() if(buckled_mob) - buckled_mob.buckled = null 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 - buckled_mob.buckled = src obj/machinery/bot/mulebot/Process_Spacemove(movement_dir = 0) if(buckled_mob) From 20023f79d76617495ea73e32234977c4450e0ca3 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 23 Aug 2015 21:39:22 +0200 Subject: [PATCH 4/5] Mobs buckled to mulebots now pass through plastic flaps. All ventcrawler and tiny sized mobs also pass through them now. --- code/game/machinery/computer/shuttle.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 ..() From 3749dcacb328a4c749e54fa529da3b4b065ff241 Mon Sep 17 00:00:00 2001 From: Aranclanos Date: Wed, 26 Aug 2015 06:47:27 -0300 Subject: [PATCH 5/5] Creates type paths for all types of floors in floor.dmi, first step for the floor organization. --- .../turfs/simulated/floor/plasteel_floor.dm | 336 +++++++++++++++++- 1 file changed, 324 insertions(+), 12 deletions(-) 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