/**********************Mine areas**************************/ /area/mine/explored name = "Mine" icon_state = "janitor" music = null /area/mine/unexplored name = "Mine" icon_state = "captain" music = null /area/mine/lobby name = "Mining station" requires_power = 0 luminosity = 1 icon_state = "mine" sd_lighting = 0 /**********************Mineral deposits**************************/ /turf/simulated/mineral //wall piece name = "Mineral deposit" icon = 'walls.dmi' icon_state = "rock" opacity = 1 density = 1 blocks_air = 1 var/mineralName = "" var/mineralAmt = 0 /turf/simulated/asteroid/New() ..() oxygen = 0.01 nitrogen = 0.01 /turf/simulated/mineral/urenium name = "Uranium deposit" icon_state = "rock_Uranium" mineralName = "Uranium" mineralAmt = 5 /turf/simulated/mineral/iron name = "Iron deposit" icon_state = "rock_Iron" mineralName = "Iron" mineralAmt = 5 /turf/simulated/mineral/diamond name = "Diamond deposit" icon_state = "rock_Diamond" mineralName = "Diamond" mineralAmt = 5 /turf/simulated/mineral/gold name = "Gold deposit" icon_state = "rock_Gold" mineralName = "Gold" mineralAmt = 5 /turf/simulated/mineral/silver name = "Silver deposit" icon_state = "rock_Silver" mineralName = "Silver" mineralAmt = 5 /turf/simulated/mineral/plasma name = "Plasma deposit" icon_state = "rock_Plasma" mineralName = "Plasma" mineralAmt = 5 /turf/simulated/mineral/ReplaceWithFloor() if(!icon_old) icon_old = icon_state var/turf/simulated/floor/airless/W var/old_dir = dir W = new /turf/simulated/floor/airless( locate(src.x, src.y, src.z) ) W.dir = old_dir W.icon_state = "asteroid" /* W.icon_old = old_icon if(old_icon) W.icon_state = old_icon */ W.opacity = 1 W.sd_SetOpacity(0) W.levelupdate() return W /turf/simulated/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") usr << "\red You don't have the dexterity to do this!" return if (istype(W, /obj/item/weapon/pickaxe)) var/turf/T = user.loc if (!( istype(T, /turf) )) return user << "\red You start picking." //playsound(src.loc, 'Welder.ogg', 100, 1) sleep(100) if ((user.loc == T && user.equipped() == W)) user << "\blue You finish cutting into the rock." gets_drilled() else return attack_hand(user) return /turf/simulated/mineral/proc/gets_drilled() if ((src.mineralName != "") && (src.mineralAmt > 0) && (src.mineralAmt < 11)) var/i for (i=0;i 0) && (src.seedAmt < 11)) var/i for (i=0;iCONNECTED") else dat += text("NOT CONNECTED") dat += text("
output connection status: ") if (output) dat += text("CONNECTED") else dat += text("NOT CONNECTED") dat += text("

Purify") dat += text("

found: [processed]") user << browse("[dat]", "window=purifier") /obj/machinery/mineral/purifier/Topic(href, href_list) if(..()) return usr.machine = src src.add_fingerprint(usr) if(href_list["purify"]) if (src.output) processing = 1; var/obj/item/weapon/ore/O processed = 0; while(locate(/obj/item/weapon/ore, input.loc)) O = locate(/obj/item/weapon/ore, input.loc) if (istype(O,/obj/item/weapon/ore/iron)) new /obj/item/stack/sheet/metal(output.loc) del(O) if (istype(O,/obj/item/weapon/ore/diamond)) new /obj/item/stack/sheet/diamond(output.loc) del(O) if (istype(O,/obj/item/weapon/ore/plasma)) new /obj/item/stack/sheet/plasma(output.loc) del(O) if (istype(O,/obj/item/weapon/ore/gold)) new /obj/item/stack/sheet/gold(output.loc) del(O) 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) processed++ sleep(5); processing = 0; src.updateUsrDialog() return /obj/machinery/mineral/purifier/New() ..() spawn( 5 ) src.input = locate(/obj/machinery/mineral/input, get_step(src, WEST)) src.output = locate(/obj/machinery/mineral/output, get_step(src, EAST)) return return /**********************Mineral processing unit console**************************/ /obj/machinery/mineral/processing_unit_console name = "Produciton machine console" icon = 'terminals.dmi' icon_state = "production_console" density = 1 anchored = 1 var/obj/machinery/mineral/processing_unit/machine = null /obj/machinery/mineral/processing_unit_console/New() ..() spawn(7) src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, EAST)) if (machine) machine.CONSOLE = src else del(src) /obj/machinery/mineral/processing_unit_console/attack_hand(user as mob) var/dat = "" dat += text("What the heck can you even control on this, anyway??

