diff --git a/GainStation13/code/modules/mob/living/nutribot.dm b/GainStation13/code/modules/mob/living/nutribot.dm index c85fcff0..59d710fd 100644 --- a/GainStation13/code/modules/mob/living/nutribot.dm +++ b/GainStation13/code/modules/mob/living/nutribot.dm @@ -12,7 +12,7 @@ /mob/living/simple_animal/bot/nutribot name = "\improper Nutribot" desc = "A little nutritional robot. He looks somewhat underwhelmed." - icon = 'icons/mob/aibots.dmi' + icon = 'GainStation13/icons/mob/nutribot.dmi' icon_state = "nutribot0" density = FALSE anchored = FALSE @@ -52,7 +52,7 @@ //Setting which reagents to use to treat what by default. By id. var/treatment_thin = /datum/reagent/consumable/nutriment var/treatment_thirsty = /datum/reagent/water - var/hunger_check = NUTRITION_LEVEL_FED + var/hunger_check = NUTRITION_LEVEL_HUNGRY /*var/treatment_brute_avoid = /datum/reagent/medicine/tricordrazine var/treatment_brute = /datum/reagent/medicine/bicaridine var/treatment_oxy_avoid = null @@ -104,18 +104,18 @@ /mob/living/simple_animal/bot/nutribot/update_icon() cut_overlays() if(!on) - icon_state = "off" + icon_state = "nutribot0" return if(IsStun()) - icon_state = "medibota" + icon_state = "nutribota" return if(mode == BOT_HEALING) - icon_state = "medibots[stationary_mode]" + icon_state = "nutribots[stationary_mode]" return else if(stationary_mode) //Bot has yellow light to indicate stationary mode. - icon_state = "medibot2" + icon_state = "nutribot2" else - icon_state = "medibot1" + icon_state = "nutribot1" /mob/living/simple_animal/bot/nutribot/Initialize(mapload, new_skin) . = ..() @@ -177,7 +177,7 @@ dat += "++" dat += "
"*/ - dat += "Injection Level: " + dat += "Feed Amount: " dat += "- " dat += "[injection_amount] " dat += "+ " @@ -189,9 +189,9 @@ dat += "Hunger Check: " dat += "[(hunger_check==NUTRITION_LEVEL_HUNGRY) ? "Yes" : "No"]
" - dat += "Maximum Weight: " - dat += "[feed_threshold ? 140+(feed_threshold*FATNESS_TO_WEIGHT_RATIO) : "???"] " - dat += "Disable Maximum Weight: ["Disable"]
" + dat += "Maximum BFI: " + dat += "[feed_threshold ? feed_threshold : "???"] " + dat += "Disable Maximum BFI: ["Disable"]
" dat += "- " dat += "+ " dat += "

