diff --git a/code/modules/mob/living/simple_animal/animals/snake_vr.dm b/code/modules/mob/living/simple_animal/animals/snake_vr.dm index 74ebbf28e7..62a4d8b983 100644 --- a/code/modules/mob/living/simple_animal/animals/snake_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/snake_vr.dm @@ -26,29 +26,79 @@ /mob/living/simple_animal/snake/Noodle name = "Noodle" desc = "This snake is particularly chubby and demands nothing but the finest of treats." + var/turns_since_scan = 0 + var/obj/movement_target + +/mob/living/simple_animal/snake/Noodle/Life() //All taken directly from Ian in corgi.dm + if(!..()) + return 0 + + if(!stat && !resting && !buckled && !ai_inactive) + turns_since_scan++ + if(turns_since_scan > 5) + turns_since_scan = 0 + if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) + movement_target = null + stop_automated_movement = 0 + if(!movement_target || !(movement_target.loc in oview(src, 5)) ) + movement_target = null + stop_automated_movement = 0 + for(var/obj/item/weapon/reagent_containers/food/snacks/snakesnack/S in oview(src,3)) + if(isturf(S.loc)) + movement_target = S + break + if(movement_target) + stop_automated_movement = 1 + step_to(src,movement_target,1) + sleep(5) + step_to(src,movement_target,1) + sleep(5) + step_to(src,movement_target,1) + + if(movement_target) //Not redundant due to sleeps, Item can be gone in 10 decisecomds + if (movement_target.loc.x < src.x) + set_dir(WEST) + else if (movement_target.loc.x > src.x) + set_dir(EAST) + else if (movement_target.loc.y < src.y) + set_dir(SOUTH) + else if (movement_target.loc.y > src.y) + set_dir(NORTH) + else + set_dir(SOUTH) + + if(isturf(movement_target.loc) ) + visible_message("[src] swallows the [movement_target] whole!") + qdel(movement_target) + else if(ishuman(movement_target.loc) && prob(20)) + visible_emote("stares at the [movement_target] that [movement_target.loc] with an unknowable reptilian gaze.") //Special snek-snax for Noodle! -obj/item/weapon/reagent_containers/food/snacks/snakesnack +/obj/item/weapon/reagent_containers/food/snacks/snakesnack name = "Sugar mouse" desc = "A little mouse treat made of coloured sugar. Noodle loves these!" var/snack_colour icon = 'icons/mob/snake_vr.dmi' icon_state = "snack_yellow" + nutriment_amt = 1 + nutriment_desc = list("sugar" = 1) -obj/item/weapon/reagent_containers/food/snacks/snakesnack/New() +/obj/item/weapon/reagent_containers/food/snacks/snakesnack/New() ..() if(!snack_colour) snack_colour = pick( list("yellow","green","pink","blue") ) icon_state = "snack_[snack_colour]" desc = "A little mouse treat made of coloured sugar. Noodle loves these! This one is [snack_colour]." + reagents.add_reagent("sugar", 2) -obj/item/weapon/storage/box/fluff/snakesnackbox +/obj/item/weapon/storage/box/fluff/snakesnackbox name = "Box of Snake Snax" desc = "A box containing Noodle's special sugermouse treats." icon = 'icons/mob/snake_vr.dmi' icon_state = "sneksnakbox" storage_slots = 7 - New() + +/obj/item/weapon/storage/box/fluff/snakesnackbox/New() new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) @@ -57,4 +107,3 @@ obj/item/weapon/storage/box/fluff/snakesnackbox new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) ..() - return diff --git a/maps/tether/tether-03-station.dmm b/maps/tether/tether-03-station.dmm index 3697c05fec..365f0e8a8c 100644 --- a/maps/tether/tether-03-station.dmm +++ b/maps/tether/tether-03-station.dmm @@ -2733,7 +2733,7 @@ "baC" = (/obj/machinery/requests_console{department = "Tech storage"; pixel_x = -28; pixel_y = 0},/obj/machinery/camera/network/engineering{dir = 4},/turf/simulated/floor,/area/storage/tech) "baD" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "baE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/engineering{dir = 8},/turf/simulated/floor/tiled/dark,/area/storage/tech) -"baF" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/table/reinforced,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) +"baF" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/table/reinforced,/obj/item/weapon/storage/box/fluff/snakesnackbox,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "baG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring) "baH" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/powermonitor{pixel_x = 0; pixel_y = 3},/obj/item/weapon/circuitboard/stationalert_engineering{pixel_x = 2; pixel_y = 1},/obj/item/weapon/circuitboard/security/engineering{pixel_x = 5; pixel_y = -1},/obj/item/weapon/circuitboard/atmos_alert{pixel_x = 6; pixel_y = -3},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/storage/tech) "baI" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -28},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/computer/security/engineering{dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring) @@ -3007,7 +3007,7 @@ "bfQ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/tiled,/area/ai_monitored/storage/eva) "bfR" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/clothing/shoes/magboots,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) "bfS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/yellow_ce,/obj/item/weapon/pen/multi,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) -"bfT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) +"bfT" = (/obj/structure/disposalpipe/segment,/mob/living/simple_animal/snake/Noodle,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "bfU" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/structure/closet/secure_closet/engineering_chief,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "bfV" = (/obj/structure/table/steel,/obj/item/device/aicard,/obj/item/weapon/aiModule/reset,/turf/simulated/floor,/area/storage/tech) "bfW" = (/obj/machinery/computer/general_air_control{dir = 4; frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("dist_main_meter" = "Surface - Distribution Loop", "scrub_main_meter" = "Surface - Scrubbers Loop", "mair_main_meter" = "Surface - Mixed Air Tank", "dist_aux_meter" = "Station - Distribution Loop", "scrub_aux_meter" = "Station - Scrubbers Loop", "mair_aux_meter" = "Station - Mixed Air Tank", "mair_mining_meter" = "Mining Outpost - Mixed Air Tank")},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)