") //iron if (machine.selected_iron==1) dat += text("Y ") else dat += text("N ") dat += text("Iron: [machine.ore_iron]
") //plasma if (machine.selected_plasma==1) dat += text("Y ") else dat += text("N ") dat += text("Plasma: [machine.ore_plasma]
") //uranium if (machine.selected_uranium==1) dat += text("Y ") else dat += text("N ") dat += text("Uranium: [machine.ore_uranium]
") //gold if (machine.selected_gold==1) dat += text("Y ") else dat += text("N ") dat += text("Gold: [machine.ore_gold]
") //silver if (machine.selected_silver==1) dat += text("Y ") else dat += text("N ") dat += text("Silver: [machine.ore_silver]
") //diamond if (machine.selected_diamond==1) dat += text("Y ") else dat += text("N ") dat += text("Diamond: [machine.ore_diamond]
") //On or off dat += text("Machine is currently ") if (machine.on==1) dat += text("On ") else dat += text("Off ") user << browse("[dat]", "window=console_processing_unit") /obj/machinery/mineral/processing_unit_console/Topic(href, href_list) if(..()) return usr.machine = src src.add_fingerprint(usr) if(href_list["sel_iron"]) if (href_list["sel_iron"] == "yes") machine.selected_iron = 1 else machine.selected_iron = 0 if(href_list["sel_plasma"]) if (href_list["sel_plasma"] == "yes") machine.selected_plasma = 1 else machine.selected_plasma = 0 if(href_list["sel_uranium"]) if (href_list["sel_uranium"] == "yes") machine.selected_uranium = 1 else machine.selected_uranium = 0 if(href_list["sel_gold"]) if (href_list["sel_gold"] == "yes") machine.selected_gold = 1 else machine.selected_gold = 0 if(href_list["sel_silver"]) if (href_list["sel_silver"] == "yes") machine.selected_silver = 1 else machine.selected_silver = 0 if(href_list["sel_diamond"]) if (href_list["sel_diamond"] == "yes") machine.selected_diamond = 1 else machine.selected_diamond = 0 if(href_list["set_on"]) if (href_list["set_on"] == "on") machine.on = 1 else machine.on = 0 src.updateUsrDialog() return /**********************Mineral processing unit**************************/ /obj/machinery/mineral/processing_unit name = "Production machine" icon = 'stationobjs.dmi' icon_state = "controller" density = 1 anchored = 1.0 var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null var/obj/machinery/mineral/CONSOLE = null var/ore_gold = 0; var/ore_silver = 0; var/ore_diamond = 0; var/ore_plasma = 0; var/ore_uranium = 0; var/ore_iron = 0; var/selected_gold = 0 var/selected_silver = 0 var/selected_diamond = 0 var/selected_plasma = 0 var/selected_uranium = 0 var/selected_iron = 0 var/on = 0 //0 = off, 1 =... oh you know! /obj/machinery/mineral/processing_unit/New() ..() spawn( 5 ) src.input = locate(/obj/machinery/mineral/input, get_step(src, NORTH)) src.output = locate(/obj/machinery/mineral/output, get_step(src, SOUTH)) processing_items.Add(src) return return /obj/machinery/mineral/processing_unit/process() if (src.output && src.input) var/i for (i = 0; i < 10; i++) if (on) if (selected_gold == 1 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0) if (ore_gold > 0) ore_gold--; new /obj/item/stack/sheet/gold(output.loc) continue if (selected_gold == 0 && selected_silver == 1 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0) if (ore_silver > 0) ore_silver--; new /obj/item/stack/sheet/silver(output.loc) continue if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 1 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0) if (ore_diamond > 0) ore_diamond--; new /obj/item/stack/sheet/diamond(output.loc) continue if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 1 && selected_uranium == 0 && selected_iron == 0) if (ore_plasma > 0) ore_plasma--; new /obj/item/stack/sheet/plasma(output.loc) continue if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 1 && selected_iron == 0) if (ore_uranium > 0) ore_uranium--; new /obj/item/weapon/ore/uranium(output.loc) continue if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1) if (ore_iron > 0) ore_iron--; new /obj/item/stack/sheet/metal(output.loc) continue //if a non valid combination is selected if (selected_gold == 1) ore_gold-- if (selected_silver == 1) ore_silver-- if (selected_diamond == 1) ore_diamond-- if (selected_plasma == 1) ore_plasma-- if (selected_uranium == 1) ore_uranium-- if (selected_iron == 1) ore_iron-- new /obj/decal/ash(output.loc) break else break for (i = 0; i < 10; i++) var/obj/item/weapon/ore/O O = locate(/obj/item/weapon/ore, input.loc) if (O) if (istype(O,/obj/item/weapon/ore/iron)) ore_iron++; //new /obj/item/stack/sheet/metal(output.loc) del(O) continue if (istype(O,/obj/item/weapon/ore/diamond)) ore_diamond++; //new /obj/item/stack/sheet/diamond(output.loc) del(O) continue if (istype(O,/obj/item/weapon/ore/plasma)) ore_plasma++ //new /obj/item/stack/sheet/plasma(output.loc) del(O) continue if (istype(O,/obj/item/weapon/ore/gold)) ore_gold++ //new /obj/item/stack/sheet/gold(output.loc) del(O) continue if (istype(O,/obj/item/weapon/ore/silver)) ore_silver++ //new /obj/item/stack/sheet/silver(output.loc) del(O) continue if (istype(O,/obj/item/weapon/ore/uranium)) ore_uranium++ del(O) continue O.loc = src.output.loc else break return /**********************Mineral stacking unit console**************************/ /obj/machinery/mineral/stacking_unit_console name = "Stacking machine console" icon = 'terminals.dmi' icon_state = "production_console" density = 1 anchored = 1 var/obj/machinery/mineral/processing_unit/machine = null /obj/machinery/mineral/stacking_unit_console/New() ..() spawn(7) src.machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, SOUTH)) if (machine) machine.CONSOLE = src else del(src) /obj/machinery/mineral/stacking_unit_console/attack_hand(user as mob) var/dat dat += text("What the heck can you even control on this, anyway??

