diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 9a830e17773..d82d5636a96 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -6,6 +6,7 @@ // No comment /atom/proc/attackby(obj/item/W, mob/living/user, params) return + /atom/movable/attackby(obj/item/W, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) @@ -15,12 +16,11 @@ /mob/living/attackby(obj/item/I, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) - if((butcher_results) && (stat == DEAD)) - var/sharpness = is_sharp(I) - if(sharpness) + if(user.a_intent == I_HARM && stat == DEAD && butcher_results) //can we butcher it? + if(is_sharp(I)) user << "You begin to butcher [src]..." playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) - if(do_mob(user, src, 80/sharpness)) + if(do_mob(user, src, 80)) harvest(user) return diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index 576e87f3741..e14fe9029ec 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -32,7 +32,7 @@ melee_damage_lower = 15 melee_damage_upper = 15 AIStatus = AI_OFF - butcher_results = list(/obj/item/weapon/ectoplasm = 1) + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm = 1) var/summoned = FALSE var/cooldown = 0 var/damage_transfer = 1 //how much damage from each attack we transfer to the owner diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index a9aefdd7d0b..037852f463d 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -250,7 +250,7 @@ occupant.reagents.trans_to(new_meat, round(occupant.reagents.total_volume/slab_count,1)) if(occupant.get_species() == "Human") - new /obj/item/stack/sheet/animalhide/human + new /obj/item/stack/sheet/animalhide/human(src) new /obj/effect/decal/cleanable/blood/gibs(src) if(!UserOverride) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 7e1ef361a32..297c63a333c 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -23,7 +23,7 @@ if(R.get_amount() >= 4) R.use(4) user << "You add spikes to the frame." - new /obj/structure/kitchenspike(src.loc,) + new /obj/structure/kitchenspike(loc) add_fingerprint(user) qdel(src) @@ -42,12 +42,12 @@ /obj/structure/kitchenspike/attackby(obj/item/weapon/grab/G as obj, mob/user as mob) if(istype(G, /obj/item/weapon/crowbar)) - if(!src.buckled_mob) + if(!buckled_mob) playsound(loc, 'sound/items/Crowbar.ogg', 100, 1) if(do_after(user, 20, target = src)) user << "You pry the spikes out of the frame." new /obj/item/stack/rods(loc, 4) - new /obj/structure/kitchenspike_frame(src.loc,) + new /obj/structure/kitchenspike_frame(loc) add_fingerprint(user) qdel(src) else @@ -58,11 +58,13 @@ if(buckled_mob) user << "The spike already has something on it, finish collecting its meat first!" else - if(istype(G.affecting, /mob/living/)) + if(isliving(G.affecting)) if(!buckled_mob) - if(do_mob(src, src, 120)) + if(do_mob(user, src, 120)) if(spike(G.affecting)) + G.affecting.visible_message("[user] slams [G.affecting] onto the meat spike!", "[user] slams you onto the meat spike!", "You hear a squishy wet noise.") qdel(G) + return user << "You can't use that on the spike!" return @@ -77,9 +79,8 @@ if(victim.buckled) return 0 var/mob/living/H = victim - playsound(src.loc, "sound/effects/splat.ogg", 25, 1) - H.visible_message("[src] slams [victim] onto the meat spike!", "[src] slams you onto the meat spike!", "You hear a squishy wet noise.") - H.loc = src.loc + playsound(loc, "sound/effects/splat.ogg", 25, 1) + H.forceMove(loc) H.emote("scream") if(istype(H, /mob/living/carbon/human)) //So you don't get human blood when you spike a giant spidere var/turf/simulated/pos = get_turf(H) @@ -131,7 +132,7 @@ animate(M, transform = m180, time = 3) M.pixel_y = M.get_standard_pixel_y_offset(180) M.adjustBruteLoss(30) - src.visible_message(text("[M] falls free of the [src]!")) + visible_message("[M] falls free of the [src]!") unbuckle_mob() M.emote("scream") M.AdjustWeakened(10) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 52e6ea759c3..af4ccc91928 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -955,12 +955,12 @@ return 0 /mob/living/proc/harvest(mob/living/user) - //if(qdeleted(src)) - // return//Replace with what? - if(butcher_results) - for(var/path in butcher_results) - for(var/i = 1; i <= butcher_results[path];i++) - new path(src.loc) - butcher_results.Remove(path) //In case you want to have things like simple_animals drop their butcher results on gib, so it won't double up below. - visible_message("[user] butchers [src].") - gib() \ No newline at end of file + if(qdeleted(src)) + return + if(butcher_results) + for(var/path in butcher_results) + for(var/i = 1, i <= butcher_results[path], i++) + new path(loc) + butcher_results.Remove(path) //In case you want to have things like simple_animals drop their butcher results on gib, so it won't double up below. + visible_message("[user] butchers [src].") + gib() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm index a2a25da11c1..27df35c5bf9 100644 --- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm +++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm @@ -17,7 +17,7 @@ density = 0 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = 2 - butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 0) /mob/living/simple_animal/butterfly/New() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/tomato.dm b/code/modules/mob/living/simple_animal/friendly/tomato.dm index 39efa5227b5..f6d0bf9752e 100644 --- a/code/modules/mob/living/simple_animal/friendly/tomato.dm +++ b/code/modules/mob/living/simple_animal/friendly/tomato.dm @@ -8,7 +8,7 @@ turns_per_move = 5 maxHealth = 15 health = 15 - butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/tomatomeat = 2) + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/tomatomeat = 3) response_help = "prods the" response_disarm = "pushes aside the" response_harm = "smacks the"