From 895759eadb43cae3f307de2eb7cc4c565b33b38c Mon Sep 17 00:00:00 2001 From: Matt Atlas Date: Sun, 26 Jul 2026 20:06:35 +0200 Subject: [PATCH] Simple mob combat changes. (#22797) Simple mobs don't dodge backwards anymore, it just doesn't really work as an engaging mechanic. To-do: - [ ] Add armour to a bunch of simple mobs. - [ ] Maybe make simple mobs attack with actual weapons instead of magical damage numbers. - [ ] Fix simplemob movement glide. Co-authored-by: Matt Atlas --- code/modules/holodeck/HolodeckObjects.dm | 1 - .../simple_animal/hostile/giant_spider.dm | 4 -- .../simple_animal/hostile/hivebots/hivebot.dm | 1 - .../living/simple_animal/hostile/hostile.dm | 3 - .../simple_animal/hostile/psirens/psiren.dm | 1 - .../simple_animal/hostile/space_fauna.dm | 1 - .../simple_animal/hostile/viscerator.dm | 1 - html/changelogs/mattatlas-simplemobtweaks.yml | 58 +++++++++++++++++++ 8 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 html/changelogs/mattatlas-simplemobtweaks.yml diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index b1a24520558..f312cc99d7b 100644 --- a/code/modules/holodeck/HolodeckObjects.dm +++ b/code/modules/holodeck/HolodeckObjects.dm @@ -481,7 +481,6 @@ meat_amount = 0 meat_type = null light_range = 2 - smart_melee = TRUE blood_overlay_icon = null blood_type = null diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 4627c52f8a5..421c15f9969 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -43,7 +43,6 @@ pass_flags = PASSTABLE speed = 6 mob_size = 6 - smart_melee = FALSE attacktext = "bites" attack_vis_effect = ATTACK_EFFECT_BITE @@ -112,7 +111,6 @@ venom_per_bite = 5 speed = 4 sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular biochemistry shows high metabolic capacity") - smart_melee = TRUE /mob/living/simple_animal/hostile/giant_spider/emp name = "greimorian jackal" @@ -129,7 +127,6 @@ venom_per_bite = 2 speed = 5 sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular biochemistry geared towards creating strong electrical potential differences") - smart_melee = TRUE /mob/living/simple_animal/hostile/giant_spider/bombardier name = "greimorian bombardier" @@ -148,7 +145,6 @@ venom_per_bite = 2 speed = 5 sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Exocrinic acid synthesis detected") - smart_melee = TRUE /mob/living/simple_animal/hostile/giant_spider/bombardier/Shoot(var/target, var/start, var/mob/user, var/bullet = 0) if(target == start) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm index f106ba7fba5..58aa62e758a 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm @@ -30,7 +30,6 @@ speed = 4 tameable = FALSE flying = TRUE - smart_melee = FALSE pass_flags = PASSTABLE|PASSRAILING emote_hear = list("emits a harsh noise") emote_sounds = list( diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index f8f4ee4120d..b2dfda03b58 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -37,7 +37,6 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile) var/list/tolerated_types = list() var/attack_emote = "stares menacingly at" - var/smart_melee = TRUE // This makes melee mobs try to stay two tiles away from their target in combat, lunging in to attack only var/smart_ranged = FALSE // This makes ranged mob check for friendly fire and obstacles var/hostile_nameable = FALSE //If we can rename this hostile mob. Mostly to prevent repeat checks with guard dogs and hostile/retaliate farm animals @@ -278,8 +277,6 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile) playsound(loc, attack_sound, 50, 1, 1) if(target) face_atom(target) - if(!ranged && smart_melee) - addtimer(CALLBACK(src, PROC_REF(PostAttack), target), 1.2 SECONDS, TIMER_STOPPABLE|TIMER_DELETE_ME) return target /mob/living/simple_animal/hostile/proc/PostAttack(var/atom/target) diff --git a/code/modules/mob/living/simple_animal/hostile/psirens/psiren.dm b/code/modules/mob/living/simple_animal/hostile/psirens/psiren.dm index 7108850b9b0..2a89dcf13e6 100644 --- a/code/modules/mob/living/simple_animal/hostile/psirens/psiren.dm +++ b/code/modules/mob/living/simple_animal/hostile/psirens/psiren.dm @@ -46,7 +46,6 @@ butchering_products = list(/obj/item/reagent_containers/food/snacks/squidmeat/psiren_body_meat = 1) attack_vis_effect = ATTACK_EFFECT_DISARM - smart_melee = TRUE smart_ranged = FALSE /// Messages used by the psiren for its psychic damage effects. diff --git a/code/modules/mob/living/simple_animal/hostile/space_fauna.dm b/code/modules/mob/living/simple_animal/hostile/space_fauna.dm index 892ee475c84..e923ef55e90 100644 --- a/code/modules/mob/living/simple_animal/hostile/space_fauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/space_fauna.dm @@ -56,7 +56,6 @@ flying = TRUE lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE - smart_melee = FALSE sample_data = list("Cellular structure shows adaptation for survival in vacuum", "Genetic biomarkers identified linked with agressiveness", "Tissue sample contains micro-gas release structures") /mob/living/simple_animal/hostile/carp/Initialize() diff --git a/code/modules/mob/living/simple_animal/hostile/viscerator.dm b/code/modules/mob/living/simple_animal/hostile/viscerator.dm index af617c7ee7c..8bcab784f24 100644 --- a/code/modules/mob/living/simple_animal/hostile/viscerator.dm +++ b/code/modules/mob/living/simple_animal/hostile/viscerator.dm @@ -27,7 +27,6 @@ minbodytemp = 0 tameable = FALSE - smart_melee = FALSE flying = TRUE attack_emote = "buzzes at" diff --git a/html/changelogs/mattatlas-simplemobtweaks.yml b/html/changelogs/mattatlas-simplemobtweaks.yml new file mode 100644 index 00000000000..25ec725c0f0 --- /dev/null +++ b/html/changelogs/mattatlas-simplemobtweaks.yml @@ -0,0 +1,58 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: MattAtlas + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscdel: "Simple mobs don't dodge backwards anymore."