Refactors butchering to a component - item-based butchering effectiveness, speed, and chances (#35744)

* Butchering component

* auto-butchering based on toolspeed

* Gives drills their butchering back

* redoes toggles
This commit is contained in:
Ashe Higgs
2018-02-25 15:50:16 -05:00
committed by CitadelStationBot
parent 0589c06507
commit a7d5e4cdcf
29 changed files with 207 additions and 30 deletions
@@ -10,6 +10,10 @@
energy_drain = 10
force = 15
/obj/item/mecha_parts/mecha_equipment/drill/Initialize()
. = ..()
AddComponent(/datum/component/butchering, 50, 100)
/obj/item/mecha_parts/mecha_equipment/drill/action(atom/target)
if(!action_checks(target))
return
@@ -76,14 +80,25 @@
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/drill/attach(obj/mecha/M)
..()
GET_COMPONENT_FROM(butchering, /datum/component/butchering, src)
butchering.butchering_enabled = TRUE
/obj/item/mecha_parts/mecha_equipment/drill/detach(atom/moveto)
..()
GET_COMPONENT_FROM(butchering, /datum/component/butchering, src)
butchering.butchering_enabled = FALSE
/obj/item/mecha_parts/mecha_equipment/drill/proc/drill_mob(mob/living/target, mob/user, var/drill_damage=80)
target.visible_message("<span class='danger'>[chassis] drills [target] with [src].</span>", \
"<span class='userdanger'>[chassis] drills [target] with [src].</span>")
add_logs(user, target, "attacked", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])")
if(target.stat == DEAD)
add_logs(user, target, "gibbed", name)
if(target.butcher_results)
target.harvest(chassis)//Butcher the mob with our drill.
if(target.butcher_results.len || target.guaranteed_butcher_results.len)
GET_COMPONENT_FROM(butchering, /datum/component/butchering, src)
butchering.Butcher(chassis, target)
else
target.gib()
else