diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index ca424191b0..6dfa4e9c15 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -417,3 +417,6 @@ /mob/living/silicon/has_vision() return 0 //NOT REAL EYES + +/mob/living/silicon/can_feed() + return FALSE \ No newline at end of file diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 7e255be821..23335e0ab8 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -685,3 +685,6 @@ var/global/image/backplane return item.screen_loc = screen_place + +/mob/proc/can_feed() + return TRUE \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/_reagent_containers.dm b/code/modules/reagents/reagent_containers/_reagent_containers.dm index 551eb6b65a..5ad6c305fe 100644 --- a/code/modules/reagents/reagent_containers/_reagent_containers.dm +++ b/code/modules/reagents/reagent_containers/_reagent_containers.dm @@ -80,53 +80,41 @@ return /obj/item/weapon/reagent_containers/proc/standard_feed_mob(var/mob/user, var/mob/target) // This goes into attack - if(!istype(target) || issilicon(target)) - return 0 + if(!istype(target) || !target.can_feed()) + return FALSE if(!reagents || !reagents.total_volume) to_chat(user, "\The [src] is empty.") - return 1 + return TRUE - if(target == user) - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - if(!H.check_has_mouth()) - to_chat(user, "Where do you intend to put \the [src]? You don't have a mouth!") - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - to_chat(user, "\The [blocked] is in the way!") - return + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(!H.check_has_mouth()) + to_chat(user, "Where do you intend to put \the [src]? [user == target ? "You don't" : "\The [H] doesn't"] have a mouth!") + return FALSE + var/obj/item/blocked = H.check_mouth_coverage() + if(blocked) + to_chat(user, "\The [blocked] is in the way!") + return FALSE - user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things + user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things + if(user == target) self_feed_message(user) reagents.trans_to_mob(user, issmall(user) ? CEILING(amount_per_transfer_from_this/2, 1) : amount_per_transfer_from_this, CHEM_INGEST) feed_sound(user) - return 1 + return TRUE + else - if(istype(target, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = target - if(!H.check_has_mouth()) - to_chat(user, "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!") - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - to_chat(user, "\The [blocked] is in the way!") - return - other_feed_message_start(user, target) - - user.setClickCooldown(user.get_attack_speed(src)) if(!do_mob(user, target)) - return - + return FALSE other_feed_message_finish(user, target) var/contained = reagentlist() add_attack_logs(user,target,"Fed from [src.name] containing [contained]") reagents.trans_to_mob(target, amount_per_transfer_from_this, CHEM_INGEST) feed_sound(user) - return 1 + return TRUE /obj/item/weapon/reagent_containers/proc/standard_pour_into(var/mob/user, var/atom/target) // This goes into afterattack and yes, it's atom-level if(!target.is_open_container() || !target.reagents)