From 41e17aa3136124c2fb62a1d2bd173c001d15fc76 Mon Sep 17 00:00:00 2001 From: "baloh.matevz" Date: Fri, 7 Jan 2011 12:05:33 +0000 Subject: [PATCH] added fire closets to spawn around the station. Each emergency closet has a 1/3 chance of changing to a fire closet. Lots of updates to mining, added satchels which can carry 10 pieces of ore each, they can gather all the ore from a tile at once or one at a time. They can get loaded into ore boxes, which can carry an unlimited amount, currently. Rail cars move much faster now, but demand more processor time, they will eventually get the role of getting loaded from satchels and producing ore boxes. Simply to make it easy to carry around hundreds of pieces of ore. (resubmit) git-svn-id: http://tgstation13.googlecode.com/svn/trunk@799 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/mining.dm | 300 ++++++++++++++++++++---- code/game/objects/closets/emergency.dm | 6 +- code/game/objects/closets/firecloset.dm | 27 ++- icons/obj/mining.dmi | Bin 32335 -> 33297 bytes 4 files changed, 274 insertions(+), 59 deletions(-) diff --git a/code/WorkInProgress/mining.dm b/code/WorkInProgress/mining.dm index 5d4c1bcc46f..85b8f0d7a5f 100644 --- a/code/WorkInProgress/mining.dm +++ b/code/WorkInProgress/mining.dm @@ -10,7 +10,7 @@ icon_state = "captain" music = null -/area/mine/lobby //DO NOT TURN THE SD_LIGHTING STUFF ON FOR SHUTTLES. IT BREAKS THINGS. +/area/mine/lobby name = "Mining station" requires_power = 0 luminosity = 1 @@ -31,6 +31,7 @@ var/mineralAmt = 0 /turf/simulated/asteroid/New() + ..() oxygen = 0.01 nitrogen = 0.01 @@ -143,6 +144,7 @@ var/dug = 0 //0 = has not yet been dug, 1 = has already been dug /turf/simulated/floor/airless/asteroid/New() + ..() if (prob(50)) seedName = pick(list("1","2","3","4")) seedAmt = rand(1,4) @@ -198,6 +200,24 @@ icon = 'Mining.dmi' icon_state = "ore" +/obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/satchel)) + var/obj/item/weapon/satchel/S = W + if (S.mode == 1) + for (var/obj/item/weapon/ore/O in locate(src.x,src.y,src.z)) + if (S.contents.len < S.capacity) + S.contents += O; + else + user << "\blue The satchel is full." + break + user << "\blue You pick up all the ores." + else + if (S.contents.len < S.capacity) + S.contents += src; + else + user << "\blue The satchel is full." + return + /obj/item/weapon/ore/uranium name = "Uranium ore" icon = 'Mining.dmi' @@ -232,6 +252,67 @@ pixel_x = rand(0,16)-8 pixel_y = rand(0,8)-8 +/**********************Ore pile**************************/ + +/obj/item/weapon/ore_pile + name = "Pile of ores" + icon = 'Mining.dmi' + icon_state = "orepile" + +/**********************Satchel**************************/ + +/obj/item/weapon/satchel + icon = 'mining.dmi' + icon_state = "satchel" + name = "Mining Satchel" + var/mode = 0; //0 = pick one at a time, 1 = pick all on tile + var/capacity = 10; //the number of ore pieces it can carry. + +/obj/item/weapon/satchel/attack_self(mob/user as mob) + for (var/obj/item/weapon/ore/O in contents) + contents -= O + O.loc = user.loc + user << "\blue You empty the satchel." + return + +/obj/item/weapon/satchel/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/ore)) + var/obj/item/weapon/ore/O = W + src.contents += O; + return + +/obj/item/weapon/satchel/verb/all_on_tile() + mode = 1 + return + +/obj/item/weapon/satchel/verb/one_at_a_time() + mode = 0 + return + +/**********************Ore box**************************/ + +/obj/ore_box + icon = 'mining.dmi' + icon_state = "orebox" + name = "A box of ores" + desc = "It's heavy" + density = 1 + +/obj/ore_box/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/ore)) + src.contents += W; + if (istype(W, /obj/item/weapon/satchel)) + src.contents += W.contents + user << "\blue You empty the satchel into the box." + return + +/obj/ore_box/attack_hand(obj, mob/user as mob) + for (var/obj/item/weapon/ore/O in contents) + contents -= O + O.loc = src.loc + user << "\blue You empty the box" + return + /**********************Alien Seeds**************************/ /obj/item/seeds/alien/alien1 @@ -413,23 +494,28 @@ if (istype(O,/obj/item/weapon/ore/iron)) new /obj/item/stack/sheet/metal(output.loc) del(O) + return if (istype(O,/obj/item/weapon/ore/diamond)) new /obj/item/stack/sheet/diamond(output.loc) del(O) + return if (istype(O,/obj/item/weapon/ore/plasma)) new /obj/item/stack/sheet/plasma(output.loc) del(O) + return if (istype(O,/obj/item/weapon/ore/gold)) new /obj/item/stack/sheet/gold(output.loc) del(O) + return if (istype(O,/obj/item/weapon/ore/silver)) new /obj/item/stack/sheet/silver(output.loc) del(O) - if (istype(O,/obj/item/weapon/ore/uranium)) - new /obj/item/weapon/ore/uranium(output.loc) - del(O) + return + if (O) + O.loc = src.output.loc + return -/**********************Mineral processing unit**************************/ +/**********************Mineral stacking unit**************************/ /obj/machinery/mineral/stacking_machine @@ -453,6 +539,14 @@ return return +/obj/machinery/mineral/stacking_machine/process() //PLACEHOLDER PROC + if (src.output && src.input) + var/obj/item/O + O = locate(/obj/item, input.loc) + if (O) + O.loc = src.output.loc + return + /* /obj/machinery/mineral/stacking_machine/process() @@ -960,6 +1054,9 @@ var/moving = 0; anchored = 1 density = 1 + var/speed = 0 + var/slowing = 0 + var/atom/movable/load = null //what it's carrying /obj/machinery/rail_car/attack_hand(user as mob) if (moving == 0) @@ -975,53 +1072,156 @@ for (var/client/C) C << "Dela." */ +/obj/machinery/rail_car/MouseDrop_T(var/atom/movable/C, mob/user) + + if(user.stat) + return + + if (!istype(C) || C.anchored || get_dist(user, src) > 1 || get_dist(src,C) > 1 ) + return + + if(ismob(C)) + load(C) + + +/obj/machinery/rail_car/proc/load(var/atom/movable/C) + + if(get_dist(C, src) > 1) + return + //mode = 1 + + C.loc = src.loc + sleep(2) + C.loc = src + load = C + + C.pixel_y += 9 + if(C.layer < layer) + C.layer = layer + 0.1 + overlays += C + + if(ismob(C)) + var/mob/M = C + if(M.client) + M.client.perspective = EYE_PERSPECTIVE + M.client.eye = src + + //mode = 0 + //send_status() + +/obj/machinery/rail_car/proc/unload(var/dirn = 0) + if(!load) + return + + overlays = null + + load.loc = src.loc + load.pixel_y -= 9 + load.layer = initial(load.layer) + if(ismob(load)) + var/mob/M = load + if(M.client) + M.client.perspective = MOB_PERSPECTIVE + M.client.eye = src + + + if(dirn) + step(load, dirn) + + 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) + AM.loc = src.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 + +/obj/machinery/rail_car/relaymove(var/mob/user) + if(user.stat) + return + if(load == user) + unload(0) + return + /obj/machinery/rail_car/process() if (moving == 1) - switch (direction) - if ("S") - for (var/obj/machinery/rail_track/R in locate(src.x,src.y-1,src.z)) - if (R.dir == 10) - direction = "W" - if (R.dir == 9) - direction = "E" - if (R.dir == 2 || R.dir == 1 || R.dir == 10 || R.dir == 9) - step(src,get_dir(src,R)) - break - else - moving = 0 - if ("N") - for (var/obj/machinery/rail_track/R in locate(src.x,src.y+1,src.z)) - if (R.dir == 5) - direction = "E" - if (R.dir == 6) - direction = "W" - if (R.dir == 5 || R.dir == 1 || R.dir == 6 || R.dir == 2) - step(src,get_dir(src,R)) - break - else - moving = 0 - if ("E") - for (var/obj/machinery/rail_track/R in locate(src.x+1,src.y,src.z)) - if (R.dir == 6) - direction = "S" - if (R.dir == 10) - direction = "N" - if (R.dir == 4 || R.dir == 8 || R.dir == 10 || R.dir == 6) - step(src,get_dir(src,R)) - break - else - moving = 0 - if ("W") - for (var/obj/machinery/rail_track/R in locate(src.x-1,src.y,src.z)) - if (R.dir == 9) - direction = "N" - if (R.dir == 5) - direction = "S" - if (R.dir == 8 || R.dir == 9 || R.dir == 5 || R.dir == 4) - step(src,get_dir(src,R)) - break - else - moving = 0 + if (slowing == 1) + if (speed > 0) + speed--; + if (speed == 0) + slowing = 0 + else + if (speed < 10) + speed++; + var/i = 0 + for (i = 0; i < speed; i++) + if (moving == 1) + switch (direction) + if ("S") + for (var/obj/machinery/rail_track/R in locate(src.x,src.y-1,src.z)) + if (R.dir == 10) + direction = "W" + if (R.dir == 9) + direction = "E" + if (R.dir == 2 || R.dir == 1 || R.dir == 10 || R.dir == 9) + for (var/mob/living/M in locate(src.x,src.y-1,src.z)) + step(M,get_dir(src,R)) + step(src,get_dir(src,R)) + break + else + moving = 0 + speed = 0 + if ("N") + for (var/obj/machinery/rail_track/R in locate(src.x,src.y+1,src.z)) + if (R.dir == 5) + direction = "E" + if (R.dir == 6) + direction = "W" + if (R.dir == 5 || R.dir == 1 || R.dir == 6 || R.dir == 2) + for (var/mob/living/M in locate(src.x,src.y+1,src.z)) + step(M,get_dir(src,R)) + step(src,get_dir(src,R)) + break + else + moving = 0 + speed = 0 + if ("E") + for (var/obj/machinery/rail_track/R in locate(src.x+1,src.y,src.z)) + if (R.dir == 6) + direction = "S" + if (R.dir == 10) + direction = "N" + if (R.dir == 4 || R.dir == 8 || R.dir == 10 || R.dir == 6) + for (var/mob/living/M in locate(src.x+1,src.y,src.z)) + step(M,get_dir(src,R)) + step(src,get_dir(src,R)) + break + else + moving = 0 + speed = 0 + if ("W") + for (var/obj/machinery/rail_track/R in locate(src.x-1,src.y,src.z)) + if (R.dir == 9) + direction = "N" + if (R.dir == 5) + direction = "S" + if (R.dir == 8 || R.dir == 9 || R.dir == 5 || R.dir == 4) + for (var/mob/living/M in locate(src.x-1,src.y,src.z)) + step(M,get_dir(src,R)) + step(src,get_dir(src,R)) + break + else + moving = 0 + speed = 0 + sleep(1) else processing_items.Remove(src) moving = 0 diff --git a/code/game/objects/closets/emergency.dm b/code/game/objects/closets/emergency.dm index 4cb6eaaf1d5..88be2cbb800 100644 --- a/code/game/objects/closets/emergency.dm +++ b/code/game/objects/closets/emergency.dm @@ -4,7 +4,7 @@ if (prob(40)) new /obj/item/weapon/storage/toolbox/emergency(src) - switch (pickweight(list("small" = 25, "aid" = 10, "tank" = 5, "both" = 5, "nothing" = 4, "delete" = 1))) + switch (pickweight(list("fire" = 25, "small" = 25, "aid" = 10, "tank" = 5, "both" = 5, "nothing" = 4, "delete" = 1))) if ("small") new /obj/item/weapon/tank/emergency_oxygen(src) new /obj/item/weapon/tank/emergency_oxygen(src) @@ -26,3 +26,7 @@ // teehee if ("delete") del(src) + + if ("fire") + new /obj/closet/firecloset(src.loc) + del(src) diff --git a/code/game/objects/closets/firecloset.dm b/code/game/objects/closets/firecloset.dm index 02eed7cfcf6..222ac8a4398 100644 --- a/code/game/objects/closets/firecloset.dm +++ b/code/game/objects/closets/firecloset.dm @@ -1,14 +1,25 @@ /obj/closet/firecloset/New() ..() - sleep(2) + if (prob (1)) del(src) return - new /obj/item/weapon/extinguisher(src) - - new /obj/item/clothing/mask/gas(src) - - new /obj/item/weapon/tank/emergency_oxygen(src) - - new /obj/item/clothing/suit/fire/firefighter(src) \ No newline at end of file + switch (pickweight(list("nothing" = 5, "bare-bones" = 35, "basic" = 40, "pickpocketed" = 10, "untouched" = 10))) + if ("nothing") + //better luck next time + if ("bare-bones") + new /obj/item/weapon/tank/emergency_oxygen(src) + if ("basic") + new /obj/item/clothing/mask/breath(src) + new /obj/item/weapon/tank/emergency_oxygen(src) + new /obj/item/weapon/extinguisher(src) + if ("pickpocketed") //suit got stolen + new /obj/item/clothing/mask/breath(src) + new /obj/item/weapon/tank/oxygen(src) + new /obj/item/weapon/extinguisher(src) + if ("untouched") + new /obj/item/clothing/mask/breath(src) + new /obj/item/weapon/tank/oxygen(src) + new /obj/item/weapon/extinguisher(src) + new /obj/item/clothing/suit/fire/firefighter(src) \ No newline at end of file diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 3ed728c47d7cc85a8f7c7a0a74f27eb00f2d513f..fff0342e87df582c7068d514f7d4b7996754093e 100644 GIT binary patch delta 11909 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%0Aa;{#^Xj#8jas@hfcO?>HZ>a|Y0_1gu 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