mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Artifacts and strange rock formations spawn during world gen. Frequency may need tweaking. Strange rocks melt when acid hits them due to what I assume are changes /tg/ made with how acid works. Alternately I missed something during copypasta spree. I'll muck with it later. For now, harvesting always works with applied welding tools. Ore boxes back to old beautiful selves. Re-added a few icons to mining.dmi and the strange rock icon to turfs.dmi
220 lines
5.8 KiB
Plaintext
220 lines
5.8 KiB
Plaintext
/**********************Satchel**************************/
|
|
|
|
/obj/item/weapon/satchel
|
|
icon = 'mining.dmi'
|
|
icon_state = "satchel"
|
|
name = "Mining Satchel"
|
|
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
|
|
var/capacity = 25; //the number of ore pieces it can carry.
|
|
flags = FPRINT | TABLEPASS
|
|
slot_flags = SLOT_BELT
|
|
w_class = 1
|
|
|
|
/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/toggle_mode()
|
|
set name = "Switch Satchel Method"
|
|
set category = "Object"
|
|
|
|
mode = !mode
|
|
switch (mode)
|
|
if(1)
|
|
usr << "The satchel now picks up all ore in a tile at once."
|
|
if(0)
|
|
usr << "The satchel now picks up one ore at a time."
|
|
|
|
/obj/item/weapon/satchel/borg
|
|
icon = 'mining.dmi'
|
|
icon_state = "satchel"
|
|
name = "Cyborg Mining Satchel"
|
|
mode = 1; //0 = pick one at a time, 1 = pick all on tile
|
|
capacity = 75; //the number of ore pieces it can carry.
|
|
|
|
/**********************Ore box**************************/
|
|
|
|
/obj/structure/ore_box
|
|
icon = 'mining.dmi'
|
|
icon_state = "orebox0"
|
|
name = "Ore Box"
|
|
desc = "A heavy box used for storing ore."
|
|
density = 1
|
|
var/capacity = 200
|
|
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
|
|
|
|
New()
|
|
if(prob(50))
|
|
icon_state = "orebox1"
|
|
|
|
/obj/structure/ore_box/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/weapon/ore))
|
|
if (src.contents.len + 1 <= src.capacity)
|
|
src.contents += W;
|
|
else
|
|
user << "\blue The ore box is full."
|
|
|
|
else if (istype(W, /obj/item/weapon/satchel))
|
|
if ( src.contents.len + W.contents.len <= src.capacity)
|
|
src.contents += W.contents
|
|
user << "\blue You empty the satchel into the box."
|
|
else
|
|
user << "\blue The ore box is full."
|
|
return
|
|
|
|
/obj/structure/ore_box/proc/update(obj, mob/user as mob)
|
|
for (var/obj/item/weapon/ore/C in contents)
|
|
if (istype(C,/obj/item/weapon/ore/diamond))
|
|
amt_diamond++
|
|
del(C)
|
|
continue
|
|
else if (istype(C,/obj/item/weapon/ore/glass))
|
|
amt_glass++
|
|
del(C)
|
|
continue
|
|
else if (istype(C,/obj/item/weapon/ore/plasma))
|
|
amt_plasma++
|
|
del(C)
|
|
continue
|
|
else if (istype(C,/obj/item/weapon/ore/iron))
|
|
amt_iron++
|
|
del(C)
|
|
continue
|
|
else if (istype(C,/obj/item/weapon/ore/silver))
|
|
amt_silver++
|
|
del(C)
|
|
continue
|
|
else if (istype(C,/obj/item/weapon/ore/gold))
|
|
amt_gold++
|
|
del(C)
|
|
continue
|
|
else if (istype(C,/obj/item/weapon/ore/uranium))
|
|
amt_uranium++
|
|
del(C)
|
|
continue
|
|
else if (istype(C,/obj/item/weapon/ore/clown))
|
|
amt_clown++
|
|
del(C)
|
|
continue
|
|
return
|
|
|
|
|
|
/obj/structure/ore_box/attack_hand(obj, mob/user as mob)
|
|
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++;
|
|
else if (istype(C,/obj/item/weapon/ore/glass))
|
|
amt_glass++;
|
|
else if (istype(C,/obj/item/weapon/ore/plasma))
|
|
amt_plasma++;
|
|
else if (istype(C,/obj/item/weapon/ore/iron))
|
|
amt_iron++;
|
|
else if (istype(C,/obj/item/weapon/ore/silver))
|
|
amt_silver++;
|
|
else if (istype(C,/obj/item/weapon/ore/gold))
|
|
amt_gold++;
|
|
else if (istype(C,/obj/item/weapon/ore/uranium))
|
|
amt_uranium++;
|
|
else if (istype(C,/obj/item/weapon/ore/clown))
|
|
amt_clown++;
|
|
|
|
var/dat = text("<b>The contents of the ore box reveal...</b><br>")
|
|
if (amt_gold)
|
|
dat += text("Gold ore: [amt_gold]<br>")
|
|
if (amt_silver)
|
|
dat += text("Silver ore: [amt_silver]<br>")
|
|
if (amt_iron)
|
|
dat += text("Metal ore: [amt_iron]<br>")
|
|
if (amt_glass)
|
|
dat += text("Sand: [amt_glass]<br>")
|
|
if (amt_diamond)
|
|
dat += text("Diamond ore: [amt_diamond]<br>")
|
|
if (amt_plasma)
|
|
dat += text("Plasma ore: [amt_plasma]<br>")
|
|
if (amt_uranium)
|
|
dat += text("Uranium ore: [amt_uranium]<br>")
|
|
if (amt_clown)
|
|
dat += text("Bananium ore: [amt_clown]<br>")
|
|
|
|
dat += text("<br><br><A href='?src=\ref[src];removeall=1'>Empty box</A>")
|
|
user << browse("[dat]", "window=orebox")
|
|
return
|
|
|
|
|
|
/obj/structure/ore_box/Topic(href, href_list)
|
|
if(..())
|
|
return
|
|
usr.machine = src
|
|
src.add_fingerprint(usr)
|
|
if(href_list["removeall"])
|
|
if (amt_diamond > 0)
|
|
var/obj/item/weapon/ore/diamond/G = new /obj/item/weapon/ore/diamond
|
|
G.amount = src.amt_diamond
|
|
G.loc = src.loc
|
|
src.amt_diamond = 0
|
|
if (amt_glass > 0)
|
|
var/obj/item/weapon/ore/glass/G = new /obj/item/weapon/ore/glass
|
|
G.amount = src.amt_glass
|
|
G.loc = src.loc
|
|
src.amt_glass = 0
|
|
if (amt_plasma > 0)
|
|
var/obj/item/weapon/ore/plasma/G = new /obj/item/weapon/ore/plasma
|
|
G.amount = src.amt_plasma
|
|
G.loc = src.loc
|
|
src.amt_plasma = 0
|
|
if (amt_iron > 0)
|
|
var/obj/item/weapon/ore/iron/G = new /obj/item/weapon/ore/iron
|
|
G.amount = src.amt_iron
|
|
G.loc = src.loc
|
|
src.amt_iron = 0
|
|
if (amt_silver > 0)
|
|
var/obj/item/weapon/ore/silver/G = new /obj/item/weapon/ore/silver
|
|
G.amount = src.amt_silver
|
|
G.loc = src.loc
|
|
src.amt_silver = 0
|
|
if (amt_gold > 0)
|
|
var/obj/item/weapon/ore/gold/G = new /obj/item/weapon/ore/gold
|
|
G.amount = src.amt_gold
|
|
G.loc = src.loc
|
|
src.amt_gold = 0
|
|
if (amt_uranium > 0)
|
|
var/obj/item/weapon/ore/uranium/G = new /obj/item/weapon/ore/uranium
|
|
G.amount = src.amt_uranium
|
|
G.loc = src.loc
|
|
src.amt_uranium = 0
|
|
if (amt_clown > 0)
|
|
var/obj/item/weapon/ore/clown/G = new /obj/item/weapon/ore/clown
|
|
G.amount = src.amt_clown
|
|
G.loc = src.loc
|
|
src.amt_clown = 0
|
|
for (var/obj/item/weapon/ore/O in contents)
|
|
contents -= O
|
|
O.loc = src.loc
|
|
usr << "\blue You empty the box."
|
|
src.updateUsrDialog()
|
|
return |