") user << browse("[dat]", "window=console_stacking_machine") /**********************Mineral stacking unit**************************/ /obj/machinery/mineral/stacking_machine name = "Stacking machine" icon = 'stationobjs.dmi' icon_state = "controller" density = 1 anchored = 1.0 var/stk_types = list() var/stk_amt = list() var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null /obj/machinery/mineral/stacking_machine/New() ..() spawn( 5 ) src.input = locate(/obj/machinery/mineral/input, get_step(src, EAST)) src.output = locate(/obj/machinery/mineral/output, get_step(src, WEST)) processing_items.Add(src) 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() if (src.output && src.input) var/obj/item/O O = locate(/obj/item, input.loc) if (O.type in stk_types) var/i for (i = 0; i < stk_types.len; i++) if (stk_types[i] == O.type) stk_amt[i]++ else stk_types += O.type stk_amt[stk_types.len-1] = 1 if (istype(O,/obj/item/weapon/ore/iron)) new /obj/item/stack/sheet/metal(output.loc) del(O) if (istype(O,/obj/item/weapon/ore/diamond)) new /obj/item/stack/sheet/diamond(output.loc) del(O) if (istype(O,/obj/item/weapon/ore/plasma)) new /obj/item/stack/sheet/plasma(output.loc) del(O) if (istype(O,/obj/item/weapon/ore/gold)) new /obj/item/stack/sheet/gold(output.loc) del(O) 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) */ /**********************Mint**************************/ /obj/machinery/mineral/mint name = "Coin press" icon = 'stationobjs.dmi' icon_state = "controller" density = 1 anchored = 1.0 var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null var/amt_silver = 0 //amount of silver var/amt_gold = 0 //amount of gold var/newCoins = 0 //how many coins the machine made in it's last load var/processing = 0 /obj/machinery/mineral/mint/New() ..() spawn( 5 ) src.input = locate(/obj/machinery/mineral/input, get_step(src, NORTH)) src.output = locate(/obj/machinery/mineral/output, get_step(src, SOUTH)) processing_items.Add(src) return return /obj/machinery/mineral/mint/process() if (src.output && src.input) var/obj/item/stack/sheet/O O = locate(/obj/item/stack/sheet, input.loc) if (istype(O,/obj/item/stack/sheet/gold)) amt_gold += 100 del(O) if (istype(O,/obj/item/stack/sheet/silver)) amt_silver += 100 del(O) /obj/machinery/mineral/mint/attack_hand(user as mob) var/dat dat = text("input connection status: ") if (input) dat += text("CONNECTED") else dat += text("NOT CONNECTED") dat += text("
output connection status: ") if (output) dat += text("CONNECTED") else dat += text("NOT CONNECTED") dat += text("

