diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index 60e12bfecd2..bb0156a4b7e 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -275,7 +275,7 @@ /turf/open/misc/asteroid/airless, /area/ruin/space) "ET" = ( -/mob/living/simple_animal/hostile/lizard, +/mob/living/basic/lizard, /turf/open/misc/asteroid/airless, /area/ruin/space) "Fo" = ( diff --git a/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm b/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm index c6c2af411d4..febd6bc1c3b 100644 --- a/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm +++ b/_maps/RandomRuins/SpaceRuins/thelizardsgas.dmm @@ -467,7 +467,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/thelizardsgas) "Ua" = ( -/mob/living/simple_animal/hostile/lizard/space{ +/mob/living/basic/lizard/space{ desc = "How are you ALIVE?!"; name = "Blarpo" }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index b1438aff6b7..37e63c01b60 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -8828,7 +8828,7 @@ /turf/open/misc/asteroid/moon/dug, /area/awaymission/moonoutpost19/mines) "Zn" = ( -/mob/living/simple_animal/hostile/lizard{ +/mob/living/basic/lizard{ name = "Newt" }, /turf/open/floor/carpet/royalblue, diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index b7b376e252a..9036e247d01 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -12611,7 +12611,7 @@ /obj/structure/window/spawner/directional/west, /obj/structure/window/spawner/directional/east, /obj/structure/flora/bush/flowers_br/style_random, -/mob/living/simple_animal/hostile/lizard{ +/mob/living/basic/lizard{ name = "Bathes-In-Heatlamp" }, /turf/open/misc/sandy_dirt, @@ -70837,7 +70837,7 @@ /obj/structure/window/spawner/directional/west, /obj/structure/window/spawner/directional/east, /obj/structure/flora/bush/flowers_br/style_random, -/mob/living/simple_animal/hostile/lizard/eats_the_roaches, +/mob/living/basic/lizard/eats_the_roaches, /turf/open/misc/sandy_dirt, /area/station/maintenance/port/lesser) "ybO" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 208fd16f8cf..e7fba3b2077 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -84519,7 +84519,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/mob/living/simple_animal/hostile/lizard/wags_his_tail, +/mob/living/basic/lizard/wags_his_tail, /turf/open/floor/iron/checker, /area/station/service/janitor) "veu" = ( @@ -90311,7 +90311,7 @@ dir = 9; name = "service camera" }, -/mob/living/simple_animal/hostile/lizard/eats_the_roaches, +/mob/living/basic/lizard/eats_the_roaches, /turf/open/floor/iron/checker, /area/station/service/janitor) "wzD" = ( diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 2f2f424e5cd..bc3b72807eb 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -45552,7 +45552,7 @@ "owv" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/mob/living/simple_animal/hostile/lizard/wags_his_tail, +/mob/living/basic/lizard/wags_his_tail, /turf/open/floor/iron, /area/station/service/janitor) "owC" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index eaed6b8489b..0cdba0f2587 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -24260,7 +24260,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/mob/living/simple_animal/hostile/lizard/wags_his_tail, +/mob/living/basic/lizard/wags_his_tail, /turf/open/floor/plating, /area/station/service/janitor) "iMR" = ( diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 3b62033042c..8084d5e65a9 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -35775,7 +35775,7 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 9 }, -/mob/living/simple_animal/hostile/lizard{ +/mob/living/basic/lizard{ name = "Allad Minsa" }, /obj/machinery/camera/directional/west{ diff --git a/_maps/shuttles/emergency_medisim.dmm b/_maps/shuttles/emergency_medisim.dmm index 7cd5602b1ca..f73ca6598ae 100644 --- a/_maps/shuttles/emergency_medisim.dmm +++ b/_maps/shuttles/emergency_medisim.dmm @@ -1218,7 +1218,7 @@ /area/shuttle/escape/brig) "Xk" = ( /obj/structure/closet/crate/critter, -/mob/living/simple_animal/hostile/lizard/space{ +/mob/living/basic/lizard/space{ name = "Stows-Away" }, /turf/open/floor/plating, diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency_nature.dmm index 1f1c5ad021d..ddc7b2c7c74 100644 --- a/_maps/shuttles/emergency_nature.dmm +++ b/_maps/shuttles/emergency_nature.dmm @@ -810,7 +810,7 @@ /area/shuttle/escape) "Fo" = ( /obj/item/cultivator, -/mob/living/simple_animal/hostile/lizard, +/mob/living/basic/lizard, /turf/open/floor/grass, /area/shuttle/escape) "Fp" = ( diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index e61b5da5dc8..e17bea756f8 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_INIT(phobia_mobs, list( /mob/living/basic/cockroach, /mob/living/simple_animal/hostile/bee, )), - "lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard)), + "lizards" = typecacheof(list(/mob/living/basic/lizard)), "robots" = typecacheof(list( /mob/living/silicon/ai, /mob/living/silicon/robot, diff --git a/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm b/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm index fdc19c91146..ec835aee6dd 100644 --- a/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm +++ b/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm @@ -56,6 +56,11 @@ speech_chance = 3 emote_see = list("jumps in a circle.", "shakes.") +/datum/ai_planning_subtree/random_speech/lizard // all of these have to be three words long or i'm killing you. you're dead. + speech_chance = 3 + emote_hear = list("stamps around some.", "hisses a bit.") + emote_see = list("blehs the tongue.", "tilts the head.", "does a spin.") + /datum/ai_planning_subtree/random_speech/sheep speech_chance = 5 speak = list("baaa","baaaAAAAAH!","baaah") diff --git a/code/datums/memory/_memory.dm b/code/datums/memory/_memory.dm index fddabc4521c..ed6481ae2df 100644 --- a/code/datums/memory/_memory.dm +++ b/code/datums/memory/_memory.dm @@ -253,7 +253,7 @@ /mob/living/simple_animal/hostile/gorilla, /mob/living/simple_animal/hostile/headcrab, /mob/living/simple_animal/hostile/killertomato, - /mob/living/simple_animal/hostile/lizard, + /mob/living/basic/lizard, /mob/living/simple_animal/hostile/megafauna/dragon/lesser, /mob/living/simple_animal/hostile/morph, /mob/living/simple_animal/hostile/mushroom, diff --git a/code/modules/cargo/packs/livestock.dm b/code/modules/cargo/packs/livestock.dm index f346bc8c67e..f4d4e37d93c 100644 --- a/code/modules/cargo/packs/livestock.dm +++ b/code/modules/cargo/packs/livestock.dm @@ -213,7 +213,7 @@ desc = "Hisss! Containssss a friendly lizard. Not to be confusssed with a lizardperssson." cost = CARGO_CRATE_VALUE * 4 access_view = ACCESS_JANITOR - contains = list(/mob/living/simple_animal/hostile/lizard) + contains = list(/mob/living/basic/lizard) crate_name = "lizard crate" /datum/supply_pack/critter/garden_gnome diff --git a/code/modules/events/ghost_role/sentience.dm b/code/modules/events/ghost_role/sentience.dm index 058d328fdd7..0c9e61e1e17 100644 --- a/code/modules/events/ghost_role/sentience.dm +++ b/code/modules/events/ghost_role/sentience.dm @@ -1,7 +1,7 @@ GLOBAL_LIST_INIT(high_priority_sentience, typecacheof(list( /mob/living/simple_animal/pet, /mob/living/simple_animal/parrot, - /mob/living/simple_animal/hostile/lizard, + /mob/living/basic/lizard, /mob/living/simple_animal/sloth, /mob/living/simple_animal/hostile/retaliate/goat, /mob/living/simple_animal/chicken, diff --git a/code/modules/events/wizard/petsplosion.dm b/code/modules/events/wizard/petsplosion.dm index 915093dae38..b075d6ad8fc 100644 --- a/code/modules/events/wizard/petsplosion.dm +++ b/code/modules/events/wizard/petsplosion.dm @@ -2,7 +2,7 @@ GLOBAL_LIST_INIT(petsplosion_candidates, typecacheof(list( /mob/living/simple_animal/pet, /mob/living/simple_animal/parrot, - /mob/living/simple_animal/hostile/lizard, + /mob/living/basic/lizard, /mob/living/simple_animal/sloth, /mob/living/simple_animal/hostile/retaliate/goat, /mob/living/simple_animal/chicken, diff --git a/code/modules/mob/living/basic/vermin/lizard.dm b/code/modules/mob/living/basic/vermin/lizard.dm new file mode 100644 index 00000000000..5e4df9d0ea8 --- /dev/null +++ b/code/modules/mob/living/basic/vermin/lizard.dm @@ -0,0 +1,85 @@ +/* +* ## Lizards +* +* Green things that crawl around and eat bugs. Not to be confused with the human species lizardpersons, these are just small little fellas. +*/ + +/mob/living/basic/lizard + name = "Lizard" + desc = "A cute tiny lizard." + icon_state = "lizard" + icon_living = "lizard" + icon_dead = "lizard_dead" + icon_gib = "lizard_gib" + speak_emote = list("hisses") + health = 10 + maxHealth = 10 + faction = list(FACTION_LIZARD) + attack_verb_continuous = "bites" + attack_verb_simple = "bite" + melee_damage_lower = 1 + melee_damage_upper = 2 + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "shoos" + response_disarm_simple = "shoo" + response_harm_continuous = "stomps on" + response_harm_simple = "stomp on" + density = FALSE + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_REPTILE + gold_core_spawnable = FRIENDLY_SPAWN + obj_damage = 0 + environment_smash = ENVIRONMENT_SMASH_NONE + can_be_held = TRUE + ai_controller = /datum/ai_controller/basic_controller/lizard + + /// Typecache of things that we seek out to eat. Yummy. + var/static/list/edibles = typecacheof(list( + /mob/living/basic/cockroach, + /mob/living/simple_animal/butterfly, + )) + +/mob/living/basic/lizard/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) + AddElement(/datum/element/pet_bonus, "sticks its tongue out contentedly!") + AddElement(/datum/element/basic_eating, 5, 0, null, edibles) + ai_controller.set_blackboard_key(BB_BASIC_FOODS, edibles) + +/datum/ai_controller/basic_controller/lizard + blackboard = list( + BB_TARGETTING_DATUM = new /datum/targetting_datum/basic/allow_items(), + ) + + ai_traits = STOP_MOVING_WHEN_PULLED + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + planning_subtrees = list( + /datum/ai_planning_subtree/find_food, + /datum/ai_planning_subtree/basic_melee_attack_subtree, + /datum/ai_planning_subtree/random_speech/lizard, + ) + +//Subtypes of lizards follow. + +/// Lizards that can survive in space. +/mob/living/basic/lizard/space + name = "Space Lizard" + desc = "A cute tiny lizard with a tiny space helmet." + icon_state = "lizard_space" + icon_living = "lizard_space" + unsuitable_atmos_damage = 0 + minimum_survivable_temperature = TCMB + maximum_survivable_temperature = T0C + 40 + +/// Janitor's pet lizard. +/mob/living/basic/lizard/wags_his_tail + name = "Wags-His-Tail" + desc = "The janitorial department's trusty pet lizard." + +/// Another pet lizard for the janitor. +/mob/living/basic/lizard/eats_the_roaches + name = "Eats-The-Roaches" + desc = "The janitorial department's less trusty pet lizard." diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f0042e07f45..fdd7d2b9458 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1403,7 +1403,7 @@ /mob/living/basic/mouse, /mob/living/simple_animal/chicken, /mob/living/basic/cow, - /mob/living/simple_animal/hostile/lizard, + /mob/living/basic/lizard, /mob/living/simple_animal/pet/fox, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/pet/cat/cak, diff --git a/code/modules/mob/living/simple_animal/hostile/lizard.dm b/code/modules/mob/living/simple_animal/hostile/lizard.dm deleted file mode 100644 index 83d55d4b351..00000000000 --- a/code/modules/mob/living/simple_animal/hostile/lizard.dm +++ /dev/null @@ -1,67 +0,0 @@ -/mob/living/simple_animal/hostile/lizard - name = "Lizard" - desc = "A cute tiny lizard." - icon_state = "lizard" - icon_living = "lizard" - icon_dead = "lizard_dead" - speak_emote = list("hisses") - health = 5 - maxHealth = 5 - faction = list(FACTION_LIZARD) - attack_verb_continuous = "bites" - attack_verb_simple = "bite" - melee_damage_lower = 1 - melee_damage_upper = 2 - response_help_continuous = "pets" - response_help_simple = "pet" - response_disarm_continuous = "shoos" - response_disarm_simple = "shoo" - response_harm_continuous = "stomps on" - response_harm_simple = "stomp on" - density = FALSE - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_REPTILE - gold_core_spawnable = FRIENDLY_SPAWN - obj_damage = 0 - environment_smash = ENVIRONMENT_SMASH_NONE - can_be_held = TRUE - var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly, /mob/living/basic/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption. - -/mob/living/simple_animal/hostile/lizard/Initialize(mapload) - . = ..() - AddElement(/datum/element/pet_bonus, "sticks its tongue out contentedly!") - ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - -/mob/living/simple_animal/hostile/lizard/CanAttack(atom/the_target)//Can we actually attack a possible target? - if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it - return FALSE - if(is_type_in_typecache(the_target,edibles)) - return TRUE - return FALSE - -/mob/living/simple_animal/hostile/lizard/AttackingTarget() - if(is_type_in_typecache(target,edibles)) //Makes sure player lizards only consume edibles. - visible_message(span_notice("[name] consumes [target] in a single gulp."), span_notice("You consume [target] in a single gulp.")) - QDEL_NULL(target) //Nom - adjustBruteLoss(-2) - return TRUE - else - return ..() - -/mob/living/simple_animal/hostile/lizard/space - name = "Space Lizard" - desc = "A cute tiny lizard with a tiny space helmet." - icon_state = "lizard_space" - icon_living = "lizard_space" - unsuitable_atmos_damage = 0 - minbodytemp = TCMB - maxbodytemp = T0C + 40 - -/mob/living/simple_animal/hostile/lizard/wags_his_tail - name = "Wags-His-Tail" - desc = "The janitorial department's trusty pet lizard." - -/mob/living/simple_animal/hostile/lizard/eats_the_roaches - name = "Eats-The-Roaches" - desc = "The janitorial department's less trusty pet lizard." diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 25169292919..5af5465f448 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -646,7 +646,7 @@ /mob/living/basic/pet/dog/pug, /mob/living/simple_animal/crab, /mob/living/simple_animal/pet/fox, - /mob/living/simple_animal/hostile/lizard, + /mob/living/basic/lizard, /mob/living/basic/mouse, /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/bee, diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index a29b38d5088..adc75f5652e 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -189,10 +189,6 @@ /mob/living/simple_animal/hostile/jungle/seedling, /mob/living/simple_animal/hostile/killertomato, /mob/living/simple_animal/hostile/lightgeist, - /mob/living/simple_animal/hostile/lizard, - /mob/living/simple_animal/hostile/lizard/eats_the_roaches, - /mob/living/simple_animal/hostile/lizard/space, - /mob/living/simple_animal/hostile/lizard/wags_his_tail, /mob/living/simple_animal/hostile/megafauna, /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner, /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/doom, diff --git a/tgstation.dme b/tgstation.dme index ef7e08c8676..985d1c1ddc1 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3980,6 +3980,7 @@ #include "code\modules\mob\living\basic\vermin\axolotl.dm" #include "code\modules\mob\living\basic\vermin\cockroach.dm" #include "code\modules\mob\living\basic\vermin\frog.dm" +#include "code\modules\mob\living\basic\vermin\lizard.dm" #include "code\modules\mob\living\basic\vermin\mothroach.dm" #include "code\modules\mob\living\basic\vermin\mouse.dm" #include "code\modules\mob\living\basic\vermin\space_bat.dm" @@ -4193,7 +4194,6 @@ #include "code\modules\mob\living\simple_animal\hostile\illusion.dm" #include "code\modules\mob\living\simple_animal\hostile\killertomato.dm" #include "code\modules\mob\living\simple_animal\hostile\lightgeist.dm" -#include "code\modules\mob\living\simple_animal\hostile\lizard.dm" #include "code\modules\mob\living\simple_animal\hostile\mimic.dm" #include "code\modules\mob\living\simple_animal\hostile\morph.dm" #include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" diff --git a/tools/UpdatePaths/Scripts/75515_simple_to_basic_lizards.txt b/tools/UpdatePaths/Scripts/75515_simple_to_basic_lizards.txt new file mode 100644 index 00000000000..0c1880c28fc --- /dev/null +++ b/tools/UpdatePaths/Scripts/75515_simple_to_basic_lizards.txt @@ -0,0 +1 @@ +/mob/living/simple_animal/hostile/lizard/@SUBTYPES : /mob/living/basic/lizard/@SUBTYPES{@OLD}