" @@ -304,7 +304,7 @@ if(assess_patient(H)) last_found = world.time if((last_newpatient_speak + 300) < world.time) //Don't spam these messages! - var/list/messagevoice = list("Hey, [H.name]! Hold on, I'm coming." = 'sound/voice/medbot/coming.ogg',"Wait [H.name]! I want to help!" = 'sound/voice/medbot/help.ogg',"[H.name], you appear to be injured!" = 'sound/voice/medbot/injured.ogg') + var/list/messagevoice = list("Hey, [H.name]! Hold on, I'm coming." = 'sound/voice/medbot/coming.ogg',"Wait [H.name]! I want to help!" = 'sound/voice/medbot/help.ogg') var/message = pick(messagevoice) if(prob(2) && ISINRANGE_EX(H.getFireLoss(), 0, 20)) message = "Notices your minor burns*OwO what's this?" @@ -500,17 +500,17 @@ //declare(C) //If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS. - if((reagent_glass) && (use_beaker) && (C.fatness <= feed_threshold)) + if((reagent_glass) && (use_beaker) && ((C.fatness <= feed_threshold) || (feed_threshold == 0))) for(var/A in reagent_glass.reagents.reagent_list) var/datum/reagent/R = A if(!C.reagents.has_reagent(R.type)) return TRUE //They're injured enough for it! - if((C.nutrition <= hunger_check) && (C.fatness <= feed_threshold) && (!C.reagents.has_reagent(treatment_thin))) + if((C.nutrition <= hunger_check) && ((C.fatness <= feed_threshold) || (feed_threshold == 0)) && (!C.reagents.has_reagent(treatment_thin))) return TRUE //If they're already medicated don't bother! - if((C.thirst <= THIRST_LEVEL_QUENCHED) && (!C.reagents.has_reagent(treatment_thirsty))) + if((C.thirst <= THIRST_LEVEL_THIRSTY) && (!C.reagents.has_reagent(treatment_thirsty))) return TRUE //If they're already medicated don't bother! /*var/treatment_toxavoid = get_avoidchem_toxin(C) @@ -597,7 +597,7 @@ var/reagent_id = null if(emagged == 2) //Emagged! Time to poison everybody. - reagent_id = "emagged" //evil fucking check for a string as a reagent this shit is evil. its supposed to inject corn oil AND filzulphite but ill handle that later + reagent_id = /datum/reagent/consumable/cornoil //evil fucking check for a string as a reagent this shit is evil. its supposed to inject corn oil AND filzulphite but ill handle that later else /*if(treat_virus) @@ -657,8 +657,8 @@ if(!emagged && check_overdose(patient,reagent_id,injection_amount)) soft_reset() return - C.visible_message("[src] is trying to inject [patient]!", \ - "[src] is trying to inject you!") + C.visible_message("[src] is trying to feed [patient]!", \ + "[src] is trying to feed you!") var/failed = FALSE if(do_mob(src, patient, 30)) //Is C == patient? This is so confusing @@ -670,15 +670,15 @@ reagent_glass.reagents.trans_to(patient,injection_amount) //Inject from beaker instead. else patient.reagents.add_reagent(reagent_id,injection_amount) - C.visible_message("[src] injects [patient] with its syringe!", \ - "[src] injects you with its syringe!") + C.visible_message("[src] feeds [patient] with its tube!", \ + "[src] feeds you with its tube!") else failed = TRUE else failed = TRUE if(failed) - visible_message("[src] retracts its syringe.") + visible_message("[src] retracts its tube.") update_icon() soft_reset() return @@ -700,9 +700,9 @@ visible_message("[src] blows apart!") var/atom/Tsec = drop_location() - drop_part(firstaid, Tsec) + new /obj/item/stack/sheet/cardboard(Tsec) new /obj/item/assembly/prox_sensor(Tsec) - drop_part(healthanalyzer, Tsec) + new /obj/item/stack/sheet/mineral/calorite(Tsec) if(reagent_glass) drop_part(reagent_glass, Tsec) @@ -724,7 +724,7 @@ declare_cooldown = world.time + 200 /obj/machinery/bot_core/nutribot - req_one_access = list(ACCESS_MEDICAL, ACCESS_ROBOTICS) + req_one_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_ROBOTICS) #undef NUTRIBOT_PANIC_NONE #undef NUTRIBOT_PANIC_LOW diff --git a/code/datums/components/crafting/recipes/recipes_robot.dm b/code/datums/components/crafting/recipes/recipes_robot.dm index ae5bca77..d75c6bf6 100644 --- a/code/datums/components/crafting/recipes/recipes_robot.dm +++ b/code/datums/components/crafting/recipes/recipes_robot.dm @@ -81,4 +81,14 @@ name = "Potat-OS" reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 ) result = /obj/item/aicard/potato - category = CAT_ROBOT \ No newline at end of file + category = CAT_ROBOT + +/datum/crafting_recipe/nutribot + name = "Nutribot" + reqs = list(/obj/item/stack/sheet/cardboard = 1, + /obj/item/stack/sheet/mineral/calorite = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/assembly/prox_sensor = 1) + result = /mob/living/simple_animal/bot/nutribot + time = 40 + category = CAT_ROBOT diff --git a/tgstation.dme b/tgstation.dme index f1798d7a..79a49aba 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3119,6 +3119,7 @@ #include "GainStation13\code\modules\mob\living\emote.dm" #include "GainStation13\code\modules\mob\living\emote_modular.dm" #include "GainStation13\code\modules\mob\living\emote_ported.dm" +#include "GainStation13\code\modules\mob\living\nutribot.dm" #include "GainStation13\code\modules\mob\living\vore\eating\living_vr.dm" #include "GainStation13\code\modules\mob\living\vore\eating\trasheat_lists.dm" #include "GainStation13\code\modules\reagents\chemistry\reagents\consumable_reagents.dm"