diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 0a8bde59dde..bea6169ddc4 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -82,9 +82,19 @@ if(src.occupant) user << "\red The gibber is full, empty it first!" return - if (!( istype(G, /obj/item/weapon/grab)) || !(istype(G.affecting, /mob/living/carbon/human))) + + if( !(istype(G, /obj/item/weapon/grab)) ) user << "\red This item is not suitable for the gibber!" return + + if( !(istype(G.affecting, /mob/living/carbon)) && !(istype(G.affecting, /mob/living/simple_animal)) ) + user << "\red This item is not suitable for the gibber!" + return + + if(G.state < 2) + user << "\red You need a better grip to do that!" + return + if(G.affecting.abiotic(1)) user << "\red Subject may not have abiotic items on." return @@ -137,29 +147,69 @@ visible_message("\red You hear a loud squelchy grinding sound.") src.operating = 1 update_icon() - var/sourcename = src.occupant.real_name - var/sourcejob = src.occupant.job - var/sourcenutriment = src.occupant.nutrition / 15 - var/sourcetotalreagents = src.occupant.reagents.total_volume + var/totalslabs = 3 + var/obj/item/weapon/reagent_containers/food/snacks/meat/allmeat[totalslabs] - var/obj/item/weapon/reagent_containers/food/snacks/meat/human/allmeat[totalslabs] - for (var/i=1 to totalslabs) - var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new - newmeat.name = sourcename + newmeat.name - newmeat.subjectname = sourcename - newmeat.subjectjob = sourcejob - newmeat.reagents.add_reagent ("nutriment", sourcenutriment / totalslabs) // Thehehe. Fat guys go first - src.occupant.reagents.trans_to (newmeat, round (sourcetotalreagents / totalslabs, 1)) // Transfer all the reagents from the - allmeat[i] = newmeat + if( istype(src.occupant, /mob/living/carbon/human/) ) + var/sourcename = src.occupant.real_name + var/sourcejob = src.occupant.job + var/sourcenutriment = src.occupant.nutrition / 15 + var/sourcetotalreagents = src.occupant.reagents.total_volume - src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" //One shall not simply gib a mob unnoticed! - user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] gibbed [src.occupant]/[src.occupant.ckey]") + for(var/i=1 to totalslabs) + var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new + newmeat.name = sourcename + newmeat.name + newmeat.subjectname = sourcename + newmeat.subjectjob = sourcejob + newmeat.reagents.add_reagent("nutriment", sourcenutriment / totalslabs) // Thehehe. Fat guys go first + src.occupant.reagents.trans_to(newmeat, round (sourcetotalreagents / totalslabs, 1)) // Transfer all the reagents from the + allmeat[i] = newmeat + + src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" //One shall not simply gib a mob unnoticed! + user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]" + log_attack("\[[time_stamp()]\] [user]/[user.ckey] gibbed [src.occupant]/[src.occupant.ckey]") + + src.occupant.death(1) + src.occupant.ghostize() + + else if( istype(src.occupant, /mob/living/carbon/) || istype(src.occupant, /mob/living/simple_animal/ ) ) + + var/sourcename = src.occupant.name + var/sourcenutriment = src.occupant.nutrition / 15 + var/sourcetotalreagents = 0 + + if( istype(src.occupant, /mob/living/carbon/monkey/) || istype(src.occupant, /mob/living/carbon/alien/) ) // why are you gibbing aliens? oh well + totalslabs = 3 + sourcetotalreagents = src.occupant.reagents.total_volume + else if( istype(src.occupant, /mob/living/simple_animal/cow) || istype(src.occupant, /mob/living/simple_animal/hostile/bear) ) + totalslabs = 2 + else + totalslabs = 1 + sourcenutriment = src.occupant.nutrition / 30 // small animals don't have as much nutrition + + for(var/i=1 to totalslabs) + var/obj/item/weapon/reagent_containers/food/snacks/meat/newmeat = new + newmeat.name = "[sourcename]-[newmeat.name]" + + newmeat.reagents.add_reagent("nutriment", sourcenutriment / totalslabs) + + // Transfer reagents from the old mob to the meat + if( istype(src.occupant, /mob/living/carbon/) ) + src.occupant.reagents.trans_to(newmeat, round(sourcetotalreagents / totalslabs, 1)) + + allmeat[i] = newmeat + + if(src.occupant.client) // Gibbed a cow with a client in it? log that shit + src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" + user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]" + log_attack("\[[time_stamp()]\] [user]/[user.ckey] gibbed [src.occupant]/[src.occupant.ckey]") + + src.occupant.death(1) + src.occupant.ghostize() - src.occupant.death(1) - src.occupant.ghostize() del(src.occupant) + spawn(src.gibtime) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) operating = 0