Gold inserterd: [amt_gold]") dat += text("

Silver inserterd: [amt_silver]") dat += text("

Make coins") dat += text("

found: [newCoins]") user << browse("[dat]", "window=mint") /obj/machinery/mineral/mint/Topic(href, href_list) if(..()) return if(processing==1) return usr.machine = src src.add_fingerprint(usr) if(href_list["makeCoins"]) if (src.output) processing = 1; while(amt_gold > 0) new /obj/item/weapon/coin/gold(output.loc) amt_gold -= 20 newCoins++ src.updateUsrDialog() sleep(5); while(amt_silver > 0) new /obj/item/weapon/coin/silver(output.loc) amt_silver -= 20 newCoins++ src.updateUsrDialog() sleep(5); processing = 0; src.updateUsrDialog() return /*****************************Coin********************************/ /obj/item/weapon/coin icon = 'items.dmi' name = "Coin" icon_state = "coin" flags = FPRINT | TABLEPASS| CONDUCT force = 5.0 throwforce = 7.0 w_class = 2.0 m_amt = 50 /obj/item/weapon/coin/New() pixel_x = rand(0,16)-8 pixel_y = rand(0,8)-8 /obj/item/weapon/coin/gold name = "Gold coin" icon_state = "coin_gold" /obj/item/weapon/coin/silver name = "Silver coin" icon_state = "coin_silver" /**********************Gas extractor**************************/ /obj/machinery/mineral/gasextractor name = "Gas extractor" desc = "A machine which extracts gasses from ores" icon = 'computer.dmi' icon_state = "aiupload" var/obj/machinery/mineral/input = null var/obj/machinery/mineral/output = null var/message = ""; var/processing = 0 var/newtoxins = 0 density = 1 anchored = 1.0 /obj/machinery/mineral/gasextractor/New() ..() spawn( 5 ) src.input = locate(/obj/machinery/mineral/input, get_step(src, NORTH)) src.output = locate(/obj/machinery/mineral/output, get_step(src, SOUTH)) return return /obj/machinery/mineral/gasextractor/attack_hand(user as mob) if(processing == 1) user << "The machine is processing" return var/dat dat = text("input connection status: ") if (input) dat += text("CONNECTED") else dat += text("NOT CONNECTED") dat += text("
output connection status: ") if (output) dat += text("CONNECTED") else dat += text("NOT CONNECTED") dat += text("

Extract gas") dat += text("

