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 2e28eaaeaa9..8850d557869 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -9,6 +9,7 @@ name = "giant spider" desc = "Furry and black, it makes you shudder to look at it. This one has deep red eyes." icon_state = "guard" + var/butcher_state = 8 // Icon state for dead spider icons icon_living = "guard" icon_dead = "guard_dead" speak_emote = list("chitters") @@ -16,7 +17,7 @@ speak_chance = 5 turns_per_move = 5 see_in_dark = 10 - meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat + meat_type = /obj/item/weapon/reagent_containers/food/snacks/spidermeat response_help = "pets" response_disarm = "gently pushes aside" response_harm = "hits" @@ -40,6 +41,7 @@ icon_state = "nurse" icon_living = "nurse" icon_dead = "nurse_dead" + meat_type = /obj/item/weapon/reagent_containers/food/snacks/spidereggs maxHealth = 40 health = 40 melee_damage_lower = 5 @@ -87,6 +89,19 @@ 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/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/giant_spider/nurse/proc/GiveUp(var/C) spawn(100) if(busy == MOVING_TO_TARGET) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 1c37bb25c8f..f28358bb5da 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -399,12 +399,7 @@ return else if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead. if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch)) - new meat_type (get_turf(src)) - if(prob(95)) - del(src) - return - gib() - return + harvest() else if(O.force) var/damage = O.force @@ -509,4 +504,14 @@ alone = 0 continue if(alone && partner && children < 3) - new childtype(loc) \ No newline at end of file + new childtype(loc) + +// Harvest an animal's delicious byproducts +/mob/living/simple_animal/proc/harvest() + new meat_type (get_turf(src)) + if(prob(95)) + del(src) + return + gib() + return + diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index e6be105f74b..cae1c159e07 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