diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index 37f35e71252..889bd774238 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -341,7 +341,7 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target) result = scan_target if(REPLACE_TILE) F = scan_target - if(F.is_plating()) //The floor must not already have a tile. + if(istype(F, /turf/simulated/floor/plating)) //The floor must not already have a tile. result = F if(FIX_TILE) //Selects only damaged floors. F = scan_target @@ -349,7 +349,7 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target) result = F if(TILE_EMAG) //Emag mode! Rip up the floor and cause breaches to space! F = scan_target - if(!F.is_plating()) + if(!istype(F, /turf/simulated/floor/plating)) result = F else //If no special processing is needed, simply return the result. result = scan_target @@ -368,8 +368,6 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target) mode = BOT_IDLE target = null return - var/turf/simulated/floor/F - var/obj/item/stack/tile/plasteel/T = new /obj/item/stack/tile/plasteel anchored = 1 icon_state = "floorbot-c" if(istype(target_turf, /turf/space/)) //If we are fixing an area not part of pure space, it is @@ -378,23 +376,21 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target) spawn(50) if(mode == BOT_REPAIRING) if(autotile) //Build the floor and include a tile. - F = target_turf.ChangeTurf(/turf/simulated/floor) + target_turf.ChangeTurf(/turf/simulated/floor) else //Build a hull plating without a floor tile. - T.build(loc) + target_turf.ChangeTurf(/turf/simulated/floor/plating) mode = BOT_IDLE amount -= 1 updateicon() anchored = 0 target = null else - F = target_turf - + var/turf/simulated/floor/F = target_turf mode = BOT_REPAIRING visible_message(" [src] begins repairing the floor.") spawn(50) if(mode == BOT_REPAIRING) - F = target_turf - F.make_plasteel_floor(T) + F.make_floor(/turf/simulated/floor) mode = BOT_IDLE amount -= 1 updateicon() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 787f3a867a9..e7a8f509cd9 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -281,25 +281,22 @@ // Holographic Items! -/turf/simulated/floor/holofloor/ +/turf/simulated/floor/holofloor thermal_conductivity = 0 /turf/simulated/floor/holofloor/grass gender = PLURAL name = "lush grass" icon_state = "grass1" - floor_tile = new/obj/item/stack/tile/grass + floor_tile = /obj/item/stack/tile/grass - New() - floor_tile.New() //I guess New() isn't run on objects spawned without the definition of a turf to house them, ah well. - icon_state = "grass[pick("1","2","3","4")]" - ..() - spawn(4) +/turf/simulated/floor/holofloor/grass/New() + ..() + icon_state = "grass[pick("1","2","3","4")]" + spawn(1) + if(src) update_icon() - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding get updated properly + fancy_update(type) /turf/simulated/floor/holofloor/attackby(obj/item/weapon/W as obj, mob/user as mob) return diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index ec759eae359..e646edb306d 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -488,9 +488,9 @@ /obj/item/mecha_parts/mecha_equipment/tool/cable_layer/proc/dismantleFloor(var/turf/new_turf) if(istype(new_turf, /turf/simulated/floor)) var/turf/simulated/floor/T = new_turf - if(!T.is_plating()) + if(!istype(T, /turf/simulated/floor/plating)) if(!T.broken && !T.burnt) - new T.floor_tile.type(T) + new T.floor_tile(T) T.make_plating() return !new_turf.intact diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 23417f8f67b..53e3d9ed383 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -3,6 +3,8 @@ icon = 'icons/turf/floors.dmi' // That are set in stone to check the west turf for recharge port icon_state = "recharge_floor" // Some people just want to watch the world burn i guess +/turf/simulated/floor/mech_bay_recharge_floor/break_tile() + src.ChangeTurf(/turf/simulated/floor/plating) /turf/simulated/floor/mech_bay_recharge_floor/airless icon_state = "recharge_floor_asteroid" diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index 429829cc7fc..2a208746460 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -11,8 +11,8 @@ flags = CONDUCT max_amount = 60 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed") - var/on = 1 - var/state //0 = fine, 1 = flickering, 2 = breaking, 3 = broken + turf_type = /turf/simulated/floor/light + var/state = 0 /obj/item/stack/tile/light/New(var/loc, var/amount=null) ..() diff --git a/code/game/objects/items/stacks/tiles/plasteel.dm b/code/game/objects/items/stacks/tiles/plasteel.dm index 5e922c9a6c5..bad34a66578 100644 --- a/code/game/objects/items/stacks/tiles/plasteel.dm +++ b/code/game/objects/items/stacks/tiles/plasteel.dm @@ -11,6 +11,7 @@ throw_range = 7 flags = CONDUCT max_amount = 60 + turf_type = /turf/simulated/floor /obj/item/stack/tile/plasteel/cyborg desc = "The ground you walk on" //Not the usual floor tile desc as that refers to throwing, Cyborgs can't do that - RR @@ -47,29 +48,3 @@ return else ..() - -/* -/obj/item/stack/tile/plasteel/attack_self(mob/user as mob) - if (usr.stat) - return - var/T = user.loc - if (!( istype(T, /turf) )) - user << "\red You must be on the ground!" - return - if (!( istype(T, /turf/space) )) - user << "\red You cannot build on or repair this turf!" - return - src.build(T) - src.add_fingerprint(user) - use(1) - return -*/ - -/obj/item/stack/tile/plasteel/proc/build(turf/S as turf) - S.ChangeTurf(/turf/simulated/floor/plating) -// var/turf/simulated/floor/W = S.ReplaceWithFloor() -// W.make_plating() - return - - - diff --git a/code/game/objects/items/stacks/tiles/tile_mineral.dm b/code/game/objects/items/stacks/tiles/tile_mineral.dm index 05177a54409..3a94618d548 100644 --- a/code/game/objects/items/stacks/tiles/tile_mineral.dm +++ b/code/game/objects/items/stacks/tiles/tile_mineral.dm @@ -10,6 +10,7 @@ throw_range = 7 max_amount = 60 origin_tech = "plasma=1" + turf_type = /turf/simulated/floor/mineral/plasma /obj/item/stack/tile/mineral/uranium name = "uranium tile" @@ -23,6 +24,7 @@ throw_range = 7 max_amount = 60 origin_tech = "material=1" + turf_type = /turf/simulated/floor/mineral/uranium /obj/item/stack/tile/mineral/gold name = "gold tile" @@ -36,6 +38,7 @@ throw_range = 7 max_amount = 60 origin_tech = "material=1" + turf_type = /turf/simulated/floor/mineral/gold /obj/item/stack/tile/mineral/silver name = "silver tile" @@ -49,6 +52,7 @@ throw_range = 7 max_amount = 60 origin_tech = "material=1" + turf_type = /turf/simulated/floor/mineral/silver /obj/item/stack/tile/mineral/diamond name = "diamond tile" @@ -62,6 +66,7 @@ throw_range = 7 max_amount = 60 origin_tech = "material=2" + turf_type = /turf/simulated/floor/mineral/diamond /obj/item/stack/tile/mineral/bananium name = "bananium tile" @@ -75,4 +80,5 @@ throw_range = 7 max_amount = 60 origin_tech = "material=1" + turf_type = /turf/simulated/floor/mineral/bananium diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index c44038b6638..e33991a7186 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -1,10 +1,20 @@ -/* Diffrent misc types of tiles +/* Diffrent misc types of tiles & the tile prototype * Contains: + Tile * Grass * Wood * Carpet */ +/* + * Tile + */ +/obj/item/stack/tile + name = "broken tile" + singular_name = "broken tile" + desc = "A broken tile. This should not exist." + var/turf_type = null + /* * Grass */ @@ -20,6 +30,7 @@ throw_range = 7 max_amount = 60 origin_tech = "biotech=1" + turf_type = /turf/simulated/floor/grass /* * Wood @@ -36,6 +47,8 @@ throw_range = 7 max_amount = 60 origin_tech = "biotech=1" + turf_type = /turf/simulated/floor/wood + /* * Carpets */ @@ -50,3 +63,4 @@ throw_speed = 3 throw_range = 7 max_amount = 60 + turf_type = /turf/simulated/floor/carpet diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 22ba45d66fa..a075d11a87d 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -12,22 +12,14 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," "ironsand6", "ironsand7", "ironsand8", "ironsand9", "ironsand10", "ironsand11", "ironsand12", "ironsand13", "ironsand14", "ironsand15") -var/list/plating_icons = list("plating","platingdmg1","platingdmg2","platingdmg3","asteroid","asteroid_dug", - "ironsand1", "ironsand2", "ironsand3", "ironsand4", "ironsand5", "ironsand6", "ironsand7", - "ironsand8", "ironsand9", "ironsand10", "ironsand11", - "ironsand12", "ironsand13", "ironsand14", "ironsand15") -var/list/wood_icons = list("wood","wood-broken") -var/list/gold_icons = list("gold","gold_dam") -var/list/silver_icons = list("silver","silver_dam") -var/list/plasma_icons = list("plasma","plasma_dam") -var/list/diamond_icons = list("diamond","diamond_dam") -var/list/uranium_icons = list("uranium","uranium_dam") -var/list/bananium_icons = list("bananium","bananium_dam") - /turf/simulated/floor - - //Note to coders, the 'intact' var can no longer be used to determine if the floor is a plating or not. - //Use the is_plating(), is_plasteel_floor() and is_light_floor() procs instead. --Errorage + //NOTE: Floor code has been refactored, many procs were removed + //using intact should be safe, you can also use istype + //also worhy of note: floor_tile is now a path, and not a tile obj + //future improvements: + //- move fancy_update() to a new /turf/simulated/floor/fancy + //- move the default floor to /turf/simulated/floor/plasteel + //- unsnowflake the light floors somehow name = "floor" icon = 'icons/turf/floors.dmi' icon_state = "floor" @@ -36,13 +28,14 @@ var/list/bananium_icons = list("bananium","bananium_dam") var/icon_plating = "plating" thermal_conductivity = 0.040 heat_capacity = 10000 + intact = 1 var/lava = 0 var/broken = 0 var/burnt = 0 - var/mineral = "metal" - var/floortype = "metal" - var/obj/item/stack/tile/floor_tile = new/obj/item/stack/tile/plasteel - + var/floor_tile = /obj/item/stack/tile/plasteel + var/obj/item/stack/tile/builtin_tile = null //needed for performance reasons when the singularity rips off floor tiles + var/list/broken_states = list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5") + var/list/burnt_states = list() /turf/simulated/floor/New() ..() @@ -50,6 +43,8 @@ var/list/bananium_icons = list("bananium","bananium_dam") icon_regular_floor = "floor" else icon_regular_floor = icon_state + if(floor_tile) + builtin_tile = new floor_tile //turf/simulated/floor/CanPass(atom/movable/mover, turf/target, height=0) // if ((istype(mover, /obj/machinery/vehicle) && !(src.burnt))) @@ -58,7 +53,6 @@ var/list/bananium_icons = list("bananium","bananium_dam") // return ..() /turf/simulated/floor/ex_act(severity) - //set src in oview(1) switch(severity) if(1.0) src.ChangeTurf(/turf/space) @@ -85,506 +79,92 @@ var/list/bananium_icons = list("bananium","bananium_dam") /turf/simulated/floor/blob_act() return -turf/simulated/floor/proc/update_icon() +/turf/simulated/floor/proc/update_icon() if(lava) - return + return 0 else if(is_plasteel_floor()) if(!broken && !burnt) icon_state = icon_regular_floor - else if(is_plating()) - if(!broken && !burnt) - icon_state = icon_plating //Because asteroids are 'platings' too. - else if(is_light_floor()) - var/obj/item/stack/tile/light/T = floor_tile - if(T.on) - switch(T.state) - if(0) - icon_state = "light_on" - SetLuminosity(1) - if(1) - var/num = pick("1","2","3","4") - icon_state = "light_on_flicker[num]" - SetLuminosity(1) - if(2) - icon_state = "light_on_broken" - SetLuminosity(1) - if(3) - icon_state = "light_off" - SetLuminosity(0) - else - SetLuminosity(0) - icon_state = "light_off" - else if(is_grass_floor()) - if(!broken && !burnt) - if(!(icon_state in list("grass1","grass2","grass3","grass4"))) - icon_state = "grass[pick("1","2","3","4")]" - else if(is_carpet_floor()) - if(!broken && !burnt) - if(icon_state == "carpetsymbol") //le snowflake :^) - return - - var/connectdir = 0 - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - if(FF.is_carpet_floor()) - connectdir |= direction - - //Check the diagonal connections for corners, where you have, for example, connections both north and east. In this case it checks for a north-east connection to determine whether to add a corner marker or not. - var/diagonalconnect = 0 //1 = NE; 2 = SE; 4 = NW; 8 = SW - - //Northeast - if(connectdir & NORTH && connectdir & EAST) - if(istype(get_step(src,NORTHEAST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,NORTHEAST) - if(FF.is_carpet_floor()) - diagonalconnect |= 1 - - //Southeast - if(connectdir & SOUTH && connectdir & EAST) - if(istype(get_step(src,SOUTHEAST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,SOUTHEAST) - if(FF.is_carpet_floor()) - diagonalconnect |= 2 - - //Northwest - if(connectdir & NORTH && connectdir & WEST) - if(istype(get_step(src,NORTHWEST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,NORTHWEST) - if(FF.is_carpet_floor()) - diagonalconnect |= 4 - - //Southwest - if(connectdir & SOUTH && connectdir & WEST) - if(istype(get_step(src,SOUTHWEST),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,SOUTHWEST) - if(FF.is_carpet_floor()) - diagonalconnect |= 8 - - icon_state = "carpet[connectdir]-[diagonalconnect]" - - else if(is_wood_floor()) - if(!broken && !burnt) - if( !(icon_state in wood_icons) ) - icon_state = "wood" - //world << "[icon_state]y's got [icon_state]" - - else if(is_gold_floor()) - if(!broken && !burnt) - if( !(icon_state in gold_icons) ) - icon_state = "gold" - - else if(is_silver_floor()) - if(!broken && !burnt) - if( !(icon_state in silver_icons) ) - icon_state = "silver" - - else if(is_plasma_floor()) - if(!broken && !burnt) - if( !(icon_state in plasma_icons) ) - icon_state = "plasma" - - else if(is_uranium_floor()) - if(!broken && !burnt) - if( !(icon_state in uranium_icons) ) - icon_state = "uranium" - - else if(is_diamond_floor()) - if(!broken && !burnt) - if( !(icon_state in diamond_icons) ) - icon_state = "diamond" - - else if(is_bananium_floor()) - if(!broken && !burnt) - if( !(icon_state in bananium_icons) ) - icon_state = "bananium" - - spawn(1) - if(istype(src,/turf/simulated/floor)) //Was throwing runtime errors due to a chance of it changing to space halfway through. - if(air) - update_visuals(air) - -/turf/simulated/floor/return_siding_icon_state() - ..() - if(is_grass_floor()) - var/dir_sum = 0 - for(var/direction in cardinal) - var/turf/T = get_step(src,direction) - if(!(T.is_grass_floor())) - dir_sum += direction - if(dir_sum) - return "wood_siding[dir_sum]" - else - return 0 - + return 0 + if(air) + update_visuals(air) + return 1 /turf/simulated/floor/attack_paw(mob/user as mob) return src.attack_hand(user) -/turf/simulated/floor/attack_hand(mob/user as mob) - if (is_light_floor()) - var/obj/item/stack/tile/light/T = floor_tile - T.on = !T.on - update_icon() - ..() - /turf/simulated/floor/proc/gets_drilled() return -/turf/simulated/floor/proc/break_tile_to_plating() - if(!is_plating()) - make_plating() - break_tile() - /turf/simulated/floor/is_plasteel_floor() - if(istype(floor_tile, /obj/item/stack/tile/plasteel)) + if(ispath(floor_tile, /obj/item/stack/tile/plasteel)) return 1 else return 0 -/turf/simulated/floor/is_light_floor() - if(istype(floor_tile, /obj/item/stack/tile/light)) - return 1 - else - return 0 +//updates neighboring carpet & grass +/turf/simulated/floor/proc/fancy_update(fancy_type) + for(var/direction in list(1,2,4,8,5,6,9,10)) + if(istype(get_step(src,direction), fancy_type)) + var/turf/simulated/floor/FF = get_step(src,direction) + FF.update_icon() -/turf/simulated/floor/is_grass_floor() - if(istype(floor_tile, /obj/item/stack/tile/grass)) - return 1 - else - return 0 - -/turf/simulated/floor/is_wood_floor() - if(istype(floor_tile, /obj/item/stack/tile/wood)) - return 1 - else - return 0 - -/turf/simulated/floor/is_gold_floor() - if(istype(floor_tile, /obj/item/stack/tile/mineral/gold)) - return 1 - else - return 0 - -/turf/simulated/floor/is_silver_floor() - if(istype(floor_tile, /obj/item/stack/tile/mineral/silver)) - return 1 - else - return 0 - -/turf/simulated/floor/is_plasma_floor() - if(istype(floor_tile, /obj/item/stack/tile/mineral/plasma)) - return 1 - else - return 0 - -/turf/simulated/floor/is_uranium_floor() - if(istype(floor_tile, /obj/item/stack/tile/mineral/uranium)) - return 1 - else - return 0 - -/turf/simulated/floor/is_diamond_floor() - if(istype(floor_tile, /obj/item/stack/tile/mineral/diamond)) - return 1 - else - return 0 - -/turf/simulated/floor/is_bananium_floor() - if(istype(floor_tile, /obj/item/stack/tile/mineral/bananium)) - return 1 - else - return 0 - -/turf/simulated/floor/is_carpet_floor() - if(istype(floor_tile, /obj/item/stack/tile/carpet)) - return 1 - else - return 0 - -/turf/simulated/floor/is_plating() - if(!floor_tile) - return 1 - return 0 +/turf/simulated/floor/proc/break_tile_to_plating() + var/turf/simulated/floor/plating/T = make_plating() + T.break_tile() /turf/simulated/floor/proc/break_tile() - if(istype(src,/turf/simulated/floor/engine)) return - if(istype(src,/turf/simulated/floor/mech_bay_recharge_floor)) - src.ChangeTurf(/turf/simulated/floor/plating) - if(broken) return - if(is_plasteel_floor()) - src.icon_state = "damaged[pick(1,2,3,4,5)]" - broken = 1 - else if(is_light_floor()) - src.icon_state = "light_broken" - broken = 1 - else if(is_plating()) - src.icon_state = "platingdmg[pick(1,2,3)]" - broken = 1 - else if(is_wood_floor()) - src.icon_state = "wood-broken" - broken = 1 - else if(is_carpet_floor()) - src.icon_state = "carpet-broken" - broken = 1 - else if(is_grass_floor()) - src.icon_state = "sand[pick("1","2","3")]" - broken = 1 - else if(is_gold_floor()) - src.icon_state = "gold_dam" - broken = 1 - else if(is_silver_floor()) - src.icon_state = "silver_dam" - broken = 1 - else if(is_diamond_floor()) - src.icon_state = "diamond_dam" - broken = 1 - else if(is_bananium_floor()) - src.icon_state = "bananium_dam" - broken = 1 - else if(is_uranium_floor()) - src.icon_state = "uranium_dam" - broken = 1 - else if(is_plasma_floor()) - src.icon_state = "plasma_dam" - broken = 1 + if(broken) + return + icon_state = pick(broken_states) + broken = 1 /turf/simulated/floor/proc/burn_tile() - if(istype(src,/turf/simulated/floor/engine)) return - if(istype(src,/turf/simulated/floor/plating/asteroid/airless)) return//Asteroid tiles don't burn - if(broken || burnt) return - if(is_plasteel_floor()) - src.icon_state = "damaged[pick(1,2,3,4,5)]" - burnt = 1 - else if(is_plasteel_floor()) - src.icon_state = "floorscorched[pick(1,2)]" - burnt = 1 - else if(is_plating()) - src.icon_state = "panelscorched" - burnt = 1 - else if(is_wood_floor()) - src.icon_state = "wood-broken" - burnt = 1 - else if(is_carpet_floor()) - src.icon_state = "carpet-broken" - burnt = 1 - else if(is_grass_floor()) - src.icon_state = "sand[pick("1","2","3")]" - burnt = 1 - else if(is_gold_floor()) - src.icon_state = "gold_dam" - burnt = 1 - else if(is_silver_floor()) - src.icon_state = "silver_dam" - burnt = 1 - else if(is_diamond_floor()) - src.icon_state = "diamond_dam" - burnt = 1 - else if(is_bananium_floor()) - src.icon_state = "bananium_dam" - burnt = 1 - else if(is_uranium_floor()) - src.icon_state = "uranium_dam" - burnt = 1 - -//This proc will delete the floor_tile and the update_iocn() proc will then change the icon_state of the turf -//This proc auto corrects the grass tiles' siding. -/turf/simulated/floor/proc/make_plating() - if(istype(src,/turf/simulated/floor/engine)) return - - if(is_grass_floor()) - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding get updated properly - else if(is_carpet_floor()) - spawn(5) - if(src) - for(var/direction in list(1,2,4,8,5,6,9,10)) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding get updated properly - - if (icon_plating) - icon_state = icon_plating - else - icon_state = "plating" //Nothing is defined, so just make it plating - icon_plating = "plating" - if(floor_tile) - qdel(floor_tile) - - SetLuminosity(0) - floor_tile = null - intact = 0 - broken = 0 - burnt = 0 - - update_icon() - levelupdate() - -//This proc will make the turf a plasteel floor tile. The expected argument is the tile to make the turf with -//If none is given it will make a new object. dropping or unequipping must be handled before or after calling -//this proc. -/turf/simulated/floor/proc/make_plasteel_floor(var/obj/item/stack/tile/plasteel/T = null) - broken = 0 - burnt = 0 - intact = 1 - SetLuminosity(0) - if(T) - if(istype(T, /obj/item/stack/tile/plasteel)) - floor_tile = T - if (icon_regular_floor) - icon_state = icon_regular_floor - else - icon_state = "floor" - icon_regular_floor = "floor" - update_icon() - levelupdate() - return - //if you gave a valid parameter, it won't get this far. - floor_tile = new/obj/item/stack/tile/plasteel - icon_state = "floor" - icon_regular_floor = "floor" - - update_icon() - levelupdate() - -/turf/simulated/floor/proc/make_floor(floor_tile, T) - broken = 0 - burnt = 0 - intact = 1 - if(T) - floor_tile = T - update_icon() - levelupdate() + if(broken || burnt) return -//This proc will make the turf a light floor tile. The expected argument is the tile to make the turf with -//If none is given it will make a new object. dropping or unequipping must be handled before or after calling -//this proc. + if(is_plasteel_floor()) + icon_state = "floorscorched[pick(1,2)]" + else if(burnt_states) + icon_state = pick(burnt_states) + else + icon_state = pick(broken_states) + burnt = 1 + +/turf/simulated/floor/proc/make_plating() + return make_floor(/turf/simulated/floor/plating) + +//wrapper for ChangeTurf that handles flooring properly +/turf/simulated/floor/proc/make_floor(turf/simulated/floor/T as turf) + SetLuminosity(0) + var/old_type = type + var/old_icon = icon_regular_floor + var/old_dir = dir + var/turf/simulated/floor/W = ChangeTurf(T) + W.icon_regular_floor = old_icon + W.dir = old_dir + W.update_icon() + W.fancy_update(old_type) + return W /turf/simulated/floor/attackby(obj/item/C as obj, mob/user as mob) - if(!C || !user) - return 0 - - if(istype(C,/obj/item/weapon/light/bulb)) //only for light tiles - if(is_light_floor()) - var/obj/item/stack/tile/light/T = floor_tile - if(T.state) - user.drop_item() - qdel(C) - T.state = C //fixing it by bashing it with a light bulb, fun eh? - update_icon() - user << "You replace the light bulb." - else - user << "The lightbulb seems fine, no need to replace it." - - if(istype(C, /obj/item/weapon/crowbar) && (!(is_plating()))) + return 1 + if(istype(C, /obj/item/weapon/crowbar)) if(broken || burnt) + broken = 0 + burnt = 0 user << "You remove the broken plating." else - if(is_wood_floor()) + if(istype(src, /turf/simulated/floor/wood)) user << "You forcefully pry off the planks, destroying them in the process." else - user << "You remove the [floor_tile.name]." - new floor_tile.type(src) - + user << "You remove the floor tile." + var/obj/item/stack/tile/T = new floor_tile(src) + if(istype(T, /obj/item/stack/tile/light)) + var/obj/item/stack/tile/light/L = T + var/turf/simulated/floor/light/F = src + L.state = F.state make_plating() playsound(src, 'sound/items/Crowbar.ogg', 80, 1) - - return - - if(istype(C, /obj/item/weapon/screwdriver) && is_wood_floor()) - if(broken || burnt) - return - else - if(is_wood_floor()) - user << "You unscrew the planks." - new floor_tile.type(src) - - make_plating() - playsound(src, 'sound/items/Screwdriver.ogg', 80, 1) - - return - - if(istype(C, /obj/item/stack/rods)) - var/obj/item/stack/rods/R = C - if (is_plating()) - if (R.get_amount() < 2) - user << "You need two rods to make a reinforced floor." - return - else - user << "Reinforcing the floor..." - if(do_after(user, 30)) - if (R.get_amount() >= 2 && is_plating()) - ChangeTurf(/turf/simulated/floor/engine) - playsound(src, 'sound/items/Deconstruct.ogg', 80, 1) - R.use(2) - user << "You have reinforced the floor." - return - else - user << "You must remove the plating first." - return - - if(istype(C, /obj/item/stack/tile)) - if(is_plating()) - if(!broken && !burnt) - var/obj/item/stack/tile/T = C - if(istype(T, /obj/item/stack/tile/plasteel/cyborg)) - floor_tile = new /obj/item/stack/tile/plasteel - else - floor_tile = new T.type - intact = 1 - if(istype(T,/obj/item/stack/tile/light)) - var/obj/item/stack/tile/light/L = T - var/obj/item/stack/tile/light/F = floor_tile - F.state = L.state - F.on = L.on - if(istype(T,/obj/item/stack/tile/grass)) - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding gets updated properly - else if(istype(T,/obj/item/stack/tile/carpet)) - for(var/direction in list(1,2,4,8,5,6,9,10)) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding gets updated properly - T.use(1) - update_icon() - levelupdate() - playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) - else - user << "This section is too damaged to support a tile. Use a welder to fix the damage." - - - if(istype(C, /obj/item/stack/cable_coil)) - if(is_plating()) - var/obj/item/stack/cable_coil/coil = C - for(var/obj/structure/cable/LC in src) - if((LC.d1==0)||(LC.d2==0)) - LC.attackby(C,user) - return - coil.turf_place(src, user) - else - user << "You must remove the plating first." - - if(istype(C, /obj/item/weapon/shovel)) - if(is_grass_floor()) - new /obj/item/weapon/ore/glass(src) - new /obj/item/weapon/ore/glass(src) //Make some sand if you shovel grass - user << "You shovel the grass." - make_plating() - else - user << "You cannot shovel this." - - if(istype(C, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/welder = C - if(welder.isOn() && (is_plating())) - if(broken || burnt) - if(welder.remove_fuel(0,user)) - user << "You fix some dents on the broken plating." - playsound(src, 'sound/items/Welder.ogg', 80, 1) - icon_state = icon_plating - burnt = 0 - broken = 0 + return 1 + return 0 diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm new file mode 100644 index 00000000000..fb9b6b7caac --- /dev/null +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -0,0 +1,115 @@ +/* In this file: + * Wood floor + * Grass floor + * Carpet floor + */ + +/turf/simulated/floor/wood + name = "floor" + icon_state = "wood" + floor_tile = /obj/item/stack/tile/wood + broken_states = list("wood-broken", "wood-broken2", "wood-broken3", "wood-broken4", "wood-broken5", "wood-broken6", "wood-broken7") + +/turf/simulated/floor/wood/attackby(obj/item/C as obj, mob/user as mob) + if(..()) + return + if(istype(C, /obj/item/weapon/screwdriver)) + if(broken || burnt) + return + user << "You unscrew the planks." + new floor_tile(src) + make_plating() + playsound(src, 'sound/items/Screwdriver.ogg', 80, 1) + return + +/turf/simulated/floor/grass + name = "Grass patch" + icon_state = "grass1" + floor_tile = /obj/item/stack/tile/grass + broken_states = list("sand1", "sand2", "sand3") + +/turf/simulated/floor/grass/New() + ..() + icon_state = "grass[pick("1","2","3","4")]" + spawn(1) + if(src) + update_icon() + fancy_update(type) + +/turf/simulated/floor/grass/attackby(obj/item/C as obj, mob/user as mob) + if(..()) + return + if(istype(C, /obj/item/weapon/shovel)) + new /obj/item/weapon/ore/glass(src) + new /obj/item/weapon/ore/glass(src) //Make some sand if you shovel grass + user << "You shovel the grass." + make_plating() + +/turf/simulated/floor/grass/return_siding_icon_state() + ..() + var/dir_sum = 0 + for(var/direction in cardinal) + if(!istype(get_step(src,direction), /turf/simulated/floor/grass)) + dir_sum += direction + if(dir_sum) + return "wood_siding[dir_sum]" + else + return 0 + +/turf/simulated/floor/carpet + name = "Carpet" + icon_state = "carpet" + floor_tile = /obj/item/stack/tile/carpet + broken_states = list("carpet-broken") + +/turf/simulated/floor/carpet/New() + ..() + spawn(1) + if(src) + update_icon() + fancy_update(type) + +/turf/simulated/floor/carpet/update_icon() + if(!broken && !burnt) + if(icon_state == "carpetsymbol") //le snowflake :^) + return + + var/connectdir = 0 + for(var/direction in cardinal) + if(istype(get_step(src,direction),/turf/simulated/floor/carpet)) + var/turf/simulated/floor/carpet/FF = get_step(src,direction) + if(istype(FF, /turf/simulated/floor/carpet)) + connectdir |= direction + + //Check the diagonal connections for corners, where you have, for example, connections both north and east. In this case it checks for a north-east connection to determine whether to add a corner marker or not. + var/diagonalconnect = 0 //1 = NE; 2 = SE; 4 = NW; 8 = SW + + //Northeast + if(connectdir & NORTH && connectdir & EAST) + if(istype(get_step(src,NORTHEAST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,NORTHEAST) + if(istype(FF, /turf/simulated/floor/carpet)) + diagonalconnect |= 1 + + //Southeast + if(connectdir & SOUTH && connectdir & EAST) + if(istype(get_step(src,SOUTHEAST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,SOUTHEAST) + if(istype(FF, /turf/simulated/floor/carpet)) + diagonalconnect |= 2 + + //Northwest + if(connectdir & NORTH && connectdir & WEST) + if(istype(get_step(src,NORTHWEST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,NORTHWEST) + if(istype(FF, /turf/simulated/floor/carpet)) + diagonalconnect |= 4 + + //Southwest + if(connectdir & SOUTH && connectdir & WEST) + if(istype(get_step(src,SOUTHWEST),/turf/simulated/floor)) + var/turf/simulated/floor/FF = get_step(src,SOUTHWEST) + if(istype(FF, /turf/simulated/floor/carpet)) + diagonalconnect |= 8 + + icon_state = "carpet[connectdir]-[diagonalconnect]" diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm new file mode 100644 index 00000000000..2b0296246d9 --- /dev/null +++ b/code/game/turfs/simulated/floor/light_floor.dm @@ -0,0 +1,56 @@ +/* In this file: + * + * Light floor + */ + +/turf/simulated/floor/light + name = "Light floor" + luminosity = 5 + icon_state = "light_on" + floor_tile = /obj/item/stack/tile/light + broken_states = list("light-broken") + var/on = 1 + var/state //0 = fine, 1 = flickering, 2 = breaking, 3 = broken + +/turf/simulated/floor/light/New() + ..() + update_icon() + +/turf/simulated/floor/light/update_icon() + if(on) + switch(state) + if(0) + icon_state = "light_on" + SetLuminosity(1) + if(1) + var/num = pick("1","2","3","4") + icon_state = "light_on_flicker[num]" + SetLuminosity(1) + if(2) + icon_state = "light_on_broken" + SetLuminosity(1) + if(3) + icon_state = "light_off" + SetLuminosity(0) + else + SetLuminosity(0) + icon_state = "light_off" + +/turf/simulated/floor/light/attack_hand(mob/user as mob) + on = !on + update_icon() + ..() + +/turf/simulated/floor/light/attackby(obj/item/C as obj, mob/user as mob) + if(..()) + return + if(istype(C,/obj/item/weapon/light/bulb)) //only for light tiles + if(state) + user.drop_item() + qdel(C) + state = 0 //fixing it by bashing it with a light bulb, fun eh? + update_icon() + user << "You replace the light bulb." + else + user << "The lightbulb seems fine, no need to replace it." + return diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm new file mode 100644 index 00000000000..29242623f91 --- /dev/null +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -0,0 +1,64 @@ +/* In this file: + * + * Plasma floor + * Gold floor + * Silver floor + * Bananium floor + * Diamond floor + * Uranium floor + */ + +/turf/simulated/floor/mineral + name = "mineral floor" + icon_state = "" + var/list/icons = list() + +/turf/simulated/floor/mineral/New() + ..() + broken_states = list("[initial(icon_state)]_dam") + +/turf/simulated/floor/mineral/update_icon() + if(!broken && !burnt) + if( !(icon_state in icons) ) + icon_state = initial(icon_state) + +/turf/simulated/floor/mineral/plasma + name = "plasma floor" + icon_state = "plasma" + floor_tile = /obj/item/stack/tile/mineral/plasma + icons = list("plasma","plasma_dam") + +/turf/simulated/floor/mineral/gold + name = "gold floor" + icon_state = "gold" + floor_tile = /obj/item/stack/tile/mineral/gold + icons = list("gold","gold_dam") + +/turf/simulated/floor/mineral/silver + name = "silver floor" + icon_state = "silver" + floor_tile = /obj/item/stack/tile/mineral/silver + icons = list("silver","silver_dam") + +/turf/simulated/floor/mineral/bananium + name = "bananium floor" + icon_state = "bananium" + floor_tile = /obj/item/stack/tile/mineral/bananium + icons = list("bananium","bananium_dam") + +/turf/simulated/floor/mineral/bananium/airless + oxygen = 0.01 + nitrogen = 0.01 + temperature = TCMB + +/turf/simulated/floor/mineral/diamond + name = "diamond floor" + icon_state = "diamond" + floor_tile = /obj/item/stack/tile/mineral/diamond + icons = list("diamond","diamond_dam") + +/turf/simulated/floor/mineral/uranium + name = "uranium floor" + icon_state = "uranium" + floor_tile = /obj/item/stack/tile/mineral/uranium + icons = list("uranium","uranium_dam") \ No newline at end of file diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm new file mode 100644 index 00000000000..b5ebf04f44e --- /dev/null +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -0,0 +1,93 @@ +/* In this file: + * + * Commemorative Plaque + * Vault floor + * Vault wall (why) + * Blue grid + * Green grid + * Shuttle floor + * Beach + * Ocean + * Iron Sand + * Snow + */ + +/turf/simulated/floor/goonplaque + name = "Commemorative Plaque" + icon_state = "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/vault + icon_state = "rockvault" + +/turf/simulated/wall/vault + icon_state = "rockvault" + +/turf/simulated/floor/bluegrid + icon = 'icons/turf/floors.dmi' + icon_state = "bcircuit" + +/turf/simulated/floor/greengrid + icon = 'icons/turf/floors.dmi' + icon_state = "gcircuit" + + +/turf/simulated/shuttle + name = "shuttle" + icon = 'icons/turf/shuttle.dmi' + thermal_conductivity = 0.05 + heat_capacity = 0 + layer = 2 + +/turf/simulated/shuttle/wall + name = "wall" + icon_state = "wall1" + opacity = 1 + density = 1 + blocks_air = 1 + +/turf/simulated/shuttle/floor + name = "floor" + icon_state = "floor" + +/turf/simulated/shuttle/plating + name = "plating" + icon = 'icons/turf/floors.dmi' + icon_state = "plating" + +/turf/simulated/shuttle/floor4 // Added this floor tile so that I have a seperate turf to check in the shuttle -- Polymorph + name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle. + icon_state = "floor4" + +/turf/simulated/floor/beach + name = "Beach" + icon = 'icons/misc/beach.dmi' + +/turf/simulated/floor/beach/ex_act(severity) + return + +/turf/simulated/floor/beach/sand + name = "Sand" + icon_state = "sand" + +/turf/simulated/floor/beach/coastline + name = "Coastline" + icon = 'icons/misc/beach2.dmi' + icon_state = "sandwater" + +/turf/simulated/floor/beach/water + name = "Water" + icon_state = "water" + +/turf/simulated/floor/plating/ironsand/New() + ..() + name = "Iron Sand" + icon_state = "ironsand[rand(1,15)]" + +/turf/simulated/floor/plating/snow + name = "snow" + icon = 'icons/turf/snow.dmi' + icon_state = "snow" + +/turf/simulated/floor/plating/snow/ex_act(severity) + return diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm new file mode 100644 index 00000000000..827c8922c8e --- /dev/null +++ b/code/game/turfs/simulated/floor/plating.dm @@ -0,0 +1,145 @@ +/* In this file: + * + * Plating + * Airless + * Airless plating + * Engine floor + */ +// note that plating and engine floor do not call their parent attackby, unlike other flooring +// this is done in order to avoid inheriting the crowbar attackby + +/turf/simulated/floor/plating + name = "plating" + icon_state = "plating" + floor_tile = null + intact = 0 + broken_states = list("platingdmg1", "platingdmg2", "platingdmg3") + burnt_states = list("panelscorched") + +/turf/simulated/floor/plating/New() + ..() + icon_plating = icon_state + +/turf/simulated/floor/plating/update_icon() + if(..()) + return + if(!broken && !burnt) + icon_state = icon_plating //Because asteroids are 'platings' too. + +/turf/simulated/floor/plating/attackby(obj/item/C as obj, mob/user as mob) + if(!C || !user) + return + if(istype(C, /obj/item/stack/rods)) + var/obj/item/stack/rods/R = C + if (R.get_amount() < 2) + user << "You need two rods to make a reinforced floor." + return + else + user << "Reinforcing the floor..." + if(do_after(user, 30)) + if (R.get_amount() >= 2) + ChangeTurf(/turf/simulated/floor/engine) + playsound(src, 'sound/items/Deconstruct.ogg', 80, 1) + R.use(2) + user << "You have reinforced the floor." + return + else if(istype(C, /obj/item/stack/tile)) + if(!broken && !burnt) + var/obj/item/stack/tile/W = C + var/turf/simulated/floor/T = make_floor(W.turf_type) + if(istype(W,/obj/item/stack/tile/light)) + var/obj/item/stack/tile/light/L = W + var/turf/simulated/floor/light/F = T + F.state = L.state + W.use(1) + playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) + else + user << "This section is too damaged to support a tile. Use a welder to fix the damage." + else if(istype(C, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/coil = C + for(var/obj/structure/cable/LC in src) + if((LC.d1==0)||(LC.d2==0)) + LC.attackby(C,user) + return + coil.turf_place(src, user) + else if(istype(C, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/welder = C + if( welder.isOn() && (broken || burnt) ) + if(welder.remove_fuel(0,user)) + user << "You fix some dents on the broken plating." + playsound(src, 'sound/items/Welder.ogg', 80, 1) + icon_state = icon_plating + burnt = 0 + broken = 0 + +/turf/simulated/floor/plating/airless + icon_state = "plating" + name = "airless plating" + oxygen = 0.01 + nitrogen = 0.01 + temperature = TCMB + +/turf/simulated/floor/plating/airless/New() + ..() + name = "plating" + +/turf/simulated/floor/engine + name = "reinforced floor" + icon_state = "engine" + thermal_conductivity = 0.025 + heat_capacity = 325000 + +/turf/simulated/floor/engine/break_tile() + return //unbreakable + +/turf/simulated/floor/engine/burn_tile() + return //unburnable + +/turf/simulated/floor/engine/make_plating() + return //unplateable + +/turf/simulated/floor/engine/attackby(obj/item/weapon/C as obj, mob/user as mob) + if(!C || !user) + return + if(istype(C, /obj/item/weapon/wrench)) + user << "Removing rods..." + playsound(src, 'sound/items/Ratchet.ogg', 80, 1) + if(do_after(user, 30)) + new /obj/item/stack/rods(src, 2) + make_plating() + return + +/turf/simulated/floor/engine/cult + name = "engraved floor" + icon_state = "cult" + +/turf/simulated/floor/engine/n20/New() + ..() + var/datum/gas_mixture/adding = new + var/datum/gas/sleeping_agent/trace_gas = new + + trace_gas.moles = 6000 + adding.trace_gases += trace_gas + adding.temperature = T20C + + assume_air(adding) + +/turf/simulated/floor/engine/vacuum + name = "vacuum floor" + icon_state = "engine" + oxygen = 0 + nitrogen = 0.001 + temperature = TCMB + + + +/turf/simulated/floor/airless + icon_state = "floor" + name = "airless floor" + oxygen = 0.01 + nitrogen = 0.01 + temperature = TCMB + +/turf/simulated/floor/airless/New() + ..() + name = "floor" \ No newline at end of file diff --git a/code/game/turfs/simulated/floor_mineral.dm b/code/game/turfs/simulated/floor_mineral.dm deleted file mode 100644 index f281fd6c471..00000000000 --- a/code/game/turfs/simulated/floor_mineral.dm +++ /dev/null @@ -1,53 +0,0 @@ - -/turf/simulated/floor/mineral - name = "mineral floor" - icon_state = "" - var/last_event = 0 - var/active = null - -/turf/simulated/floor/mineral/plasma - name = "plasma floor" - icon_state = "plasma" - mineral = "plasma" - floortype = "plasma" - floor_tile = new/obj/item/stack/tile/mineral/plasma - -/turf/simulated/floor/mineral/gold - name = "gold floor" - icon_state = "gold" - mineral = "gold" - floortype = "gold" - floor_tile = new/obj/item/stack/tile/mineral/gold - -/turf/simulated/floor/mineral/silver - name = "silver floor" - icon_state = "silver" - mineral = "silver" - floortype = "silver" - floor_tile = new/obj/item/stack/tile/mineral/silver - -/turf/simulated/floor/mineral/bananium - name = "bananium floor" - icon_state = "bananium" - mineral = "clown" - floortype = "clown" - floor_tile = new/obj/item/stack/tile/mineral/bananium - -/turf/simulated/floor/mineral/bananium/airless - oxygen = 0.01 - nitrogen = 0.01 - temperature = TCMB - -/turf/simulated/floor/mineral/diamond - name = "diamond floor" - icon_state = "diamond" - mineral = "diamond" - floortype = "diamond" - floor_tile = new/obj/item/stack/tile/mineral/diamond - -/turf/simulated/floor/mineral/uranium - name = "uranium floor" - icon_state = "uranium" - mineral = "uranium" - floortype = "uranium" - floor_tile = new/obj/item/stack/tile/mineral/uranium \ No newline at end of file diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm deleted file mode 100644 index b446d3f03c7..00000000000 --- a/code/game/turfs/simulated/floor_types.dm +++ /dev/null @@ -1,208 +0,0 @@ -/turf/simulated/floor/airless - icon_state = "floor" - name = "airless floor" - oxygen = 0.01 - nitrogen = 0.01 - temperature = TCMB - -/turf/simulated/floor/airless/New() - ..() - name = "floor" - -/turf/simulated/floor/light - name = "Light floor" - luminosity = 5 - icon_state = "light_on" - floor_tile = new/obj/item/stack/tile/light - -/turf/simulated/floor/light/New() - floor_tile.New() //I guess New() isn't run on objects spawned without the definition of a turf to house them, ah well. - var/n = name //just in case commands rename it in the ..() call - ..() - spawn(4) - if(src) - update_icon() - name = n - - - -/turf/simulated/floor/wood - name = "floor" - icon_state = "wood" - floor_tile = new/obj/item/stack/tile/wood - -/turf/simulated/floor/goonplaque - name = "Commemorative Plaque" - icon_state = "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/vault - icon_state = "rockvault" - -/turf/simulated/wall/vault - icon_state = "rockvault" - -/turf/simulated/floor/engine - name = "reinforced floor" - icon_state = "engine" - thermal_conductivity = 0.025 - heat_capacity = 325000 - -/turf/simulated/floor/engine/attackby(obj/item/weapon/C as obj, mob/user as mob) - if(!C) - return - if(!user) - return - if(istype(C, /obj/item/weapon/wrench)) - user << "Removing rods..." - playsound(src, 'sound/items/Ratchet.ogg', 80, 1) - if(do_after(user, 30)) - new /obj/item/stack/rods(src, 2) - ChangeTurf(/turf/simulated/floor) - var/turf/simulated/floor/F = src - F.make_plating() - return - -/turf/simulated/floor/engine/cult - name = "engraved floor" - icon_state = "cult" - - -/turf/simulated/floor/engine/n20/New() - ..() - var/datum/gas_mixture/adding = new - var/datum/gas/sleeping_agent/trace_gas = new - - trace_gas.moles = 6000 - adding.trace_gases += trace_gas - adding.temperature = T20C - - assume_air(adding) - -/turf/simulated/floor/engine/vacuum - name = "vacuum floor" - icon_state = "engine" - oxygen = 0 - nitrogen = 0.001 - temperature = TCMB - -/turf/simulated/floor/plating - name = "plating" - icon_state = "plating" - floor_tile = null - intact = 0 - -/turf/simulated/floor/plating/airless - icon_state = "plating" - name = "airless plating" - oxygen = 0.01 - nitrogen = 0.01 - temperature = TCMB - -/turf/simulated/floor/plating/airless/New() - ..() - name = "plating" - -/turf/simulated/floor/bluegrid - icon = 'icons/turf/floors.dmi' - icon_state = "bcircuit" - -/turf/simulated/floor/greengrid - icon = 'icons/turf/floors.dmi' - icon_state = "gcircuit" - - -/turf/simulated/shuttle - name = "shuttle" - icon = 'icons/turf/shuttle.dmi' - thermal_conductivity = 0.05 - heat_capacity = 0 - layer = 2 - -/turf/simulated/shuttle/wall - name = "wall" - icon_state = "wall1" - opacity = 1 - density = 1 - blocks_air = 1 - -/turf/simulated/shuttle/floor - name = "floor" - icon_state = "floor" - -/turf/simulated/shuttle/plating - name = "plating" - icon = 'icons/turf/floors.dmi' - icon_state = "plating" - -/turf/simulated/shuttle/floor4 // Added this floor tile so that I have a seperate turf to check in the shuttle -- Polymorph - name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle. - icon_state = "floor4" - -/turf/simulated/floor/beach - name = "Beach" - icon = 'icons/misc/beach.dmi' - -/turf/simulated/floor/beach/sand - name = "Sand" - icon_state = "sand" - -/turf/simulated/floor/beach/coastline - name = "Coastline" - icon = 'icons/misc/beach2.dmi' - icon_state = "sandwater" - -/turf/simulated/floor/beach/water - name = "Water" - icon_state = "water" - - -/turf/simulated/floor/grass - name = "Grass patch" - icon_state = "grass1" - floor_tile = new/obj/item/stack/tile/grass - -/turf/simulated/floor/grass/New() - floor_tile.New() //I guess New() isn't ran on objects spawned without the definition of a turf to house them, ah well. - icon_state = "grass[pick("1","2","3","4")]" - ..() - spawn(4) - if(src) - update_icon() - for(var/direction in cardinal) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding get updated properly - -/turf/simulated/floor/carpet - name = "Carpet" - icon_state = "carpet" - floor_tile = new/obj/item/stack/tile/carpet - -/turf/simulated/floor/carpet/New() - floor_tile.New() //I guess New() isn't ran on objects spawned without the definition of a turf to house them, ah well. - if(!icon_state) - icon_state = "carpet" - ..() - spawn(4) - if(src) - update_icon() - for(var/direction in list(1,2,4,8,5,6,9,10)) - if(istype(get_step(src,direction),/turf/simulated/floor)) - var/turf/simulated/floor/FF = get_step(src,direction) - FF.update_icon() //so siding get updated properly - - - -/turf/simulated/floor/plating/ironsand/New() - ..() - name = "Iron Sand" - icon_state = "ironsand[rand(1,15)]" - -/turf/simulated/floor/plating/snow - name = "snow" - icon = 'icons/turf/snow.dmi' - icon_state = "snow" - -/turf/simulated/floor/plating/snow/ex_act(severity) - return diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index b8ecd518b05..86a8d0bdd4e 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -41,7 +41,7 @@ qdel(L) playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) user << "You build a floor." - S.build(src) + ChangeTurf(/turf/simulated/floor) else user << "You need one floor tile to build a floor." else @@ -209,4 +209,4 @@ proc/setup_map_transitions() //listamania S.Assign_Destination() /turf/space/singularity_act() - return + return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 9126656a81b..f00b9e16186 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -2,7 +2,6 @@ icon = 'icons/turf/floors.dmi' level = 1.0 - //for floors, use is_plating(), is_plasteel_floor() and is_light_floor() var/intact = 1 //Properties for open tiles (/floor) @@ -94,32 +93,8 @@ loopsanity-- A.HasProximity(M, 1) -/turf/proc/is_plating() - return 0 -/turf/proc/is_asteroid_floor() - return 0 /turf/proc/is_plasteel_floor() return 0 -/turf/proc/is_light_floor() - return 0 -/turf/proc/is_grass_floor() - return 0 -/turf/proc/is_wood_floor() - return 0 -/turf/proc/is_gold_floor() - return 0 -/turf/proc/is_silver_floor() - return 0 -/turf/proc/is_plasma_floor() - return 0 -/turf/proc/is_uranium_floor() - return 0 -/turf/proc/is_bananium_floor() - return 0 -/turf/proc/is_diamond_floor() - return 0 -/turf/proc/is_carpet_floor() - return 0 /turf/proc/return_siding_icon_state() //used for grass floors, which have siding. return 0 @@ -356,4 +331,4 @@ if(O.invisibility == 101) O.singularity_act() ChangeTurf(/turf/space) - return(2) + return(2) diff --git a/code/modules/events/ninja.dm b/code/modules/events/ninja.dm index 09356add7d4..4efc4c100ce 100644 --- a/code/modules/events/ninja.dm +++ b/code/modules/events/ninja.dm @@ -623,7 +623,7 @@ spideros = text2num(return_to)//Maximum length here is 6. Use (return_to, X) to var/mob/living/carbon/human/U = loc if(candrain&&!draining) var/turf/T = U.loc - if(isturf(T) && T.is_plating()) + if(isturf(T) && istype(T, /turf/simulated/floor/plating) attached = locate() in T if(!attached) U << "\red Warning: no exposed cable available." @@ -2747,4 +2747,4 @@ proc/create_ninja_mind(key) Mind.assigned_role = "MODE" Mind.special_role = "Space Ninja" ticker.mode.traitors |= Mind //Adds them to current traitor list. Which is really the extra antagonist list. - return Mind \ No newline at end of file + return Mind diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 5a084218aa1..82ec0a9e4fa 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -490,6 +490,9 @@ // spawn(2) //O updateMineralOverlays() +/turf/simulated/floor/plating/asteroid/burn_tile() + return + /turf/simulated/floor/plating/asteroid/ex_act(severity) switch(severity) if(3.0) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index a6ed6cb06d5..e610c07f1ac 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -692,12 +692,10 @@ var/turf/target - if(istype(T, /turf/simulated/floor)) //intact floor, pop the tile - var/turf/simulated/floor/F = T - if(F.floor_tile) - F.floor_tile.loc = H //It took me a day to figure out this was the right way to do it. - F.floor_tile = null //So it doesn't get deleted in make_plating() - F.make_plating() + if(istype(T, /turf/simulated/floor) && !istype(T, /turf/simulated/floor/plating)) //intact floor, pop the tile + var/turf/simulated/floor/myturf = T + new myturf.floor_tile(T) + myturf.make_plating() if(direction) // direction is specified if(istype(T, /turf/space)) // if ended in space, then range is unlimited diff --git a/tgstation.dme b/tgstation.dme index 32a302e49de..c9c8e882932 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -689,12 +689,15 @@ #include "code\game\turfs\unsimulated.dm" #include "code\game\turfs\simulated\dirtystation.dm" #include "code\game\turfs\simulated\floor.dm" -#include "code\game\turfs\simulated\floor_mineral.dm" -#include "code\game\turfs\simulated\floor_types.dm" #include "code\game\turfs\simulated\walls.dm" #include "code\game\turfs\simulated\walls_mineral.dm" #include "code\game\turfs\simulated\walls_misc.dm" #include "code\game\turfs\simulated\walls_reinforced.dm" +#include "code\game\turfs\simulated\floor\fancy_floor.dm" +#include "code\game\turfs\simulated\floor\light_floor.dm" +#include "code\game\turfs\simulated\floor\mineral_floor.dm" +#include "code\game\turfs\simulated\floor\misc_floor.dm" +#include "code\game\turfs\simulated\floor\plating.dm" #include "code\game\turfs\space\space.dm" #include "code\game\turfs\space\transit.dm" #include "code\game\turfs\unsimulated\beach.dm"