/obj/machinery/monkey_recycler
name = "Monkey Recycler"
desc = "A machine used for recycling dead monkeys into monkey cubes."
icon = 'icons/obj/kitchen.dmi'
icon_state = "grinder"
layer = 2.9
density = 1
anchored = 1
use_power = 1
idle_power_usage = 5
active_power_usage = 50
machine_flags = SCREWTOGGLE | CROWDESTROY | WRENCHMOVE | FIXED2WORK
var/grinded = 0
var/minimum_monkeys = 3 //How many do we need to grind?
var/can_recycle_live = 0 //Can we recycle a live monkey?
/obj/machinery/monkey_recycler/New()
. = ..()
component_parts = newlist(
/obj/item/weapon/circuitboard/monkey_recycler,
/obj/item/weapon/stock_parts/matter_bin,
/obj/item/weapon/stock_parts/manipulator,
/obj/item/weapon/stock_parts/manipulator,
/obj/item/weapon/stock_parts/micro_laser
)
RefreshParts()
/obj/machinery/monkey_recycler/RefreshParts()
var/manipcount = 0
var/lasercount = 0
for(var/obj/item/weapon/stock_parts/SP in component_parts)
if(istype(SP, /obj/item/weapon/stock_parts/manipulator)) manipcount += SP.rating
if(istype(SP, /obj/item/weapon/stock_parts/micro_laser)) lasercount += SP.rating
minimum_monkeys = 4 - (manipcount/2) //Tier 1 = 3, Tier 2 = 2, Tier 3 = 1
if(lasercount == 3) can_recycle_live = 1
/obj/machinery/monkey_recycler/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if (src.stat != 0) //NOPOWER etc
return
if (istype(O, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = O
var/grabbed = G.affecting
if(istype(grabbed, /mob/living/carbon/monkey))
var/mob/living/carbon/monkey/target = grabbed
if(target.stat == 0 || can_recycle_live)
to_chat(user, "The monkey is struggling far too much to put it in the recycler.")
if(target.wear_mask || target.l_hand || target.r_hand || target.back || target.uniform || target.hat)
to_chat(user, "The monkey may not have abiotic items on.")
else
user.drop_item(G)
qdel(target)
to_chat(user, "You stuff the monkey in the machine.")
playsound(get_turf(src), 'sound/machines/juicer.ogg', 50, 1)
use_power(500)
src.grinded++
to_chat(user, "The machine now has [grinded] monkeys worth of material stored.")
else
to_chat(user, "The machine only accepts monkeys!")
else if(istype(O, /mob/living/carbon/monkey))
var/mob/living/carbon/monkey/target = O
if(target.stat == 0)
to_chat(user, "The monkey is struggling far too much to put it in the recycler.")
if(target.wear_mask || target.l_hand || target.r_hand || target.back || target.uniform || target.hat)
to_chat(user, "The monkey may not have abiotic items on.")
else
qdel(target)
to_chat(user, "You stuff the monkey in the machine.")
playsound(get_turf(src), 'sound/machines/juicer.ogg', 50, 1)
use_power(500)
src.grinded++
to_chat(user, "The machine now has [grinded] monkeys worth of material stored.")
return
/obj/machinery/monkey_recycler/attack_hand(var/mob/user as mob)
if (src.stat != 0) //NOPOWER etc
return
if(grinded >= minimum_monkeys)
to_chat(user, "The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube.")
playsound(get_turf(src), 'sound/machines/hiss.ogg', 50, 1)
grinded -= minimum_monkeys
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src.loc)
to_chat(user, "The machine's display flashes that it has [grinded] monkeys worth of material left.")
else
to_chat(user, "The machine needs at least 3 monkeys worth of material to produce a monkey cube. It only has [grinded].")
return
/obj/machinery/monkey_recycler/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
attackby(O,user)