mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 19:22:56 +00:00
- Mining cyborgs can now properly work with drills. - Mining cyborgs have received ore scanner, crowbar, and limited version of magnetic gripper. - Mining cyborgs can now swap power cells inside mining drills, as well as upgrade them if provided better parts. - As a bonus, cyborgs can now see how much ore is in ore boxes (because it makes sense that cyborg which mined ton of ore can check how much ore it mined)
101 lines
2.4 KiB
Plaintext
101 lines
2.4 KiB
Plaintext
|
|
/**********************Ore box**************************/
|
|
|
|
/obj/structure/ore_box
|
|
icon = 'icons/obj/mining.dmi'
|
|
icon_state = "orebox0"
|
|
name = "ore box"
|
|
desc = "A heavy box used for storing ore."
|
|
density = 1
|
|
var/last_update = 0
|
|
var/list/stored_ore = list()
|
|
|
|
/obj/structure/ore_box/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/weapon/ore))
|
|
user.u_equip(W)
|
|
src.contents += W
|
|
if (istype(W, /obj/item/weapon/storage))
|
|
var/obj/item/weapon/storage/S = W
|
|
S.hide_from(usr)
|
|
for(var/obj/item/weapon/ore/O in S.contents)
|
|
S.remove_from_storage(O, src) //This will move the item to this item's contents
|
|
user << "\blue You empty the satchel into the box."
|
|
|
|
update_ore_count()
|
|
|
|
return
|
|
|
|
/obj/structure/ore_box/proc/update_ore_count()
|
|
|
|
stored_ore = list()
|
|
|
|
for(var/obj/item/weapon/ore/O in contents)
|
|
|
|
if(stored_ore[O.name])
|
|
stored_ore[O.name]++
|
|
else
|
|
stored_ore[O.name] = 1
|
|
|
|
/obj/structure/ore_box/examine(mob/user)
|
|
user << "That's an [src]."
|
|
user << desc
|
|
|
|
// Borgs can now check contents too.
|
|
if((!istype(user, /mob/living/carbon/human)) && (!istype(user, /mob/living/silicon/robot)))
|
|
return
|
|
|
|
if(!Adjacent(user)) //Can only check the contents of ore boxes if you can physically reach them.
|
|
return
|
|
|
|
add_fingerprint(user)
|
|
|
|
if(!contents.len)
|
|
user << "It is empty."
|
|
return
|
|
|
|
if(world.time > last_update + 10)
|
|
update_ore_count()
|
|
last_update = world.time
|
|
|
|
user << "It holds:"
|
|
for(var/ore in stored_ore)
|
|
user << "- [stored_ore[ore]] [ore]"
|
|
return
|
|
|
|
|
|
/obj/structure/ore_box/verb/empty_box()
|
|
set name = "Empty Ore Box"
|
|
set category = "Object"
|
|
set src in view(1)
|
|
|
|
if(!istype(usr, /mob/living/carbon/human)) //Only living, intelligent creatures with hands can empty ore boxes.
|
|
usr << "\red You are physically incapable of emptying the ore box."
|
|
return
|
|
|
|
if( usr.stat || usr.restrained() )
|
|
return
|
|
|
|
if(!Adjacent(usr)) //You can only empty the box if you can physically reach it
|
|
usr << "You cannot reach the ore box."
|
|
return
|
|
|
|
add_fingerprint(usr)
|
|
|
|
if(contents.len < 1)
|
|
usr << "\red The ore box is empty"
|
|
return
|
|
|
|
for (var/obj/item/weapon/ore/O in contents)
|
|
contents -= O
|
|
O.loc = src.loc
|
|
usr << "\blue You empty the ore box"
|
|
|
|
return
|
|
|
|
/obj/structure/ore_box/ex_act(severity)
|
|
if(severity == 1.0 || (severity < 3.0 && prob(50)))
|
|
for (var/obj/item/weapon/ore/O in contents)
|
|
O.loc = src.loc
|
|
O.ex_act(severity++)
|
|
del(src)
|
|
return |