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 4cbddcb2642..0e924a432a3 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -25,11 +25,9 @@ melee_damage_lower = 1 melee_damage_upper = 2 stop_automated_movement_when_pulled = 1 - var/datum/reagents/udder = null + var/milk_content = 0 /mob/living/simple_animal/hostile/retaliate/goat/New() - udder = new(50) - udder.my_atom = src ..() /mob/living/simple_animal/hostile/retaliate/goat/Life() @@ -44,9 +42,8 @@ LoseTarget() src.visible_message("\blue [src] calms down.") - if(stat == CONSCIOUS) - if(udder && prob(5)) - udder.add_reagent("milk", rand(5, 10)) + if(stat == CONSCIOUS && prob(5)) + milk_content = min(50, milk_content+rand(5, 10)) if(locate(/obj/effect/plant) in loc) var/obj/effect/plant/SV = locate(/obj/effect/plant) in loc @@ -76,15 +73,20 @@ /mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) - user.visible_message("[user] milks [src] using \the [O].", "You milk [src] using \the [O].") + user.changeNext_move(CLICK_CD_MELEE) var/obj/item/weapon/reagent_containers/glass/G = O - var/transfered = udder.trans_id_to(G, "milk", rand(5,10)) - if(G.reagents.total_volume >= G.volume) - user << "[O] is full!" - if(!transfered) - user << "The udder is dry! Wait a bit longer..." + var/transfered = min(milk_content, rand(5,10), (G.volume - G.reagents.total_volume)) + if(transfered > 0) + user.visible_message("[user] milks [src] using \the [O].") + G.reagents.add_reagent("milk", transfered) + milk_content -= transfered + else if(G.reagents.total_volume >= G.volume) + user << "\red \The [O] is full." + else + user << "\red The udder is dry. Wait a bit longer..." else ..() + //cow /mob/living/simple_animal/cow name = "cow" @@ -108,30 +110,31 @@ attacktext = "kicks" attack_sound = 'sound/weapons/punch1.ogg' health = 50 - var/datum/reagents/udder = null + var/milk_content = 0 /mob/living/simple_animal/cow/New() - udder = new(50) - udder.my_atom = src ..() -/mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob, params) +/mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob, params, params) if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) - user.visible_message("[user] milks [src] using \the [O].", "You milk [src] using \the [O].") + user.changeNext_move(CLICK_CD_MELEE) var/obj/item/weapon/reagent_containers/glass/G = O - var/transfered = udder.trans_id_to(G, "milk", rand(5,10)) - if(G.reagents.total_volume >= G.volume) - user << "[O] is full." - if(!transfered) - user << "The udder is dry. Wait a bit longer..." + var/transfered = min(milk_content, rand(5,10), (G.volume - G.reagents.total_volume)) + if(transfered > 0) + user.visible_message("[user] milks [src] using \the [O].") + G.reagents.add_reagent("milk", transfered) + milk_content -= transfered + else if(G.reagents.total_volume >= G.volume) + user << "\red \The [O] is full." + else + user << "\red The udder is dry. Wait a bit longer..." else ..() /mob/living/simple_animal/cow/Life() . = ..() - if(stat == CONSCIOUS) - if(udder && prob(5)) - udder.add_reagent("milk", rand(5, 10)) + if(stat == CONSCIOUS && prob(5)) + milk_content = min(50, milk_content+rand(5, 10)) /mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M as mob) if(!stat && M.a_intent == "disarm" && icon_state != icon_dead)