Message: [message]") user << browse("[dat]", "window=purifier") /obj/machinery/mineral/gasextractor/Topic(href, href_list) if(..()) return usr.machine = src src.add_fingerprint(usr) if(href_list["extract"]) if (src.output) if (locate(/obj/machinery/portable_atmospherics/canister,output.loc)) newtoxins = 0 processing = 1 var/obj/item/weapon/ore/O while(locate(/obj/item/weapon/ore, input.loc) && locate(/obj/machinery/portable_atmospherics/canister,output.loc)) O = locate(/obj/item/weapon/ore, input.loc) if (istype(O,/obj/item/weapon/ore/uranium)) var/obj/machinery/portable_atmospherics/canister/C C = locate(/obj/machinery/portable_atmospherics/canister,output.loc) C.air_contents.toxins += 100 newtoxins += 100 del(O) sleep(5); processing = 0; message = "Canister filled with [newtoxins] units of toxins" else message = "No canister found" src.updateUsrDialog() return /******************************Lantern*******************************/ /obj/item/device/flashlight/lantern name = "Mining Lantern" icon = 'lighting.dmi' icon_state = "lantern-off" desc = "A miner's lantern" anchored = 0 var/brightness = 12 // luminosity when on /obj/item/device/flashlight/lantern/New() luminosity = 0 on = 0 return /obj/item/device/flashlight/lantern/attack_self(mob/user) ..() if (on == 1) icon_state = "lantern-on" else icon_state = "lantern-off" /*****************************Pickaxe********************************/ /obj/item/weapon/pickaxe name = "Miner's pickaxe" icon = 'items.dmi' icon_state = "pickaxe" flags = FPRINT | TABLEPASS| CONDUCT | ONBELT force = 5.0 throwforce = 7.0 item_state = "wrench" w_class = 2.0 m_amt = 50 /*****************************Shovel********************************/ /obj/item/weapon/shovel name = "Shovel" icon = 'items.dmi' icon_state = "shovel" flags = FPRINT | TABLEPASS| CONDUCT | ONBELT force = 5.0 throwforce = 7.0 item_state = "wrench" w_class = 2.0 m_amt = 50 /******************************Materials****************************/ /obj/item/stack/sheet/gold name = "gold" icon_state = "sheet-gold" force = 5.0 g_amt = 3750 throwforce = 5 w_class = 3.0 throw_speed = 3 throw_range = 3 /obj/item/stack/sheet/gold/New() pixel_x = rand(0,4)-4 pixel_y = rand(0,4)-4 /obj/item/stack/sheet/silver name = "silver" icon_state = "sheet-silver" force = 5.0 g_amt = 3750 throwforce = 5 w_class = 3.0 throw_speed = 3 throw_range = 3 /obj/item/stack/sheet/silver/New() pixel_x = rand(0,4)-4 pixel_y = rand(0,4)-4 /obj/item/stack/sheet/diamond name = "diamond" icon_state = "sheet-diamond" force = 5.0 g_amt = 3750 throwforce = 5 w_class = 3.0 throw_speed = 3 throw_range = 3 /obj/item/stack/sheet/diamond/New() pixel_x = rand(0,4)-4 pixel_y = rand(0,4)-4 /obj/item/stack/sheet/plasma name = "solid plasma" icon_state = "sheet-plasma" force = 5.0 g_amt = 3750 throwforce = 5 w_class = 3.0 throw_speed = 3 throw_range = 3 /**********************Rail track**************************/ /obj/machinery/rail_track name = "Rail track" icon = 'Mining.dmi' icon_state = "rail" dir = 2 var/id = null //this is needed for switches to work Set to the same on the whole length of the track /**********************Rail intersection**************************/ /obj/machinery/rail_track/intersections name = "Rail track intersection" icon_state = "rail_intersection" /obj/machinery/rail_track/intersections/attack_hand(user as mob) switch (dir) if (1) dir = 5 if (5) dir = 4 if (4) dir = 9 if (9) dir = 2 if (2) dir = 10 if (10) dir = 8 if (8) dir = 6 if (6) dir = 1 return /obj/machinery/rail_track/intersections/NSE name = "Rail track T intersection" icon_state = "rail_intersection_NSE" dir = 2 /obj/machinery/rail_track/intersections/NSE/attack_hand(user as mob) switch (dir) if (1) dir = 5 if (2) dir = 5 if (5) dir = 9 if (9) dir = 2 return /obj/machinery/rail_track/intersections/SEW name = "Rail track T intersection" icon_state = "rail_intersection_SEW" dir = 8 /obj/machinery/rail_track/intersections/SEW/attack_hand(user as mob) switch (dir) if (8) dir = 6 if (4) dir = 6 if (6) dir = 5 if (5) dir = 8 return /obj/machinery/rail_track/intersections/NSW name = "Rail track T intersection" icon_state = "rail_intersection_NSW" dir = 2 /obj/machinery/rail_track/intersections/NSW/attack_hand(user as mob) switch (dir) if (1) dir = 10 if (2) dir = 10 if (10) dir = 6 if (6) dir = 2 return /obj/machinery/rail_track/intersections/NEW name = "Rail track T intersection" icon_state = "rail_intersection_NEW" dir = 8 /obj/machinery/rail_track/intersections/NEW/attack_hand(user as mob) switch (dir) if (4) dir = 9 if (8) dir = 9 if (9) dir = 10 if (10) dir = 8 return /**********************Rail switch**************************/ /obj/machinery/rail_switch name = "Rail switch" icon = 'Mining.dmi' icon_state = "rail" dir = 2 icon = 'recycling.dmi' icon_state = "switch-off" var/obj/machinery/rail_track/track = null var/id //used for to change the track pieces /obj/machinery/rail_switch/New() spawn(10) src.track = locate(/obj/machinery/rail_track, get_step(src, NORTH)) if(track) id = track.id return /obj/machinery/rail_switch/attack_hand(user as mob) user << "You switch the rail track's direction" for (var/obj/machinery/rail_track/T in world) if (T.id == src.id) var/obj/machinery/rail_car/C = locate(/obj/machinery/rail_car, T.loc) if (C) switch (T.dir) if(1) switch(C.direction) if("N") C.direction = "S" if("S") C.direction = "N" if("E") C.direction = "S" if("W") C.direction = "S" if(2) switch(C.direction) if("N") C.direction = "S" if("S") C.direction = "N" if("E") C.direction = "S" if("W") C.direction = "S" if(4) switch(C.direction) if("N") C.direction = "E" if("S") C.direction = "E" if("E") C.direction = "W" if("W") C.direction = "E" if(8) switch(C.direction) if("N") C.direction = "E" if("S") C.direction = "E" if("E") C.direction = "W" if("W") C.direction = "E" if(5) switch(C.direction) if("N") C.direction = "S" if("S") C.direction = "E" if("E") C.direction = "S" if("W") C.direction = "S" if(6) switch(C.direction) if("N") C.direction = "S" if("S") C.direction = "W" if("E") C.direction = "S" if("W") C.direction = "S" if(9) switch(C.direction) if("N") C.direction = "E" if("S") C.direction = "E" if("E") C.direction = "N" if("W") C.direction = "E" if(10) switch(C.direction) if("N") C.direction = "W" if("S") C.direction = "W" if("E") C.direction = "W" if("W") C.direction = "N" return /**********************Mining car (Crate like thing, not the rail car)**************************/ /obj/crate/miningcar desc = "A mining car. This one doesn't work on rails, but has to be dragged." name = "Mining car (not for rails)" icon = 'storage.dmi' icon_state = "miningcar" density = 1 openicon = "miningcaropen" closedicon = "miningcar" /**********************Rail car**************************/ /obj/machinery/rail_car name = "Rail car" icon = 'Storage.dmi' icon_state = "miningcar" var/direction = "S" //S = south, N = north, E = east, W = west. Determines whichw ay it'll look first 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) processing_items.Add(src) moving = 1 else processing_items.Remove(src) moving = 0 return /* 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) 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 return /**********************Spaceship builder area definitions**************************/ /area/shipbuilder requires_power = 0 luminosity = 1 sd_lighting = 0 /area/shipbuilder/station name = "shipbuilder station" icon_state = "teleporter" /area/shipbuilder/ship1 name = "shipbuilder ship1" icon_state = "teleporter" /area/shipbuilder/ship2 name = "shipbuilder ship2" icon_state = "teleporter" /area/shipbuilder/ship3 name = "shipbuilder ship3" icon_state = "teleporter" /area/shipbuilder/ship4 name = "shipbuilder ship4" icon_state = "teleporter" /area/shipbuilder/ship5 name = "shipbuilder ship5" icon_state = "teleporter" /area/shipbuilder/ship6 name = "shipbuilder ship6" icon_state = "teleporter" /**********************Spaceship builder**************************/ /obj/machinery/spaceship_builder name = "Robotic Fabricator" icon = 'surgery.dmi' icon_state = "fab-idle" density = 1 anchored = 1 var/metal_amount = 0 var/operating = 0 var/area/currentShuttleArea = null var/currentShuttleName = null /obj/machinery/spaceship_builder/proc/buildShuttle(var/shuttle) var/shuttleat = null var/shuttleto = "/area/shipbuilder/station" var/req_metal = 0 switch(shuttle) if("hopper") shuttleat = "/area/shipbuilder/ship1" currentShuttleName = "Planet hopper" req_metal = 25000 if("bus") shuttleat = "/area/shipbuilder/ship2" currentShuttleName = "Blnder Bus" req_metal = 60000 if("dinghy") shuttleat = "/area/shipbuilder/ship3" currentShuttleName = "Space dinghy" req_metal = 100000 if("van") shuttleat = "/area/shipbuilder/ship4" currentShuttleName = "Boxvan MMDLVI" req_metal = 120000 if("secvan") shuttleat = "/area/shipbuilder/ship5" currentShuttleName = "Boxvan MMDLVI - Security edition" req_metal = 125000 if("station4") shuttleat = "/area/shipbuilder/ship6" currentShuttleName = "Space station 4" req_metal = 250000 if (metal_amount - req_metal < 0) return if (!shuttleat) return var/area/from = locate(shuttleat) var/area/dest = locate(shuttleto) if(!from || !dest) return currentShuttleArea = shuttleat from.move_contents_to(dest) return /obj/machinery/spaceship_builder/proc/scrapShuttle() var/shuttleat = "/area/shipbuilder/station" var/shuttleto = currentShuttleArea if (!shuttleto) return var/area/from = locate(shuttleat) var/area/dest = locate(shuttleto) if(!from || !dest) return currentShuttleArea = null currentShuttleName = null from.move_contents_to(dest) return /obj/machinery/spaceship_builder/attackby(obj/item/weapon/W as obj, mob/user as mob) if(operating == 1) user << "The machine is processing" return if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") usr << "\red You don't have the dexterity to do this!" return if (istype(W, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = W user << "\blue You insert all the metal into the machine." metal_amount += M.amount * 100 del(M) else return attack_hand(user) return /obj/machinery/spaceship_builder/attack_hand(user as mob) if(operating == 1) user << "The machine is processing" return var/dat dat = text("Ship fabricator

") dat += text("Current ammount of Metal: [metal_amount]

") if (currentShuttleArea) dat += text("Currently building

[currentShuttleName]

") dat += text("Build the shuttle to your liking.
This shuttle will be sent to the station in the event of an emergency along with a centcom emergency shuttle.") dat += text("


Scrap current shuttle") else dat += text("Available ships to build:

") dat += text("Planet hopper - Tiny, Slow
") dat += text("Blunder Bus - Small, Decent speed
") dat += text("Space dinghy - Medium size, Decent speed
") dat += text("Boxvan MMDLVIr - Medium size, Decent speed
") dat += text("Boxvan MMDLVI - Security eidition - Large, Rather slow
") dat += text("Space station 4 - Huge, Slow
") user << browse("[dat]", "window=shipbuilder") /obj/machinery/spaceship_builder/Topic(href, href_list) if(..()) return usr.machine = src src.add_fingerprint(usr) if(href_list["ship"]) buildShuttle(href_list["ship"]) if(href_list["scrap"]) scrapShuttle(href_list["ship"]) src.updateUsrDialog() return