diff --git a/code/game/objects/effects/semirandom_mobs_vr.dm b/code/game/objects/effects/semirandom_mobs_vr.dm index b7008b4627..75136cf5aa 100644 --- a/code/game/objects/effects/semirandom_mobs_vr.dm +++ b/code/game/objects/effects/semirandom_mobs_vr.dm @@ -51,6 +51,8 @@ var/global/list/semirandom_mob_spawner_decisions = list() list(/mob/living/simple_mob/animal/passive/opossum), list(/mob/living/simple_mob/animal/passive/pillbug), list(/mob/living/simple_mob/animal/passive/snake), + list(/mob/living/simple_mob/animal/passive/snake/red), + list(/mob/living/simple_mob/animal/passive/snake/python), list(/mob/living/simple_mob/animal/passive/tindalos), list(/mob/living/simple_mob/animal/passive/yithian), list( @@ -359,6 +361,8 @@ var/global/list/semirandom_mob_spawner_decisions = list() list(/mob/living/simple_mob/animal/passive/opossum) = 10, list(/mob/living/simple_mob/animal/passive/pillbug) = 10, list(/mob/living/simple_mob/animal/passive/snake) = 10, + list(/mob/living/simple_mob/animal/passive/snake/red) = 10, + list(/mob/living/simple_mob/animal/passive/snake/python) = 10, list(/mob/living/simple_mob/animal/passive/tindalos) = 10, list(/mob/living/simple_mob/animal/passive/yithian) = 10, list( @@ -537,7 +541,7 @@ var/global/list/semirandom_mob_spawner_decisions = list() /mob/living/simple_mob/vore/lamia/zebra/bra, /mob/living/simple_mob/vore/lamia/zebra/shirt ) = 100, -// LOOK OKAY MERCS ARE HUMANOIDS SO THEY ARE HERE, but they are also kind of bullshit so they probably shouldn't be able to spawn in the same place as catgirls. +// LOOK OKAY MERCS ARE HUMANOIDS SO THEY ARE HERE, but they are also kind of bullshit so they probably shouldn't be able to spawn in the same place as catgirls. // I want some better potentially hostile humanoids that aren't stupid to fight. If they become a big issue I'll comment them out. // For now they are just rare, and the ranged ones are way more rare than the melee ones, which I think will help balance them out. list( diff --git a/code/game/objects/items/weapons/taskmanager_ch.dm b/code/game/objects/items/weapons/taskmanager_ch.dm index f8cb181abc..8d3ef847e4 100644 --- a/code/game/objects/items/weapons/taskmanager_ch.dm +++ b/code/game/objects/items/weapons/taskmanager_ch.dm @@ -102,7 +102,7 @@ scancount = 0 scanned = list() scannables = list(/obj/machinery/deployable/barrier,/obj/machinery/flasher/portable,/obj/item/weapon/storage/box/flashbangs,/obj/item/device/taperecorder, - /mob/living/simple_mob/animal/passive/snake/noodle,/obj/item/weapon/gun/energy/taser,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/reagent_containers/spray/pepper, + /mob/living/simple_mob/animal/passive/snake/python/noodle,/obj/item/weapon/gun/energy/taser,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/storage/box/handcuffs,/obj/item/clothing/glasses/sunglasses/sechud/aviator,/obj/machinery/computer/secure_data,/obj/machinery/computer/security, /obj/item/weapon/storage/briefcase/crimekit,/obj/machinery/microscope,/obj/machinery/dnaforensics,/obj/machinery/flasher,/obj/structure/closet/secure_closet/brig, /obj/structure/closet/secure_closet/warden,/obj/machinery/vending/security,/obj/structure/closet/secure_closet/hos2,/obj/structure/closet/secure_closet/hos, diff --git a/code/modules/mob/living/simple_mob/donteatpets_vr.dm b/code/modules/mob/living/simple_mob/donteatpets_vr.dm index 057373b4c7..adf7d00976 100644 --- a/code/modules/mob/living/simple_mob/donteatpets_vr.dm +++ b/code/modules/mob/living/simple_mob/donteatpets_vr.dm @@ -32,7 +32,7 @@ digestable = 0 devourable = 0 -/mob/living/simple_mob/animal/passive/snake/noodle +/mob/living/simple_mob/animal/passive/snake/python/noodle digestable = 0 devourable = 0 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm index 40aea9ea5d..e7dea44853 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm @@ -3,30 +3,33 @@ desc = "Classification: Reptilia Serpentes\

\ Snakes are elongated, limbless, carnivorous reptiles of the suborder Serpentes \ - Like all other squamates, snakes are ectothermic, amniote vertebrates covered in overlapping scales. \ - Many species of snakes have skulls with several more joints than their lizard ancestors, \ + Like all other squamates, pythons are ectothermic, amniote vertebrates covered in overlapping scales. \ + Many species of snake have skulls with several more joints than their lizard ancestors, \ enabling them to swallow prey much larger than their heads with their highly mobile jaws. \
\ - This species of snake is nonvenomous and use their large bodies to primarily subdue their prey. \ + This type of snake is nonvenomous and use their slender bodies to primarily subdue their prey. \ Nonvenomous snakes either swallow prey alive or kill them by constriction - this is dependant on the prey. \
\ - This specific snake is nonvenomous and is mostly passive - however they will attack if threatened - it is \ - recommended that persons keep their distance as to not provoke these animals." + Snakes are mostly passive - however they will attack if threatened - it is recommended that \ + persons keep their distance as to not provoke these animals." value = CATALOGUER_REWARD_TRIVIAL +/* + * Green Snake + */ /mob/living/simple_mob/animal/passive/snake name = "snake" - desc = "A big thick snake." - tt_desc = "Reptilia Serpentes" + desc = "A cute little, green snake. Wiggle wiggle." + tt_desc = "E Reptilia Serpentes" catalogue_data = list(/datum/category_item/catalogue/fauna/snake) - icon_state = "snake" - icon_living = "snake" - icon_dead = "snake_dead" + icon_state = "green" + icon_living = "green" + icon_dead = "green_dead" icon = 'icons/mob/snake_vr.dmi' - maxHealth = 20 - health = 20 + maxHealth = 15 + health = 15 movement_cooldown = 8 // SLOW-ASS MUTHAFUCKA, I hope. @@ -47,17 +50,46 @@ /datum/say_list/snake emote_hear = list("hisses") -//NOODLE IS HERE! SQUEEEEEEEE~ -/mob/living/simple_mob/animal/passive/snake/noodle +/* + * Red Snake + */ +/mob/living/simple_mob/animal/passive/snake/red + desc = "A cute little, red snake. Wiggle wiggle." + + icon_state = "red" + icon_living = "red" + icon_dead = "red_dead" + icon = 'icons/mob/snake_vr.dmi' + +/* + * Python + */ +/mob/living/simple_mob/animal/passive/snake/python + name = "python" + desc = "A big, thick snake." + tt_desc = "E Reptilia Pythonidae" + + icon_state = "python" + icon_living = "python" + icon_dead = "python_dead" + icon = 'icons/mob/snake_vr.dmi' + +/* + * NOODLE IS HERE! SQUEEEEEEEE~ + */ +/mob/living/simple_mob/animal/passive/snake/python/noodle name = "Noodle" desc = "This snake is particularly chubby and demands nothing but the finest of treats." + maxHealth = 20 + health = 20 + makes_dirt = FALSE var/turns_since_scan = 0 var/obj/movement_target -/mob/living/simple_mob/animal/passive/snake/noodle/Life() +/mob/living/simple_mob/animal/passive/snake/python/noodle/Life() ..() //Not replacing with SA FollowTarget mechanics because Ian behaves... very... specifically. @@ -100,41 +132,7 @@ else if(ishuman(movement_target.loc) && prob(20)) visible_emote("stares at the [movement_target] that [movement_target.loc] has with an unknowable reptilian gaze.") -/* old eating code, couldn't figure out how to make the "swallows food" thing so I'm keeping this here incase someone wants legacy" -/mob/living/simple_mob/animal/passive/snake/noodle/Life() //stolen 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 - walk(src,0) - for(var/obj/item/weapon/reagent_containers/food/snacks/snakesnack/S in oview(src,3)) - if(isturf(S.loc)) - movement_target = S - visible_emote("turns towards \the [movement_target] and slithers towards it.") - break - - if(movement_target) - stop_automated_movement = 1 - walk_to(src, movement_target, 0, 5) - spawn(10) - if(Adjacent(movement_target)) - visible_message("[src] swallows the [movement_target] whole!") - qdel(movement_target) - walk(src,0) - else if(ishuman(movement_target.loc) && prob(20)) - visible_emote("stares at the [movement_target] that [movement_target.loc] has with an unknowable reptilian gaze.") -*/ - -/mob/living/simple_mob/animal/passive/snake/noodle/apply_melee_effects(var/atom/A) +/mob/living/simple_mob/animal/passive/snake/python/noodle/apply_melee_effects(var/atom/A) if(ismouse(A)) var/mob/living/simple_mob/animal/passive/mouse/mouse = A if(mouse.getMaxHealth() < 20) // In case a badmin makes giant mice or something. @@ -143,14 +141,16 @@ else ..() -/mob/living/simple_mob/animal/passive/snake/noodle/attackby(var/obj/item/O, var/mob/user) +/mob/living/simple_mob/animal/passive/snake/python/noodle/attackby(var/obj/item/O, var/mob/user) if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/snakesnack)) visible_message("[user] feeds \the [O] to [src].") qdel(O) else return ..() -//Special snek-snax for Noodle! +/* + * Special snek-snax for Noodle! + */ /obj/item/weapon/reagent_containers/food/snacks/snakesnack name = "sugar mouse" desc = "A little mouse treat made of coloured sugar. Noodle loves these!" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm index e171d912a0..07bcf6b99d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm @@ -1,6 +1,6 @@ /datum/category_item/catalogue/fauna/frog name = "Wildlife - Giant Frog" - desc = "Classification: Anura gigantus\ + desc = "Classification: Anura Gigantus\

\ A frog is any member of a diverse and largely carnivorous group of short-bodied, tailless amphibians composing \ the order Anura. This specific species - Anura gigantus - is a mutated form of frogs, largely due to exposure to mutagen chemicals. \ @@ -20,7 +20,7 @@ /mob/living/simple_mob/vore/aggressive/frog name = "giant frog" desc = "You've heard of having a frog in your throat, now get ready for the reverse." - tt_desc = "Anura gigantus" + tt_desc = "Anura Gigantus" catalogue_data = list(/datum/category_item/catalogue/fauna/frog) icon_dead = "frog-dead" diff --git a/code/modules/reagents/reactions/instant/instant_vr.dm b/code/modules/reagents/reactions/instant/instant_vr.dm index 40015eb871..9ffa59cc62 100644 --- a/code/modules/reagents/reactions/instant/instant_vr.dm +++ b/code/modules/reagents/reactions/instant/instant_vr.dm @@ -401,7 +401,7 @@ /mob/living/simple_mob/animal/passive/bird/parrot/poly, /mob/living/simple_mob/animal/sif/fluffy, /mob/living/simple_mob/animal/sif/fluffy/silky, - /mob/living/simple_mob/animal/passive/snake/noodle, + /mob/living/simple_mob/animal/passive/snake/python/noodle, /mob/living/simple_mob/slime/xenobio/rainbow/kendrick, /mob/living/simple_mob/animal/space/space_worm, //Space Worm parts that aren't proper heads /mob/living/simple_mob/animal/space/space_worm/head/severed, diff --git a/icons/mob/snake_vr.dmi b/icons/mob/snake_vr.dmi index 42631b85de..6802aecc47 100644 Binary files a/icons/mob/snake_vr.dmi and b/icons/mob/snake_vr.dmi differ diff --git a/maps/expedition_vr/beach/_beach.dm b/maps/expedition_vr/beach/_beach.dm index 9428488b96..70fbaa8dbf 100644 --- a/maps/expedition_vr/beach/_beach.dm +++ b/maps/expedition_vr/beach/_beach.dm @@ -84,7 +84,10 @@ prob_fall = 25 //Chance goes down by this much each time it spawns one (not defining and prob_spawn 100 means they spawn as soon as one dies) //guard = 40 //They'll stay within this range (not defining this disables them staying nearby and they will wander the map (and through step teleports)) mobs_to_pick_from = list( - /mob/living/simple_mob/animal/passive/snake + /mob/living/simple_mob/vore/fennec = 300, + /mob/living/simple_mob/animal/passive/snake/python = 100, + /mob/living/simple_mob/vore/alienanimals/teppi = 10, + /mob/living/simple_mob/vore/alienanimals/teppi/baby = 1 ) /obj/tether_away_spawner/beach_outside_friendly diff --git a/maps/southern_cross/southern_cross-2.dmm b/maps/southern_cross/southern_cross-2.dmm index a821d423ff..db6ee89e11 100644 --- a/maps/southern_cross/southern_cross-2.dmm +++ b/maps/southern_cross/southern_cross-2.dmm @@ -459,7 +459,7 @@ "aiR" = (/obj/machinery/computer/secure_data/detective_computer{dir = 1},/turf/simulated/floor/tiled/freezer,/area/security/detectives_office) "aiS" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/security/lobby) "aiT" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby) -"aiU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_mob/animal/passive/snake/noodle,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hos) +"aiU" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_mob/animal/passive/snake/python/noodle,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hos) "aiV" = (/obj/machinery/photocopier,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/machinery/keycard_auth{pixel_y = 36},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hos) "aiW" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/simulated/floor/tiled/dark,/area/lawoffice) "aiX" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/windowtint{id = "lawyer_tint"; pixel_x = 30; pixel_y = -26; req_access = list(58)},/obj/machinery/newscaster{pixel_y = 30},/obj/effect/landmark/start{name = "Internal Affairs Agent"},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/simulated/floor/tiled/dark,/area/lawoffice)