From db887489d349c2ff0efd17056727a51fcbaae5a6 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Wed, 23 Mar 2016 17:31:29 -0400 Subject: [PATCH] tiggersgonnaeatme --- code/_onclick/item_attack.dm | 10 ++ .../gamemodes/miniantags/guardian/guardian.dm | 1 + code/game/gamemodes/miniantags/morph/morph.dm | 2 +- code/game/machinery/kitchen/gibber.dm | 3 + .../objects/items/stacks/sheets/leather.dm | 16 ++ .../items/stacks/sheets/sheet_types.dm | 1 + code/game/objects/structures/kitchen_spike.dm | 150 +++++++++++++----- code/modules/clothing/suits/miscellaneous.dm | 15 ++ .../living/carbon/alien/humanoid/humanoid.dm | 1 + .../mob/living/carbon/human/species/monkey.dm | 2 +- .../living/carbon/human/species/species.dm | 3 +- code/modules/mob/living/living.dm | 13 +- code/modules/mob/living/living_defines.dm | 2 + .../simple_animal/friendly/butterfly.dm | 3 +- .../mob/living/simple_animal/friendly/cat.dm | 3 +- .../living/simple_animal/friendly/corgi.dm | 3 +- .../mob/living/simple_animal/friendly/crab.dm | 3 +- .../mob/living/simple_animal/friendly/deer.dm | 3 +- .../simple_animal/friendly/farm_animals.dm | 27 ++-- .../mob/living/simple_animal/friendly/fox.dm | 3 +- .../living/simple_animal/friendly/lizard.dm | 3 +- .../living/simple_animal/friendly/mouse.dm | 3 +- .../mob/living/simple_animal/friendly/pug.dm | 3 +- .../living/simple_animal/friendly/tomato.dm | 3 +- .../mob/living/simple_animal/hostile/alien.dm | 3 +- .../mob/living/simple_animal/hostile/bat.dm | 3 +- .../mob/living/simple_animal/hostile/bear.dm | 3 +- .../mob/living/simple_animal/hostile/carp.dm | 3 +- .../simple_animal/hostile/giant_spider.dm | 20 +-- .../simple_animal/hostile/jungle_animals.dm | 6 +- .../living/simple_animal/hostile/mushroom.dm | 2 +- .../simple_animal/hostile/retaliate/fish.dm | 3 +- .../simple_animal/hostile/winter_mobs.dm | 3 +- .../mob/living/simple_animal/parrot.dm | 3 +- .../mob/living/simple_animal/simple_animal.dm | 18 +-- .../mob/living/simple_animal/tribbles.dm | 3 +- icons/mob/head.dmi | Bin 260815 -> 261026 bytes icons/obj/clothing/suits.dmi | Bin 155906 -> 156498 bytes icons/obj/kitchen.dmi | Bin 26903 -> 26922 bytes 39 files changed, 215 insertions(+), 131 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 8b77b80b769..9a830e17773 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -14,6 +14,16 @@ /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) + user << "You begin to butcher [src]..." + playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) + if(do_mob(user, src, 80/sharpness)) + harvest(user) + return + if(istype(I) && ismob(user)) I.attack(src, user) diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index 0d0870d375a..576e87f3741 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -32,6 +32,7 @@ melee_damage_lower = 15 melee_damage_upper = 15 AIStatus = AI_OFF + butcher_results = list(/obj/item/weapon/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/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 378ef84990a..e1a2b90b3e1 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -38,7 +38,7 @@ wander = 0 attacktext = "glomps" attack_sound = 'sound/effects/blobattack.ogg' - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/slab + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 2) var/morphed = 0 var/atom/movable/form = null diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index cb658ff937d..a9aefdd7d0b 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -245,9 +245,12 @@ new_meat.name = "[slab_name] [new_meat.name]" new_meat.reagents.add_reagent("nutriment",slab_nutrition) + if(occupant.reagents) 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/effect/decal/cleanable/blood/gibs(src) if(!UserOverride) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index b1659d8f2f2..a7e3a1a6732 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -5,6 +5,22 @@ icon_state = "sheet-hide" origin_tech = "" +var/global/list/datum/stack_recipe/human_recipes = list( \ + new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/bloated_human, 5, on_floor = 1), \ + new/datum/stack_recipe("bloated human costume head", /obj/item/clothing/head/human_head, 5, on_floor = 1), \ + ) + +/obj/item/stack/sheet/animalhide/human/New(var/loc, var/amount=null) + recipes = human_recipes + return ..() + +/obj/item/stack/sheet/animalhide/generic + name = "generic skin" + desc = "A piece of generic skin." + singular_name = "generic skin piece" + icon_state = "sheet-hide" + origin_tech = null + /obj/item/stack/sheet/animalhide/corgi name = "corgi hide" desc = "The by-product of corgi farming." diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 11db68ec671..32453576ef7 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -51,6 +51,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \ null, \ new/datum/stack_recipe_list("airlock assemblies", list( \ new/datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index e865805991b..7e1ef361a32 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -1,5 +1,33 @@ + //////Kitchen Spike +/obj/structure/kitchenspike_frame + name = "meatspike frame" + icon = 'icons/obj/kitchen.dmi' + icon_state = "spikeframe" + desc = "The frame of a meat spike." + density = 1 + anchored = 0 + +/obj/structure/kitchenspike_frame/attackby(obj/item/I, mob/user, params) + add_fingerprint(user) + if(istype(I, /obj/item/weapon/wrench)) + if(anchored) + user << "You unwrench [src] from the floor." + anchored = 0 + else + user << "You wrench [src] into place." + anchored = 1 + else if(istype(I, /obj/item/stack/rods)) + var/obj/item/stack/rods/R = I + if(R.get_amount() >= 4) + R.use(4) + user << "You add spikes to the frame." + new /obj/structure/kitchenspike(src.loc,) + add_fingerprint(user) + qdel(src) + + /obj/structure/kitchenspike name = "a meat spike" icon = 'icons/obj/kitchen.dmi' @@ -7,54 +35,104 @@ desc = "A spike for collecting meat from animals." density = 1 anchored = 1 - var/meat = 0 - var/occupied - var/meat_type - var/victim_name = "corpse" + buckle_lying = 0 + can_buckle = 1 + + /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) + 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,) + add_fingerprint(user) + qdel(src) + else + user << "You can't do that while something's on the spike!" + return if(!istype(G, /obj/item/weapon/grab) || !G.affecting) return - if(occupied) + if(buckled_mob) user << "The spike already has something on it, finish collecting its meat first!" else - if(spike(G.affecting)) - visible_message("[user] has forced [G.affecting] onto the spike, killing them instantly!") - qdel(G.affecting) - qdel(G) - else - user << "They are too big for the spike, try something smaller!" + if(istype(G.affecting, /mob/living/)) + if(!buckled_mob) + if(do_mob(src, src, 120)) + if(spike(G.affecting)) + qdel(G) + user << "You can't use that on the spike!" + return /obj/structure/kitchenspike/proc/spike(var/mob/living/victim) if(!istype(victim)) return - if(istype(victim, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = victim - if(!H.species.is_small) - return 0 - meat_type = H.species.meat_type - icon_state = "spikebloody" - else if(istype(victim, /mob/living/carbon/alien)) - meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat - icon_state = "spikebloodygreen" - else - return 0 - victim_name = victim.name - occupied = 1 - meat = 5 + if(buckled_mob) //to prevent spam/queing up attacks + return 0 + 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 + 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) + pos.add_blood_floor(H) + H.adjustBruteLoss(30) + H.buckled = src + H.dir = 2 + buckled_mob = H + var/matrix/m180 = matrix() + m180.Turn(180) + animate(H, transform = m180, time = 3) + H.pixel_y = H.get_standard_pixel_y_offset(180) return 1 -/obj/structure/kitchenspike/attack_hand(mob/user as mob) - if(..() || !occupied) - return - meat-- - new meat_type(get_turf(src)) - if(src.meat > 1) - user << "You remove some meat from \the [victim_name]." - else if(src.meat == 1) - user << "You remove the last piece of meat from \the [victim_name]!" - icon_state = "spike" - occupied = 0 + + +/obj/structure/kitchenspike/user_buckle_mob(mob/living/M, mob/living/user) //Don't want them getting put on the rack other than by spiking + return + +/obj/structure/kitchenspike/user_unbuckle_mob(mob/living/carbon/human/user) + if(buckled_mob && buckled_mob.buckled == src) + var/mob/living/M = buckled_mob + if(M != user) + M.visible_message(\ + "[user.name] tries to pull [M.name] free of the [src]!",\ + "[user.name] is trying to pull you off of [src], opening up fresh wounds!",\ + "You hear a squishy wet noise.") + if(!do_after(user, 300, target = src)) + if(M && M.buckled) + M.visible_message(\ + "[user.name] fails to free [M.name]!",\ + "[user.name] fails to pull you off of [src].") + return + + else + M.visible_message(\ + "[M.name] struggles to break free from the [src]!",\ + "You struggle to break free from the [src], exacerbating your wounds! (Stay still for two minutes.)",\ + "You hear a wet squishing noise..") + M.adjustBruteLoss(30) + if(!do_after(M, 1200, target = src)) + if(M && M.buckled) + M << "You fail to free yourself!" + return + if(!M.buckled) + return + var/matrix/m180 = matrix(M.transform) + m180.Turn(180) + 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]!")) + unbuckle_mob() + M.emote("scream") + M.AdjustWeakened(10) + diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 8738104fcac..85dae45750b 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -224,6 +224,21 @@ item_state = "ponchoshame" flags = NODROP +/obj/item/clothing/suit/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!? + name = "bloated human suit" + desc = "A horribly bloated suit made from human skins." + icon_state = "lingspacesuit" + item_state = "lingspacesuit" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/head/human_head + name = "bloated human head" + desc = "A horribly bloated and mismatched human head." + icon_state = "lingspacehelmet" + item_state = "lingspacehelmet" + body_parts_covered = HEAD + + /* * Misc */ diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index f04f0567eba..b399bb21731 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -2,6 +2,7 @@ name = "alien" icon_state = "alien_s" + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/xenomeat = 5, /obj/item/stack/sheet/animalhide/xeno = 1) var/obj/item/weapon/r_store = null var/obj/item/weapon/l_store = null var/caste = "" diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index 5f9828f1b45..cebcb1361b6 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -15,6 +15,7 @@ is_small = 1 has_fine_manipulation = 0 ventcrawler = 1 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1) show_ssd = 0 eyes = "blank_eyes" death_message = "lets out a faint chimper as it collapses and stops moving..." @@ -29,7 +30,6 @@ //unarmed_types = list(/datum/unarmed_attack/bite, /datum/unarmed_attack/claws) //inherent_verbs = list(/mob/living/proc/ventcrawl) - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/monkey total_health = 75 brute_mod = 1.5 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index a003434c1a3..10bab983600 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -78,8 +78,7 @@ var/blood_color = "#A10808" //Red. var/flesh_color = "#FFC896" //Pink. var/single_gib_type = /obj/effect/decal/cleanable/blood/gibs - var/meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human - + var/list/butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/human = 1) var/base_color //Used when setting species. //Used in icon caching. diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index efe21341a66..52e6ea759c3 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -952,4 +952,15 @@ //used in datum/reagents/reaction() proc /mob/living/proc/get_permeability_protection() - return 0 \ No newline at end of file + 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 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index fa5c43ab8e1..ce73ae369c0 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -52,4 +52,6 @@ var/list/datum/action/actions = list() var/step_count = 0 + var/list/butcher_results = null + var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. \ 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 a6c5effdde3..a2a25da11c1 100644 --- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm +++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm @@ -17,8 +17,7 @@ density = 0 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = 2 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 0 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) /mob/living/simple_animal/butterfly/New() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 950d47a7d69..b2a0c129b29 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -16,8 +16,7 @@ see_in_dark = 6 simplespecies = /mob/living/simple_animal/pet/cat childtype = /mob/living/simple_animal/pet/cat/kitten - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 2b53e124796..6d09809fe2c 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -15,8 +15,7 @@ emote_see = list("shakes its head", "shivers") speak_chance = 1 turns_per_move = 10 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/corgi = 3) response_help = "pets" response_disarm = "bops" response_harm = "kicks" diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 27ead7947e1..524cffc9979 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -11,8 +11,7 @@ emote_see = list("clacks") speak_chance = 1 turns_per_move = 5 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "stomps the" diff --git a/code/modules/mob/living/simple_animal/friendly/deer.dm b/code/modules/mob/living/simple_animal/friendly/deer.dm index 68f168188b4..0cc59c07f94 100644 --- a/code/modules/mob/living/simple_animal/friendly/deer.dm +++ b/code/modules/mob/living/simple_animal/friendly/deer.dm @@ -10,8 +10,7 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 0 //I'm so funny - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 4) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index d7b76725db8..f3e77854882 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -12,8 +12,7 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 4 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 4) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -103,8 +102,7 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 6 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 6) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -168,8 +166,7 @@ density = 0 speak_chance = 2 turns_per_move = 2 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 1 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -211,8 +208,7 @@ var/global/chicken_count = 0 density = 0 speak_chance = 2 turns_per_move = 3 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 2 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 2) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -294,8 +290,7 @@ var/global/chicken_count = 0 speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/ham - meat_amount = 6 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/ham = 6) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -316,8 +311,7 @@ var/global/chicken_count = 0 speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat //enough to make one turkey - meat_amount = 4 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 4) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -338,8 +332,7 @@ var/global/chicken_count = 0 speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 6 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 6) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -360,8 +353,7 @@ var/global/chicken_count = 0 speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 6 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 6) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" @@ -382,8 +374,7 @@ var/global/chicken_count = 0 speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 6 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 6) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index f34ae89ef22..cd62ababfe7 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -13,8 +13,7 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index 74bc6839ba1..27cb2eb17cf 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -20,6 +20,5 @@ density = 0 pass_flags = PASSTABLE | PASSMOB can_hide = 1 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 1 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) can_collar = 1 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 03fbb30ed06..b5065fb3f19 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -15,8 +15,7 @@ see_in_dark = 6 maxHealth = 5 health = 5 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 1 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "stamps on the" diff --git a/code/modules/mob/living/simple_animal/friendly/pug.dm b/code/modules/mob/living/simple_animal/friendly/pug.dm index a819602719a..03dd45d5036 100644 --- a/code/modules/mob/living/simple_animal/friendly/pug.dm +++ b/code/modules/mob/living/simple_animal/friendly/pug.dm @@ -12,8 +12,7 @@ emote_see = list("shakes its head.", "chases its tail.","shivers.") speak_chance = 1 turns_per_move = 10 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/pug - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/pug = 3) response_help = "pets" response_disarm = "bops" response_harm = "kicks" diff --git a/code/modules/mob/living/simple_animal/friendly/tomato.dm b/code/modules/mob/living/simple_animal/friendly/tomato.dm index 0ee27da03c1..39efa5227b5 100644 --- a/code/modules/mob/living/simple_animal/friendly/tomato.dm +++ b/code/modules/mob/living/simple_animal/friendly/tomato.dm @@ -8,8 +8,7 @@ turns_per_move = 5 maxHealth = 15 health = 15 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/tomatomeat = 2) response_help = "prods the" response_disarm = "pushes aside the" response_harm = "smacks the" diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 336bc7f9906..f21699e544f 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -10,8 +10,7 @@ response_disarm = "shoves the" response_harm = "hits the" speed = 0 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/xenomeat = 3) maxHealth = 100 health = 100 harm_intent_damage = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm index 0c2174d131e..0d0a46e3053 100644 --- a/code/modules/mob/living/simple_animal/hostile/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/bat.dm @@ -8,8 +8,7 @@ icon_gib = "bat_dead" speak_chance = 0 turns_per_move = 3 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 1 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "hits the" diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 9c6f24bd4ac..dc764c317da 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -13,8 +13,7 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat - meat_amount = 5 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/bearmeat = 5, /obj/item/clothing/head/bearpelt = 1) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "hits" diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 650f19cb758..9c3020e4839 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -9,8 +9,7 @@ icon_gib = "carp_gib" speak_chance = 0 turns_per_move = 5 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat - meat_amount = 2 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 2) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "hits the" diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 2bd6a611b24..9de16829259 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -33,8 +33,7 @@ speak_chance = 5 turns_per_move = 5 see_in_dark = 10 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/spidermeat - meat_amount = 2 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/spidermeat = 2, /obj/item/weapon/reagent_containers/food/snacks/spiderleg = 8) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "hits" @@ -57,8 +56,8 @@ icon_state = "nurse" icon_living = "nurse" icon_dead = "nurse_dead" - meat_type = /obj/item/weapon/reagent_containers/food/snacks/spidereggs - meat_amount = 4 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/spidermeat = 2, /obj/item/weapon/reagent_containers/food/snacks/spiderleg = 8, /obj/item/weapon/reagent_containers/food/snacks/spidereggs = 4) + maxHealth = 40 health = 40 melee_damage_lower = 5 @@ -95,19 +94,6 @@ stop_automated_movement = 0 walk(src,0) -// Chops off each leg with a 50/50 chance of harvesting one, until finally calling -// default harvest action -/mob/living/simple_animal/hostile/poison/giant_spider/harvest() - if(butcher_state > 0) - butcher_state-- - icon_state = icon_dead + "[butcher_state]" - - if(prob(50)) - new /obj/item/weapon/reagent_containers/food/snacks/spiderleg(src.loc) - return - else - return ..() - /mob/living/simple_animal/hostile/poison/giant_spider/nurse/proc/GiveUp(var/C) spawn(100) if(busy == MOVING_TO_TARGET) diff --git a/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm b/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm index 7f705297dbd..6404ab29f21 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm @@ -13,8 +13,7 @@ icon_gib = "panther_dead" speak_chance = 0 turns_per_move = 3 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "hits the" @@ -72,8 +71,7 @@ icon_gib = "snake_dead" speak_chance = 0 turns_per_move = 1 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 2 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 2) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "hits the" diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 8559bd9d3d6..0555ae10ef7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -8,7 +8,7 @@ turns_per_move = 1 maxHealth = 10 health = 10 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice = 1) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "whacks" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm index 65964739a32..b8eb3a96459 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm @@ -8,8 +8,7 @@ icon_gib = "carp_gib" speak_chance = 0 turns_per_move = 5 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat - meat_amount = 1 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1) response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "hits the" diff --git a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm index 8ca70430d44..4606a5157ee 100644 --- a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm @@ -66,8 +66,7 @@ icon_state = "reindeer" icon_living = "reindeer" icon_dead = "reindeer-dead" - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 3) melee_damage_lower = 5 melee_damage_upper = 10 diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 1732caa55f3..1e917b54ad1 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -43,8 +43,7 @@ speak_chance = 1//1% (1 in 100) chance every tick; So about once per 150 seconds, assuming an average tick is 1.5s turns_per_move = 5 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/cracker/ - meat_amount = 3 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/cracker = 3) response_help = "pets the" response_disarm = "gently moves aside the" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 3a6333a3d00..da0c58a4d80 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -23,8 +23,6 @@ var/turns_per_move = 1 var/turns_since_move = 0 universal_speak = 0 - var/meat_amount = 0 - var/meat_type var/stop_automated_movement = 0 //Use this to temporarely stop random movement or to if you write special movement code for animals. var/wander = 1 // Does the mob wander around when idle? var/stop_automated_movement_when_pulled = 1 //When set to 1 this stops the animal from moving when someone is pulling it. @@ -273,9 +271,10 @@ /mob/living/simple_animal/gib() if(icon_gib) flick(icon_gib, src) - if(meat_amount && meat_type) - for(var/i = 0; i < meat_amount; i++) - new meat_type(src.loc) + if(butcher_results) + for(var/path in butcher_results) + for(var/i = 1; i <= butcher_results[path];i++) + new path(src.loc) ..() @@ -448,9 +447,6 @@ name = C.tagname real_name = C.tagname return - else if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead. - if(istype(O, /obj/item/weapon/kitchen/knife)) - harvest() else user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) @@ -611,12 +607,6 @@ if(alone && partner && children < 3) new childtype(loc) - -// Harvest an animal's delicious byproducts -/mob/living/simple_animal/proc/harvest() - gib() - return - /mob/living/simple_animal/say_quote(var/message) var/verb = "says" diff --git a/code/modules/mob/living/simple_animal/tribbles.dm b/code/modules/mob/living/simple_animal/tribbles.dm index 3f082c020db..7e0f0071fe7 100644 --- a/code/modules/mob/living/simple_animal/tribbles.dm +++ b/code/modules/mob/living/simple_animal/tribbles.dm @@ -16,8 +16,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, turns_per_move = 5 maxHealth = 10 health = 10 - meat_type = /obj/item/stack/sheet/fur - meat_amount = 1 + butcher_results = list(/obj/item/stack/sheet/fur = 1) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "whacks" diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index de442968c0a7814b0c724a4932687e1e8dc87a2e..38ce685a26673f55ecd06b02a951fc8afb0be308 100644 GIT binary patch delta 12352 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 bI0x=K)$uo`rv320^*^|-(XEOb_n!VAnEKSS delta 12142 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 diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 0066bfd654fef82182d8c48d44d432b987776cc4..cd6ae3095a08b8a106b039cc7cf28da39a4f2ecd 100644 GIT binary patch delta 4538 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 delta 3942 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 T9b)g<0Hn~;&{eNgwG90qqSD=w