diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm index c794ad20197..64274635234 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_bughabitat.dmm @@ -29,7 +29,7 @@ /turf/open/floor/plastic, /area/ruin/bughabitat) "cK" = ( -/mob/living/simple_animal/hostile/ant{ +/mob/living/basic/ant{ environment_smash = 0 }, /turf/open/floor/grass, diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index c1adbae3674..2fae02ac80f 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -487,7 +487,7 @@ "sW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/ant{ +/mob/living/basic/ant{ faction = list("spiders") }, /obj/effect/decal/cleanable/dirt/dust, @@ -578,7 +578,7 @@ "yu" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/ant{ +/mob/living/basic/ant{ faction = list("spiders") }, /obj/effect/decal/cleanable/dirt/dust, @@ -605,7 +605,7 @@ /area/template_noop) "AA" = ( /obj/effect/turf_decal/trimline/purple/filled/line, -/mob/living/simple_animal/hostile/ant{ +/mob/living/basic/ant{ faction = list("spiders") }, /obj/effect/decal/cleanable/dirt, 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 05b09c53fb9..e4690b8f550 100644 --- a/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm +++ b/code/datums/ai/basic_mobs/basic_subtrees/speech_subtree.dm @@ -157,3 +157,9 @@ speak = list("gnashes.", "growls lowly.", "snarls.") emote_hear = list("gnashes.") emote_see = list("salivates.") + +/datum/ai_planning_subtree/random_speech/ant + speech_chance = 1 + emote_hear = list("buzzes.", "clacks.") + emote_see = list("shakes their head.", "twitches their antennae.") + speak = list("BZZZZT!", "CHTCHTCHT!", "Bzzz", "ChtChtCht") diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index ea221c58187..80086f96725 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -853,10 +853,10 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/melee/flyswatter/Initialize(mapload) . = ..() splattable = typecacheof(list( + /mob/living/basic/ant, /mob/living/basic/butterfly, /mob/living/basic/cockroach, /mob/living/basic/spiderling, - /mob/living/simple_animal/hostile/ant, /mob/living/simple_animal/hostile/bee, /obj/effect/decal/cleanable/ants, /obj/item/queen_bee, diff --git a/code/modules/mob/living/simple_animal/hostile/ant.dm b/code/modules/mob/living/basic/space_fauna/ant.dm similarity index 59% rename from code/modules/mob/living/simple_animal/hostile/ant.dm rename to code/modules/mob/living/basic/space_fauna/ant.dm index 2e5ca376264..7748d9120d7 100644 --- a/code/modules/mob/living/simple_animal/hostile/ant.dm +++ b/code/modules/mob/living/basic/space_fauna/ant.dm @@ -1,26 +1,18 @@ -/mob/living/simple_animal/hostile/ant +/mob/living/basic/ant name = "giant ant" desc = "A writhing mass of ants, glued together to make an adorable pet!" icon = 'icons/mob/simple/pets.dmi' icon_state = "ant" icon_living = "ant" icon_dead = "ant_dead" - speak = list("BZZZZT!", "CHTCHTCHT!", "Bzzz", "ChtChtCht") speak_emote = list("buzzes", "chitters") - emote_hear = list("buzzes.", "clacks.") - emote_see = list("shakes their head.", "twitches their antennae.") - speak_chance = 1 - turns_per_move = 5 gender = PLURAL // We are Ven-ant pass_flags = PASSTABLE mob_size = MOB_SIZE_SMALL mob_biotypes = MOB_ORGANIC|MOB_BUG - minbodytemp = 200 - maxbodytemp = 400 - harm_intent_damage = 4 obj_damage = 5 melee_damage_lower = 5 - melee_damage_upper = 10 // Higher health than a base carp, so much lower damage. + melee_damage_upper = 10 attack_verb_continuous = "bites" attack_verb_simple = "bite" attack_sound = 'sound/weapons/bite.ogg' @@ -35,13 +27,33 @@ gold_core_spawnable = FRIENDLY_SPAWN faction = list(FACTION_NEUTRAL) can_be_held = FALSE - footstep_type = FOOTSTEP_MOB_CLAW health = 100 maxHealth = 100 light_range = 1.5 // Bioluminescence! + minimum_survivable_temperature = T20C - 100 + maximum_survivable_temperature = T20C + 120 light_color = "#d43229" // The ants that comprise the giant ant still glow red despite the sludge. -/mob/living/simple_animal/hostile/ant/Initialize(mapload) + ai_controller = /datum/ai_controller/basic_controller/ant + +/mob/living/basic/ant/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) AddElement(/datum/element/pet_bonus, "clacks happily!") + AddElement(/datum/element/ai_retaliate) + AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW) + +/datum/ai_controller/basic_controller/ant + blackboard = list( + BB_TARGETTING_DATUM = new /datum/targetting_datum/basic, + ) + + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + planning_subtrees = list( + /datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee, + /datum/ai_planning_subtree/flee_target, + /datum/ai_planning_subtree/target_retaliate, + /datum/ai_planning_subtree/basic_melee_attack_subtree, + /datum/ai_planning_subtree/random_speech/ant, + ) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index e6bff319fdf..abd7561cabb 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -948,5 +948,5 @@ /datum/chemical_reaction/ant_slurry/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) var/location = get_turf(holder.my_atom) for(var/i in rand(1, created_volume) to created_volume) - new /mob/living/simple_animal/hostile/ant(location) + new /mob/living/basic/ant(location) ..() diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 090cb018197..1057d035bc5 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -57,7 +57,6 @@ /mob/living/simple_animal/hostile/alien/queen, /mob/living/simple_animal/hostile/alien/queen/large, /mob/living/simple_animal/hostile/alien/sentinel, - /mob/living/simple_animal/hostile/ant, /mob/living/simple_animal/hostile/asteroid, /mob/living/simple_animal/hostile/asteroid/basilisk, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher, diff --git a/tgstation.dme b/tgstation.dme index 8c33937a128..de819a62c20 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4045,6 +4045,7 @@ #include "code\modules\mob\living\basic\pets\dog.dm" #include "code\modules\mob\living\basic\pets\pet.dm" #include "code\modules\mob\living\basic\ruin_defender\stickman.dm" +#include "code\modules\mob\living\basic\space_fauna\ant.dm" #include "code\modules\mob\living\basic\space_fauna\cat_surgeon.dm" #include "code\modules\mob\living\basic\space_fauna\faithless.dm" #include "code\modules\mob\living\basic\space_fauna\garden_gnome.dm" @@ -4287,7 +4288,6 @@ #include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" #include "code\modules\mob\living\simple_animal\guardian\types\support.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" -#include "code\modules\mob\living\simple_animal\hostile\ant.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\bees.dm" #include "code\modules\mob\living\simple_animal\hostile\blob.dm" diff --git a/tools/UpdatePaths/Scripts/75662_simple_to_basic_ants.txt b/tools/UpdatePaths/Scripts/75662_simple_to_basic_ants.txt new file mode 100644 index 00000000000..54d608de309 --- /dev/null +++ b/tools/UpdatePaths/Scripts/75662_simple_to_basic_ants.txt @@ -0,0 +1 @@ +/mob/living/simple_animal/hostile/ant : /mob/living/basic/ant{@OLD}