From bed3c770cedc8674a73dae5755f23ef221cd3692 Mon Sep 17 00:00:00 2001 From: Bloop <13398309+vinylspiders@users.noreply.github.com> Date: Sat, 29 Jul 2023 01:19:15 -0400 Subject: [PATCH] [MISSED MIRROR] make the mushroom a basic monster (#76570) (#22760) make the mushroom a basic monster (#76570) ## About The Pull Request i maked the mushrom from the simple monster to a basic monster so he is dont a simple anymore but now he is a basic.i followe the instrucions in the guide learn-ai.md to maked this pr. i also give the mushrom a extra feture he will go and hunt food mushroms on the floor to ate them and when he ate them he will heal small his hp ## Why It's Good For The Game he is now a basic monster so he is not simple anymore. it is good because he is a more advance ai and he will stil go and do the same stuf he did when he is simple but he is now a basic ## Changelog :cl: refactor: Mushrooms have been refactors, please report any bugs/unintended behavior add: the mushroom basic mob can eat the mushroom plant to heal itself /:cl: --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: san7890 --- code/datums/memory/_memory.dm | 2 +- code/modules/events/vent_clog.dm | 4 +- .../modules/hydroponics/unique_plant_genes.dm | 2 +- .../mob/living/basic/space_fauna/mushroom.dm | 193 +++++++++++++++++ code/modules/mob/living/living.dm | 2 +- .../living/simple_animal/hostile/mushroom.dm | 205 ------------------ code/modules/mob/transform_procs.dm | 2 +- .../vatgrowing/samples/cell_lines/common.dm | 2 +- .../unit_tests/simple_animal_freeze.dm | 1 - tgstation.dme | 2 +- 10 files changed, 201 insertions(+), 214 deletions(-) create mode 100644 code/modules/mob/living/basic/space_fauna/mushroom.dm delete mode 100644 code/modules/mob/living/simple_animal/hostile/mushroom.dm diff --git a/code/datums/memory/_memory.dm b/code/datums/memory/_memory.dm index 666ff92d72e..9c4ae2d905b 100644 --- a/code/datums/memory/_memory.dm +++ b/code/datums/memory/_memory.dm @@ -261,6 +261,7 @@ /mob/living/basic/killer_tomato, /mob/living/basic/lizard, /mob/living/basic/mouse, + /mob/living/basic/mushroom, /mob/living/basic/pet/dog/breaddog, /mob/living/basic/pet/dog/corgi, /mob/living/basic/pet/dog/pug, @@ -274,7 +275,6 @@ /mob/living/simple_animal/hostile/gorilla, /mob/living/simple_animal/hostile/megafauna/dragon/lesser, /mob/living/simple_animal/hostile/morph, - /mob/living/simple_animal/hostile/mushroom, /mob/living/simple_animal/hostile/retaliate/goat, /mob/living/simple_animal/parrot, /mob/living/simple_animal/pet/cat, diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index ca4a06de425..5b72ba3ac8c 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -287,12 +287,12 @@ /datum/round_event/vent_clog/strange/get_mob() var/static/list/mob_list = list( + /mob/living/basic/cockroach/glockroach/mobroach, /mob/living/basic/lightgeist, /mob/living/basic/mothroach, - /mob/living/basic/cockroach/glockroach/mobroach, + /mob/living/basic/mushroom, /mob/living/basic/viscerator, /mob/living/simple_animal/hostile/bear, - /mob/living/simple_animal/hostile/mushroom, /mob/living/simple_animal/hostile/retaliate/goose, //Janitors HATE geese. /mob/living/simple_animal/pet/gondola, ) diff --git a/code/modules/hydroponics/unique_plant_genes.dm b/code/modules/hydroponics/unique_plant_genes.dm index ce6e40b33cf..99c877cdfbe 100644 --- a/code/modules/hydroponics/unique_plant_genes.dm +++ b/code/modules/hydroponics/unique_plant_genes.dm @@ -465,7 +465,7 @@ /// Walking Mushroom's transformation gene /datum/plant_gene/trait/mob_transformation/shroom - killer_plant = /mob/living/simple_animal/hostile/mushroom + killer_plant = /mob/living/basic/mushroom mob_health_multiplier = 0.25 mob_melee_multiplier = 0.05 mob_speed_multiplier = 0.02 diff --git a/code/modules/mob/living/basic/space_fauna/mushroom.dm b/code/modules/mob/living/basic/space_fauna/mushroom.dm new file mode 100644 index 00000000000..5e52dabae75 --- /dev/null +++ b/code/modules/mob/living/basic/space_fauna/mushroom.dm @@ -0,0 +1,193 @@ +/mob/living/basic/mushroom + name = "walking mushroom" + desc = "It's a massive mushroom... with legs?" + icon_state = "mushroom_color" + icon_living = "mushroom_color" + icon_dead = "mushroom_dead" + mob_biotypes = MOB_ORGANIC | MOB_PLANT + + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "gently pushes aside" + response_disarm_simple = "gently push aside" + response_harm_continuous = "whacks" + response_harm_simple = "whack" + + speed = 1 + melee_damage_lower = 4 + melee_damage_upper = 4 + maxHealth = 60 + attack_verb_continuous = "chomps" + attack_verb_simple = "chomp" + attack_sound = 'sound/weapons/bite.ogg' + attack_vis_effect = ATTACK_EFFECT_BITE + + faction = list(FACTION_MUSHROOM) + speak_emote = list("squeaks") + death_message = "fainted!" + + ai_controller = /datum/ai_controller/basic_controller/mushroom + var/cap_color = "#ffffff" + ///Tracks our general strength level gained from eating other shrooms + var/powerlevel = 0 + ///If someone tries to cheat the system by attacking a shroom to lower its health, punish them so that it won't award levels to shrooms that eat it + var/bruised = FALSE + ///If we hit three, another mushroom's gonna eat us + var/faint_ticker = 0 + ///Where we store our cap icons so we dont generate them constantly to update our icon + var/static/mutable_appearance/cap_living + ///Where we store our cap icons so we dont generate them constantly to update our icon + var/static/mutable_appearance/cap_dead + ///Cooldown that tracks how long its been since revival + COOLDOWN_DECLARE(recovery_cooldown) + +/mob/living/basic/mushroom/Initialize(mapload) + . = ..() + melee_damage_lower = rand(3, 5) + melee_damage_upper = rand(10,20) + maxHealth = rand(50,70) + cap_living = cap_living || mutable_appearance(icon, "mushroom_cap") + cap_dead = cap_dead || mutable_appearance(icon, "mushroom_cap_dead") + cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) + update_mushroomcap() + health = maxHealth + AddElement(/datum/element/swabable, CELL_LINE_TABLE_WALKING_MUSHROOM, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) + ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) + RegisterSignal(src, COMSIG_HOSTILE_POST_ATTACKINGTARGET, PROC_REF(on_attacked_target)) + +/datum/ai_controller/basic_controller/mushroom + blackboard = list( + BB_TARGETTING_DATUM = new /datum/targetting_datum/basic/mushroom, + ) + + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + planning_subtrees = list( + /datum/ai_planning_subtree/simple_find_target, + /datum/ai_planning_subtree/basic_melee_attack_subtree/mushroom, + /datum/ai_planning_subtree/find_and_hunt_target/mushroom_food, + ) + + +/datum/targetting_datum/basic/mushroom + stat_attack = DEAD + +///we only attacked another mushrooms +/datum/targetting_datum/basic/mushroom/faction_check(mob/living/living_mob, mob/living/the_target) + return !living_mob.faction_check_mob(the_target, exact_match = check_factions_exactly) + + +/datum/ai_planning_subtree/basic_melee_attack_subtree/mushroom + melee_attack_behavior = /datum/ai_behavior/basic_melee_attack/mushroom + +/datum/ai_behavior/basic_melee_attack/mushroom + action_cooldown = 2 SECONDS + +/datum/ai_planning_subtree/find_and_hunt_target/mushroom_food + target_key = BB_LOW_PRIORITY_HUNTING_TARGET + hunting_behavior = /datum/ai_behavior/hunt_target/unarmed_attack_target/mushroom_food + hunt_targets = list(/obj/item/food/grown/mushroom) + hunt_range = 6 + + +/datum/ai_behavior/hunt_target/unarmed_attack_target/mushroom_food + hunt_cooldown = 15 SECONDS + always_reset_target = TRUE + +/mob/living/basic/mushroom/UnarmedAttack(atom/attack_target, proximity_flag, list/modifiers) + . = ..() + if(!.) + return + + if(!proximity_flag) + return + + if(istype(attack_target, /obj/item/food/grown/mushroom)) + recover(attack_target) + return TRUE + +/mob/living/basic/mushroom/proc/on_attacked_target(mob/living/basic/attacker, atom/target) + SIGNAL_HANDLER + + if(!istype(target, /mob/living/basic/mushroom)) + return + var/mob/living/basic/mushroom/victim = target + if(victim.stat != DEAD) + return + if(victim.faint_ticker >= 3) + consume_mushroom(victim) + return + + victim.faint_ticker++ + visible_message(span_notice("[src] chews a bit on [victim].")) + +/mob/living/basic/mushroom/proc/consume_mushroom(mob/living/basic/mushroom/consumed) + visible_message(span_warning("[src] devours [consumed]!")) + var/level_gain = (consumed.powerlevel - powerlevel) + if(level_gain >= 0 && !ckey && !consumed.bruised)//Player shrooms can't level up to become robust gods. + consumed.level_up(level_gain) + adjustBruteLoss(-consumed.maxHealth) + qdel(consumed) + +/mob/living/basic/mushroom/revive(full_heal_flags = NONE, excess_healing = 0, force_grab_ghost = FALSE) + . = ..() + if(!.) + return + + icon_state = "mushroom_color" + update_mushroomcap() + +/mob/living/basic/mushroom/death(gibbed) + . = ..() + update_mushroomcap() + +/mob/living/basic/mushroom/proc/update_mushroomcap() + cut_overlays() + cap_living.color = cap_color + cap_dead.color = cap_color + if(stat == DEAD) + add_overlay(cap_dead) + else + add_overlay(cap_living) + +/mob/living/basic/mushroom/proc/recover(obj/item/mush_meal) + visible_message(span_notice("[src] eats [mush_meal]!")) + update_mushroomcap() + qdel(mush_meal) + if(!COOLDOWN_FINISHED(src, recovery_cooldown)) + return + faint_ticker = 0 + if(stat == DEAD) + revive(HEAL_ALL) + else + adjustBruteLoss(-5) + COOLDOWN_START(src, recovery_cooldown, 5 MINUTES) + +/mob/living/basic/mushroom/proc/level_up(level_gain) + adjustBruteLoss(-maxHealth) //They'll always heal, even if they don't gain a level + if(powerlevel > 9) + return + if(level_gain == 0) + level_gain = 1 + powerlevel += level_gain + if(prob(25)) + melee_damage_lower += (level_gain * rand(1,5)) + else + melee_damage_upper += (level_gain * rand(1,5)) + maxHealth += (level_gain * rand(1,5)) + +/mob/living/basic/mushroom/attackby(obj/item/mush, mob/living/carbon/human/user, list/modifiers) + if(istype(mush, /obj/item/food/grown/mushroom)) + recover(mush) + return + if(mush.force || user.combat_mode) + bruised = TRUE + return ..() + +/mob/living/basic/mushroom/harvest(mob/living/user) + var/counter + for(counter=0, counter <= powerlevel, counter++) + var/obj/item/food/hugemushroomslice/shroomslice = new /obj/item/food/hugemushroomslice(src.loc) + shroomslice.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel) + shroomslice.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel) + shroomslice.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 31e8da201c9..d37be6a49dc 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1500,6 +1500,7 @@ /mob/living/basic/killer_tomato, /mob/living/basic/lizard, /mob/living/basic/mouse, + /mob/living/basic/mushroom, /mob/living/basic/pet/dog/breaddog, /mob/living/basic/pet/dog/corgi, /mob/living/basic/pet/dog/pug, @@ -1513,7 +1514,6 @@ /mob/living/simple_animal/hostile/gorilla, /mob/living/simple_animal/hostile/megafauna/dragon/lesser, /mob/living/simple_animal/hostile/morph, - /mob/living/simple_animal/hostile/mushroom, /mob/living/simple_animal/hostile/retaliate/goat, /mob/living/simple_animal/parrot, /mob/living/simple_animal/pet/cat, diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm deleted file mode 100644 index da86fb17c8d..00000000000 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ /dev/null @@ -1,205 +0,0 @@ -/mob/living/simple_animal/hostile/mushroom - name = "walking mushroom" - desc = "It's a massive mushroom... with legs?" - icon_state = "mushroom_color" - icon_living = "mushroom_color" - icon_dead = "mushroom_dead" - mob_biotypes = MOB_ORGANIC | MOB_PLANT - speak_chance = 0 - turns_per_move = 1 - maxHealth = 10 - health = 10 - butcher_results = list(/obj/item/food/hugemushroomslice = 1) - response_help_continuous = "pets" - response_help_simple = "pet" - response_disarm_continuous = "gently pushes aside" - response_disarm_simple = "gently push aside" - response_harm_continuous = "whacks" - response_harm_simple = "whack" - harm_intent_damage = 5 - obj_damage = 0 - melee_damage_lower = 1 - melee_damage_upper = 1 - attack_same = 2 - attack_verb_continuous = "chomps" - attack_verb_simple = "chomp" - attack_sound = 'sound/weapons/bite.ogg' - attack_vis_effect = ATTACK_EFFECT_BITE - faction = list(FACTION_MUSHROOM) - environment_smash = ENVIRONMENT_SMASH_NONE - stat_attack = DEAD - mouse_opacity = MOUSE_OPACITY_ICON - speed = 1 - robust_searching = 1 - unique_name = 1 - speak_emote = list("squeaks") - death_message = "fainted." - var/cap_color = "#ffffff" - var/powerlevel = 0 //Tracks our general strength level gained from eating other shrooms - var/bruised = 0 //If someone tries to cheat the system by attacking a shroom to lower its health, punish them so that it won't award levels to shrooms that eat it - var/recovery_cooldown = 0 //So you can't repeatedly revive it during a fight - var/faint_ticker = 0 //If we hit three, another mushroom's gonna eat us - var/static/mutable_appearance/cap_living //Where we store our cap icons so we dont generate them constantly to update our icon - var/static/mutable_appearance/cap_dead - -/mob/living/simple_animal/hostile/mushroom/examine(mob/user) - . = ..() - if(health >= maxHealth) - . += span_info("It looks healthy.") - else - . += span_info("It looks like it's been roughed up.") - -/mob/living/simple_animal/hostile/mushroom/Life(seconds_per_tick = SSMOBS_DT, times_fired) - ..() - if(!stat)//Mushrooms slowly regenerate if conscious, for people who want to save them from being eaten - adjustBruteLoss(-1 * seconds_per_tick) - -/mob/living/simple_animal/hostile/mushroom/Initialize(mapload)//Makes every shroom a little unique - melee_damage_lower += rand(3, 5) - melee_damage_upper += rand(10,20) - maxHealth += rand(40,60) - move_to_delay = rand(3,11) - cap_living = cap_living || mutable_appearance(icon, "mushroom_cap") - cap_dead = cap_dead || mutable_appearance(icon, "mushroom_cap_dead") - - cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) - UpdateMushroomCap() - health = maxHealth - add_cell_sample() - . = ..() - - ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) - -/mob/living/simple_animal/hostile/mushroom/CanAttack(atom/the_target) // Mushroom-specific version of CanAttack to handle stupid attack_same = 2 crap so we don't have to do it for literally every single simple_animal/hostile because this shit never gets spawned - if(!the_target || isturf(the_target)) - return FALSE - - if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it - return FALSE - - if(isliving(the_target)) - var/mob/living/L = the_target - - if (!faction_check_mob(L) && attack_same == 2) - return FALSE - if(L.stat > stat_attack) - return FALSE - - return TRUE - - return FALSE - -/mob/living/simple_animal/hostile/mushroom/adjustHealth(amount, updating_health = TRUE, forced = FALSE) //Possibility to flee from a fight just to make it more visually interesting - if(!retreat_distance && prob(33)) - retreat_distance = 5 - addtimer(CALLBACK(src, PROC_REF(stop_retreat)), 30) - . = ..() - -/mob/living/simple_animal/hostile/mushroom/proc/stop_retreat() - retreat_distance = null - -/mob/living/simple_animal/hostile/mushroom/attack_animal(mob/living/user, list/modifiers) - if(istype(user, /mob/living/simple_animal/hostile/mushroom) && stat == DEAD) - var/mob/living/simple_animal/hostile/mushroom/shroom = user - if(faint_ticker < 2) - shroom.visible_message(span_notice("[shroom] chews a bit on [src].")) - faint_ticker++ - return TRUE - shroom.visible_message(span_warning("[shroom] devours [src]!")) - var/level_gain = (powerlevel - shroom.powerlevel) - if(level_gain >= -1 && !bruised && !shroom.ckey)//Player shrooms can't level up to become robust gods. - if(level_gain < 1)//So we still gain a level if two mushrooms were the same level - level_gain = 1 - shroom.LevelUp(level_gain) - shroom.adjustBruteLoss(-shroom.maxHealth) - qdel(src) - return TRUE - return ..() - -/mob/living/simple_animal/hostile/mushroom/revive(full_heal_flags = NONE, excess_healing = 0, force_grab_ghost = FALSE) - . = ..() - if(!.) - return - - icon_state = "mushroom_color" - UpdateMushroomCap() - -/mob/living/simple_animal/hostile/mushroom/death(gibbed) - . = ..() - UpdateMushroomCap() - -/mob/living/simple_animal/hostile/mushroom/proc/UpdateMushroomCap() - cut_overlays() - cap_living.color = cap_color - cap_dead.color = cap_color - if(health == 0) - add_overlay(cap_dead) - else - add_overlay(cap_living) - -/mob/living/simple_animal/hostile/mushroom/proc/Recover() - visible_message(span_notice("[src] slowly begins to recover.")) - faint_ticker = 0 - revive(HEAL_ALL) - UpdateMushroomCap() - recovery_cooldown = 1 - addtimer(CALLBACK(src, PROC_REF(recovery_recharge)), 300) - -/mob/living/simple_animal/hostile/mushroom/proc/recovery_recharge() - recovery_cooldown = 0 - -/mob/living/simple_animal/hostile/mushroom/proc/LevelUp(level_gain) - if(powerlevel <= 9) - powerlevel += level_gain - if(prob(25)) - melee_damage_lower += (level_gain * rand(1,5)) - else - melee_damage_upper += (level_gain * rand(1,5)) - maxHealth += (level_gain * rand(1,5)) - adjustBruteLoss(-maxHealth) //They'll always heal, even if they don't gain a level, in case you want to keep this shroom around instead of harvesting it - -/mob/living/simple_animal/hostile/mushroom/proc/Bruise() - if(!bruised && !stat) - src.visible_message(span_notice("The [src.name] is bruised!")) - bruised = 1 - -/mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/food/grown/mushroom)) - if(stat == DEAD && !recovery_cooldown) - Recover() - qdel(I) - else - to_chat(user, span_warning("[src] won't eat it!")) - return - if(I.force) - Bruise() - ..() - -/mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/user, list/modifiers) - ..() - if(user.combat_mode) - Bruise() - -/mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) - ..() - if(isitem(AM)) - var/obj/item/T = AM - if(T.throwforce) - Bruise() - -/mob/living/simple_animal/hostile/mushroom/bullet_act(obj/projectile/P) - . = ..() - if(P.damage > 0 && P.damage_type == BRUTE) - Bruise() - -/mob/living/simple_animal/hostile/mushroom/harvest() - var/counter - for(counter=0, counter <= powerlevel, counter++) - var/obj/item/food/hugemushroomslice/S = new /obj/item/food/hugemushroomslice(src.loc) - S.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel) - S.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel) - S.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel) - -/mob/living/simple_animal/hostile/mushroom/add_cell_sample() - . = ..() - AddElement(/datum/element/swabable, CELL_LINE_TABLE_WALKING_MUSHROOM, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 5e921e76106..6ced60af0d3 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -382,7 +382,7 @@ return TRUE if(ispath(MP, /mob/living/basic/carp)) return TRUE - if(ispath(MP, /mob/living/simple_animal/hostile/mushroom)) + if(ispath(MP, /mob/living/basic/mushroom)) return TRUE if(ispath(MP, /mob/living/simple_animal/shade)) return TRUE diff --git a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm index 7127aa2cf37..1e0cedc5bfa 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm @@ -629,7 +629,7 @@ /datum/reagent/copper = -1) virus_suspectibility = 0 - resulting_atoms = list(/mob/living/simple_animal/hostile/mushroom = 1) + resulting_atoms = list(/mob/living/basic/mushroom = 1) /datum/micro_organism/cell_line/queen_bee desc = "aphid cells" diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 620163a8015..c0126284a7e 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -192,7 +192,6 @@ /mob/living/simple_animal/hostile/mimic/xenobio, /mob/living/simple_animal/hostile/mining_drone, /mob/living/simple_animal/hostile/morph, - /mob/living/simple_animal/hostile/mushroom, /mob/living/simple_animal/hostile/nanotrasen, /mob/living/simple_animal/hostile/nanotrasen/elite, /mob/living/simple_animal/hostile/nanotrasen/ranged, diff --git a/tgstation.dme b/tgstation.dme index 5f6f51f1f68..b7a07acfeb9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4186,6 +4186,7 @@ #include "code\modules\mob\living\basic\space_fauna\headslug.dm" #include "code\modules\mob\living\basic\space_fauna\killer_tomato.dm" #include "code\modules\mob\living\basic\space_fauna\lightgeist.dm" +#include "code\modules\mob\living\basic\space_fauna\mushroom.dm" #include "code\modules\mob\living\basic\space_fauna\spaceman.dm" #include "code\modules\mob\living\basic\space_fauna\carp\carp.dm" #include "code\modules\mob\living\basic\space_fauna\carp\carp_abilities.dm" @@ -4436,7 +4437,6 @@ #include "code\modules\mob\living\simple_animal\hostile\illusion.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" #include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm" #include "code\modules\mob\living\simple_animal\hostile\ooze.dm" #include "code\modules\mob\living\simple_animal\hostile\pirate.dm"