diff --git a/code/WorkInProgress/mining.dm b/code/WorkInProgress/mining.dm
index 30588194762..06639b7711a 100644
--- a/code/WorkInProgress/mining.dm
+++ b/code/WorkInProgress/mining.dm
@@ -1465,6 +1465,10 @@ proc/move_mining_shuttle()
new /obj/item/seeds/alien/alien4(src)
seedName = ""
seedAmt = 0
+ new/obj/item/weapon/ore/glass(src)
+ new/obj/item/weapon/ore/glass(src)
+ new/obj/item/weapon/ore/glass(src)
+ new/obj/item/weapon/ore/glass(src)
return
/turf/simulated/floor/airless/asteroid/proc/updateMineralOverlays()
@@ -1537,50 +1541,47 @@ proc/move_mining_shuttle()
/obj/item/weapon/ore/uranium
name = "Uranium ore"
- icon = 'Mining.dmi'
icon_state = "Uranium ore"
origin_tech = "materials=5"
/obj/item/weapon/ore/iron
name = "Iron ore"
- icon = 'Mining.dmi'
icon_state = "Iron ore"
origin_tech = "materials=1"
+/obj/item/weapon/ore/glass
+ name = "Sand"
+ icon_state = "Glass ore"
+ origin_tech = "materials=1"
+
/obj/item/weapon/ore/plasma
name = "Plasma ore"
- icon = 'Mining.dmi'
icon_state = "Plasma ore"
origin_tech = "materials=2"
/obj/item/weapon/ore/silver
name = "Silver ore"
- icon = 'Mining.dmi'
icon_state = "Silver ore"
origin_tech = "materials=3"
/obj/item/weapon/ore/gold
name = "Gold ore"
- icon = 'Mining.dmi'
icon_state = "Gold ore"
origin_tech = "materials=4"
/obj/item/weapon/ore/diamond
name = "Diamond ore"
- icon = 'Mining.dmi'
icon_state = "Diamond ore"
origin_tech = "materials=6"
/obj/item/weapon/ore/clown
name = "Bananium ore"
- icon = 'Mining.dmi'
icon_state = "Clown ore"
origin_tech = "materials=4"
/obj/item/weapon/ore/slag
name = "Slag"
desc = "Completely useless"
- icon = 'Mining.dmi'
icon_state = "slag"
/obj/item/weapon/ore/New()
@@ -1643,12 +1644,69 @@ proc/move_mining_shuttle()
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"
+ var/amt_gold = 0
+ var/amt_silver = 0
+ var/amt_diamond = 0
+ var/amt_glass = 0
+ var/amt_iron = 0
+ var/amt_plasma = 0
+ var/amt_uranium = 0
+ var/amt_clown = 0
+
+ for (var/obj/item/weapon/ore/C in contents)
+ if (istype(C,/obj/item/weapon/ore/diamond))
+ amt_diamond++;
+ if (istype(C,/obj/item/weapon/ore/glass))
+ amt_glass++;
+ if (istype(C,/obj/item/weapon/ore/plasma))
+ amt_plasma++;
+ if (istype(C,/obj/item/weapon/ore/iron))
+ amt_iron++;
+ if (istype(C,/obj/item/weapon/ore/silver))
+ amt_silver++;
+ if (istype(C,/obj/item/weapon/ore/gold))
+ amt_gold++;
+ if (istype(C,/obj/item/weapon/ore/uranium))
+ amt_uranium++;
+ if (istype(C,/obj/item/weapon/ore/clown))
+ amt_clown++;
+
+ var/dat = text("The contents of the ore box reveal...
")
+ if (amt_gold)
+ dat += text("Gold ore: [amt_gold]
")
+ if (amt_silver)
+ dat += text("Silver ore: [amt_silver]
")
+ if (amt_iron)
+ dat += text("Metal ore: [amt_iron]
")
+ if (amt_glass)
+ dat += text("Sand: [amt_glass]
")
+ if (amt_diamond)
+ dat += text("Diamond ore: [amt_diamond]
")
+ if (amt_plasma)
+ dat += text("Plasma ore: [amt_plasma]
")
+ if (amt_uranium)
+ dat += text("Uranium ore: [amt_uranium]
")
+ if (amt_clown)
+ dat += text("Bananium ore: [amt_clown]
")
+
+ dat += text("
Empty box")
+ user << browse("[dat]", "window=orebox")
return
+/obj/ore_box/Topic(href, href_list)
+ if(..())
+ return
+ usr.machine = src
+ src.add_fingerprint(usr)
+ if(href_list["removeall"])
+ for (var/obj/item/weapon/ore/O in contents)
+ contents -= O
+ O.loc = src.loc
+ usr << "\blue You empty the box"
+ src.updateUsrDialog()
+ return
+
+
/**********************Alien Seeds**************************/
/obj/item/seeds/alien/alien1
@@ -1800,6 +1858,31 @@ proc/move_mining_shuttle()
return
return
+
+/**********************Ore to material recipes datum**************************/
+
+var/list/AVAILABLE_ORES = typesof(/obj/item/weapon/ore)
+
+/datum/material_recipe
+ var/name
+ var/list/obj/item/weapon/ore/recipe
+ var/obj/prod_type //produced material/object type
+
+ New(var/param_name, var/param_recipe, var/param_prod_type)
+ name = param_name
+ recipe = param_recipe
+ prod_type = param_prod_type
+
+var/list/datum/material_recipe/MATERIAL_RECIPES = list(
+ new/datum/material_recipe("Metal",list(/obj/item/weapon/ore/iron),/obj/item/stack/sheet/metal),
+ new/datum/material_recipe("Glass",list(/obj/item/weapon/ore/glass),/obj/item/stack/sheet/glass),
+ new/datum/material_recipe("Gold",list(/obj/item/weapon/ore/gold),/obj/item/stack/sheet/gold),
+ new/datum/material_recipe("Silver",list(/obj/item/weapon/ore/silver),/obj/item/stack/sheet/silver),
+ new/datum/material_recipe("Diamond",list(/obj/item/weapon/ore/diamond),/obj/item/stack/sheet/diamond),
+ new/datum/material_recipe("Plasma",list(/obj/item/weapon/ore/plasma),/obj/item/stack/sheet/plasma),
+ new/datum/material_recipe("Bananium",list(/obj/item/weapon/ore/clown),/obj/item/stack/sheet/clown)
+ )
+
/**********************Mineral processing unit console**************************/
/obj/machinery/mineral/processing_unit_console
@@ -1823,61 +1906,94 @@ proc/move_mining_shuttle()
var/dat = "Smelter control console
"
//iron
- if (machine.selected_iron==1)
- dat += text("Y ")
- else
- dat += text("N ")
- dat += text("Iron: [machine.ore_iron]
")
+ if(machine.ore_iron || machine.ore_plasma || machine.ore_uranium || machine.ore_gold || machine.ore_silver || machine.ore_diamond || machine.ore_clown)
+ if(machine.ore_iron)
+ if (machine.selected_iron==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Iron: [machine.ore_iron]
")
+ else
+ machine.selected_iron = 0
- //plasma
- if (machine.selected_plasma==1)
- dat += text("Y ")
- else
- dat += text("N ")
- dat += text("Plasma: [machine.ore_plasma]
")
+ //sand - glass
+ if(machine.ore_glass)
+ if (machine.selected_glass==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Sand: [machine.ore_glass]
")
+ else
+ machine.selected_glass = 0
- //uranium
- if (machine.selected_uranium==1)
- dat += text("Y ")
- else
- dat += text("N ")
- dat += text("Uranium: [machine.ore_uranium]
")
+ //plasma
+ if(machine.ore_plasma)
+ if (machine.selected_plasma==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Plasma: [machine.ore_plasma]
")
+ else
+ machine.selected_plasma = 0
- //gold
- if (machine.selected_gold==1)
- dat += text("Y ")
- else
- dat += text("N ")
- dat += text("Gold: [machine.ore_gold]
")
+ //uranium
+ if(machine.ore_uranium)
+ if (machine.selected_uranium==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Uranium: [machine.ore_uranium]
")
+ else
+ machine.selected_uranium = 0
- //silver
- if (machine.selected_silver==1)
- dat += text("Y ")
- else
- dat += text("N ")
- dat += text("Silver: [machine.ore_silver]
")
+ //gold
+ if(machine.ore_gold)
+ if (machine.selected_gold==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Gold: [machine.ore_gold]
")
+ else
+ machine.selected_gold = 0
- //diamond
- if (machine.selected_diamond==1)
- dat += text("Y ")
- else
- dat += text("N ")
- dat += text("Diamond: [machine.ore_diamond]
")
+ //silver
+ if(machine.ore_silver)
+ if (machine.selected_silver==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Silver: [machine.ore_silver]
")
+ else
+ machine.selected_silver = 0
- //bananium
- if (machine.selected_clown==1)
- dat += text("Y ")
- else
- dat += text("N ")
- dat += text("Bananium: [machine.ore_clown]
")
+ //diamond
+ if(machine.ore_diamond)
+ if (machine.selected_diamond==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Diamond: [machine.ore_diamond]
")
+ else
+ machine.selected_diamond = 0
- //On or off
- dat += text("Machine is currently ")
- if (machine.on==1)
- dat += text("On ")
- else
- dat += text("Off ")
+ //bananium
+ if(machine.ore_clown)
+ if (machine.selected_clown==1)
+ dat += text("Smelting ")
+ else
+ dat += text("Not smelting ")
+ dat += text("Bananium: [machine.ore_clown]
")
+ else
+ machine.selected_clown = 0
+ //On or off
+ dat += text("Machine is currently ")
+ if (machine.on==1)
+ dat += text("On ")
+ else
+ dat += text("Off ")
+ else
+ dat+="---No Materials Loaded---"
user << browse("[dat]", "window=console_processing_unit")
@@ -1894,6 +2010,11 @@ proc/move_mining_shuttle()
machine.selected_iron = 1
else
machine.selected_iron = 0
+ if(href_list["sel_glass"])
+ if (href_list["sel_glass"] == "yes")
+ machine.selected_glass = 1
+ else
+ machine.selected_glass = 0
if(href_list["sel_plasma"])
if (href_list["sel_plasma"] == "yes")
machine.selected_plasma = 1
@@ -1947,6 +2068,7 @@ proc/move_mining_shuttle()
var/ore_gold = 0;
var/ore_silver = 0;
var/ore_diamond = 0;
+ var/ore_glass = 0;
var/ore_plasma = 0;
var/ore_uranium = 0;
var/ore_iron = 0;
@@ -1954,6 +2076,7 @@ proc/move_mining_shuttle()
var/selected_gold = 0
var/selected_silver = 0
var/selected_diamond = 0
+ var/selected_glass = 0
var/selected_plasma = 0
var/selected_uranium = 0
var/selected_iron = 0
@@ -1974,49 +2097,56 @@ proc/move_mining_shuttle()
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 && selected_clown == 0)
+ if (selected_glass == 1 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
+ if (ore_glass > 0)
+ ore_glass--;
+ new /obj/item/stack/sheet/glass(output.loc)
+ else
+ on = 0
+ continue
+ if (selected_glass == 0 && selected_gold == 1 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
if (ore_gold > 0)
ore_gold--;
new /obj/item/stack/sheet/gold(output.loc)
else
on = 0
continue
- if (selected_gold == 0 && selected_silver == 1 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
+ if (selected_glass == 0 && selected_gold == 0 && selected_silver == 1 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
if (ore_silver > 0)
ore_silver--;
new /obj/item/stack/sheet/silver(output.loc)
else
on = 0
continue
- if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 1 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
+ if (selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 1 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
if (ore_diamond > 0)
ore_diamond--;
new /obj/item/stack/sheet/diamond(output.loc)
else
on = 0
continue
- if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 1 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
+ if (selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 1 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 0)
if (ore_plasma > 0)
ore_plasma--;
new /obj/item/stack/sheet/plasma(output.loc)
else
on = 0
continue
- if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 1 && selected_iron == 0 && selected_clown == 0)
+ if (selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 1 && selected_iron == 0 && selected_clown == 0)
if (ore_uranium > 0)
ore_uranium--;
new /obj/item/weapon/ore/uranium(output.loc)
else
on = 0
continue
- if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0)
+ if (selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0)
if (ore_iron > 0)
ore_iron--;
new /obj/item/stack/sheet/metal(output.loc)
else
on = 0
continue
- if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0)
+ if (selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 1 && selected_clown == 0)
if (ore_iron > 0)
ore_iron--;
new /obj/item/stack/sheet/metal(output.loc)
@@ -2024,10 +2154,10 @@ proc/move_mining_shuttle()
on = 0
continue
- if (selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 1)
+ if (selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 1)
if (ore_clown > 0)
ore_clown--;
- new /obj/item/stack/sheet/metal(output.loc)
+ new /obj/item/stack/sheet/clown(output.loc)
else
on = 0
continue
@@ -2058,7 +2188,9 @@ proc/move_mining_shuttle()
if (selected_iron == 1)
if (ore_iron <= 0)
b = 0
-
+ if (selected_glass == 1)
+ if (ore_glass <= 0)
+ b = 0
if (selected_clown == 1)
if (ore_clown <= 0)
b = 0
@@ -2092,27 +2224,26 @@ proc/move_mining_shuttle()
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/glass))
+ ore_glass++;
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))
@@ -2155,12 +2286,24 @@ proc/move_mining_shuttle()
dat += text("Stacking unit console
")
- dat += text("Iron: [machine.ore_iron] Release
")
- dat += text("Plasma: [machine.ore_plasma] Release
")
- dat += text("Gold: [machine.ore_gold] Release
")
- dat += text("Silver: [machine.ore_silver] Release
")
- dat += text("Damond: [machine.ore_diamond] Release
")
- dat += text("Bananium: [machine.ore_clown] Release
")
+ if(machine.ore_iron)
+ dat += text("Iron: [machine.ore_iron] Release
")
+ if(machine.ore_steel)
+ dat += text("Steel: [machine.ore_steel] Release
")
+ if(machine.ore_glass)
+ dat += text("Glass: [machine.ore_glass] Release
")
+ if(machine.ore_rglass)
+ dat += text("Reinforced Glass: [machine.ore_rglass] Release
")
+ if(machine.ore_plasma)
+ dat += text("Plasma: [machine.ore_plasma] Release
")
+ if(machine.ore_gold)
+ dat += text("Gold: [machine.ore_gold] Release
")
+ if(machine.ore_silver)
+ dat += text("Silver: [machine.ore_silver] Release
")
+ if(machine.ore_diamond)
+ dat += text("Damond: [machine.ore_diamond] Release
")
+ if(machine.ore_clown)
+ dat += text("Bananium: [machine.ore_clown] Release
")
dat += text("Stacking: [machine.stack_amt]
")
@@ -2179,6 +2322,18 @@ proc/move_mining_shuttle()
G.amount = machine.ore_plasma
G.loc = machine.output.loc
machine.ore_plasma = 0
+ if ("glass")
+ if (machine.ore_glass > 0)
+ var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass
+ G.amount = machine.ore_glass
+ G.loc = machine.output.loc
+ machine.ore_glass = 0
+ if ("rglass")
+ if (machine.ore_rglass > 0)
+ var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass
+ G.amount = machine.ore_rglass
+ G.loc = machine.output.loc
+ machine.ore_rglass = 0
if ("gold")
if (machine.ore_gold > 0)
var/obj/item/stack/sheet/gold/G = new /obj/item/stack/sheet/gold
@@ -2203,12 +2358,18 @@ proc/move_mining_shuttle()
G.amount = machine.ore_iron
G.loc = machine.output.loc
machine.ore_iron = 0
+ if ("steel")
+ if (machine.ore_steel > 0)
+ var/obj/item/stack/sheet/r_metal/G = new /obj/item/stack/sheet/r_metal
+ G.amount = machine.ore_steel
+ G.loc = machine.output.loc
+ machine.ore_steel = 0
if ("clown")
if (machine.ore_clown > 0)
var/obj/item/stack/sheet/clown/G = new /obj/item/stack/sheet/clown
G.amount = machine.ore_clown
G.loc = machine.output.loc
- machine.ore_iron = 0
+ machine.ore_clown = 0
src.updateUsrDialog()
return
@@ -2233,6 +2394,9 @@ proc/move_mining_shuttle()
var/ore_plasma = 0;
var/ore_iron = 0;
var/ore_clown = 0;
+ var/ore_glass = 0;
+ var/ore_rglass = 0;
+ var/ore_steel = 0;
var/stack_amt = 50; //ammount to stack before releassing
/obj/machinery/mineral/stacking_machine/New()
@@ -2251,32 +2415,38 @@ proc/move_mining_shuttle()
O = locate(/obj/item, input.loc)
if (istype(O,/obj/item/stack/sheet/metal))
ore_iron++;
- //new /obj/item/stack/sheet/metal(output.loc)
del(O)
continue
if (istype(O,/obj/item/stack/sheet/diamond))
ore_diamond++;
- //new /obj/item/stack/sheet/diamond(output.loc)
del(O)
continue
if (istype(O,/obj/item/stack/sheet/plasma))
ore_plasma++
- //new /obj/item/stack/sheet/plasma(output.loc)
del(O)
continue
if (istype(O,/obj/item/stack/sheet/gold))
ore_gold++
- //new /obj/item/stack/sheet/gold(output.loc)
del(O)
continue
if (istype(O,/obj/item/stack/sheet/silver))
ore_silver++
- //new /obj/item/stack/sheet/silver(output.loc)
del(O)
continue
if (istype(O,/obj/item/stack/sheet/clown))
ore_clown++
- //new /obj/item/stack/sheet/silver(output.loc)
+ del(O)
+ continue
+ if (istype(O,/obj/item/stack/sheet/glass))
+ ore_glass++
+ del(O)
+ continue
+ if (istype(O,/obj/item/stack/sheet/rglass))
+ ore_rglass++
+ del(O)
+ continue
+ if (istype(O,/obj/item/stack/sheet/r_metal))
+ ore_steel++
del(O)
continue
if (istype(O,/obj/item/weapon/ore/slag))
@@ -2319,6 +2489,24 @@ proc/move_mining_shuttle()
G.loc = output.loc
ore_clown -= stack_amt
return
+ if (ore_glass >= stack_amt)
+ var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass
+ G.amount = stack_amt
+ G.loc = output.loc
+ ore_glass -= stack_amt
+ return
+ if (ore_rglass >= stack_amt)
+ var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass
+ G.amount = stack_amt
+ G.loc = output.loc
+ ore_rglass -= stack_amt
+ return
+ if (ore_steel >= stack_amt)
+ var/obj/item/stack/sheet/r_metal/G = new /obj/item/stack/sheet/r_metal
+ G.amount = stack_amt
+ G.loc = output.loc
+ ore_steel -= stack_amt
+ return
return
@@ -2604,10 +2792,9 @@ proc/move_mining_shuttle()
name = "Coin"
icon_state = "coin"
flags = FPRINT | TABLEPASS| CONDUCT
- force = 5.0
- throwforce = 7.0
- w_class = 2.0
- m_amt = 50
+ force = 0.0
+ throwforce = 0.0
+ w_class = 1.0
/obj/item/weapon/coin/New()
pixel_x = rand(0,16)-8
@@ -2843,7 +3030,7 @@ proc/move_mining_shuttle()
force = 15.0
throwforce = 4.0
item_state = "wrench"
- w_class = 1.0
+ w_class = 4.0
m_amt = 50
/*****************************Shovel********************************/
@@ -2856,7 +3043,7 @@ proc/move_mining_shuttle()
force = 8.0
throwforce = 4.0
item_state = "wrench"
- w_class = 1.0
+ w_class = 3.0
m_amt = 50
diff --git a/icons/changelog.html b/icons/changelog.html
index 93f8db06500..c04489310e5 100644
--- a/icons/changelog.html
+++ b/icons/changelog.html
@@ -40,6 +40,30 @@