mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 16:47:13 +01:00
## About The Pull Request
This PR is a re-pr of ##70522 , with some tweaks:
Notably:
- Wavespeak is not a say override, but instead uses a mindlink. Meaning
carp and space dragons can still talk verbally, but they can also use
telepathy to talk to all carp and the dragon.
- I would refactor Mind Linker a bit further to be a full datum rather
than a component but that's for another time.
- Removed the gravity aura component in favor of using the existing
forced gravity proximity monitor.
- Also fixed a bug involving that. Lol.
- Minor refactoring around the place.
- Reduced the volume on a lot of space dragon sounds.
- Edited the roundend report for Space Dragons to collate all entries
into one per player.

## Why It's Good For The Game
Space dragon still plays pretty "play lame win game" right now, the
optimal strategy for them is to find the cheesiest spot for a portal and
spam their stun / fire breath to make it unreachable.
I was a fan of the original PR so I updated it and brought it back.
## Changelog
🆑 IndieanaJones, Melbert
balance: Space Dragon can no longer choose its rift locations freely,
and instead is given 5 pre-determined locations to pick from instead
balance: Space Dragon itself has been buffed in order to support a more
confrontational playstyle, however its wing gust now requires a line of
sight to targets in order to affect them.
balance: Player Space Carp from rifts now have buffed health, but
reduced object damage values. They also gain a temporary speed boost
when hit by Space Dragon's fire breath instead of taking damage.
balance: Carp rift spawn times have been reduced, the healing AOE is now
a 3x3 instead of a 1x1, and apply normal gravity in a large radius
around them
balance: Space Dragon and rift carps now communicate on a private mind
link channel via action button similar to Raw Prophets and Slimepeople.
fix: Fixed Gravity Generator forced gravity not applying.
fix: Intern Announcer will no longer replace Space Dragon announcements.
qol: The roundend report for space dragons now collates all players who
played a carp into one entry, rather than one per carp spawned.
qol: Space Dragon sounds are much less ear piercingly loud.
/🆑
---------
Co-authored-by: IndieanaJones <mariosuperstar384@gmail.com>
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
321 lines
16 KiB
Plaintext
321 lines
16 KiB
Plaintext
/// Tests that no new simple_animal subtypes are added.
|
|
/datum/unit_test/simple_animal_freeze
|
|
// !!! DO NOT ADD NEW ENTRIES TO THIS LIST !!!
|
|
// NO new simple animals are allowed.
|
|
// Use the new basic mobs system instead.
|
|
// If you are refactoring a simple_animal, REMOVE it from this list
|
|
var/list/allowed_types = list(
|
|
/mob/living/simple_animal/bot,
|
|
/mob/living/simple_animal/bot/cleanbot,
|
|
/mob/living/simple_animal/bot/cleanbot/autopatrol,
|
|
/mob/living/simple_animal/bot/cleanbot/medbay,
|
|
/mob/living/simple_animal/bot/firebot,
|
|
/mob/living/simple_animal/bot/floorbot,
|
|
/mob/living/simple_animal/bot/hygienebot,
|
|
/mob/living/simple_animal/bot/medbot,
|
|
/mob/living/simple_animal/bot/medbot/autopatrol,
|
|
/mob/living/simple_animal/bot/medbot/derelict,
|
|
/mob/living/simple_animal/bot/medbot/mysterious,
|
|
/mob/living/simple_animal/bot/medbot/stationary,
|
|
/mob/living/simple_animal/bot/mulebot,
|
|
/mob/living/simple_animal/bot/mulebot/paranormal,
|
|
/mob/living/simple_animal/bot/secbot,
|
|
/mob/living/simple_animal/bot/secbot/beepsky,
|
|
/mob/living/simple_animal/bot/secbot/beepsky/armsky,
|
|
/mob/living/simple_animal/bot/secbot/beepsky/jr,
|
|
/mob/living/simple_animal/bot/secbot/beepsky/officer,
|
|
/mob/living/simple_animal/bot/secbot/beepsky/ofitser,
|
|
/mob/living/simple_animal/bot/secbot/ed209,
|
|
/mob/living/simple_animal/bot/secbot/genesky,
|
|
/mob/living/simple_animal/bot/secbot/grievous,
|
|
/mob/living/simple_animal/bot/secbot/grievous/toy,
|
|
/mob/living/simple_animal/bot/secbot/honkbot,
|
|
/mob/living/simple_animal/bot/secbot/pingsky,
|
|
/mob/living/simple_animal/bot/vibebot,
|
|
/mob/living/simple_animal/chick,
|
|
/mob/living/simple_animal/chick/holo,
|
|
/mob/living/simple_animal/crab,
|
|
/mob/living/simple_animal/crab/coffee,
|
|
/mob/living/simple_animal/crab/evil,
|
|
/mob/living/simple_animal/crab/evil/kreb,
|
|
/mob/living/simple_animal/crab/jon,
|
|
/mob/living/simple_animal/crab/kreb,
|
|
/mob/living/simple_animal/drone,
|
|
/mob/living/simple_animal/drone/classic,
|
|
/mob/living/simple_animal/drone/derelict,
|
|
/mob/living/simple_animal/drone/polymorphed,
|
|
/mob/living/simple_animal/drone/snowflake,
|
|
/mob/living/simple_animal/drone/snowflake/bardrone,
|
|
/mob/living/simple_animal/drone/syndrone,
|
|
/mob/living/simple_animal/drone/syndrone/badass,
|
|
/mob/living/simple_animal/holodeck_monkey,
|
|
/mob/living/simple_animal/hostile,
|
|
/mob/living/simple_animal/hostile/alien,
|
|
/mob/living/simple_animal/hostile/alien/drone,
|
|
/mob/living/simple_animal/hostile/alien/maid,
|
|
/mob/living/simple_animal/hostile/alien/maid/barmaid,
|
|
/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,
|
|
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing,
|
|
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing,
|
|
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random,
|
|
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/tendril,
|
|
/mob/living/simple_animal/hostile/asteroid/brimdemon,
|
|
/mob/living/simple_animal/hostile/asteroid/curseblob,
|
|
/mob/living/simple_animal/hostile/asteroid/elite,
|
|
/mob/living/simple_animal/hostile/asteroid/elite/broodmother,
|
|
/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child,
|
|
/mob/living/simple_animal/hostile/asteroid/elite/herald,
|
|
/mob/living/simple_animal/hostile/asteroid/elite/herald/mirror,
|
|
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire,
|
|
/mob/living/simple_animal/hostile/asteroid/elite/legionnairehead,
|
|
/mob/living/simple_animal/hostile/asteroid/elite/pandora,
|
|
/mob/living/simple_animal/hostile/asteroid/goldgrub,
|
|
/mob/living/simple_animal/hostile/asteroid/goliath,
|
|
/mob/living/simple_animal/hostile/asteroid/goliath/beast,
|
|
/mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient,
|
|
/mob/living/simple_animal/hostile/asteroid/goliath/beast/random,
|
|
/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril,
|
|
/mob/living/simple_animal/hostile/asteroid/gutlunch,
|
|
/mob/living/simple_animal/hostile/asteroid/gutlunch/grublunch,
|
|
/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck,
|
|
/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelord,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelord/legion,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/advanced,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/dwarf,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/random,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelordbrood,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/advanced,
|
|
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/snow,
|
|
/mob/living/simple_animal/hostile/asteroid/ice_demon,
|
|
/mob/living/simple_animal/hostile/asteroid/ice_whelp,
|
|
/mob/living/simple_animal/hostile/asteroid/lobstrosity,
|
|
/mob/living/simple_animal/hostile/asteroid/lobstrosity/lava,
|
|
/mob/living/simple_animal/hostile/asteroid/polarbear,
|
|
/mob/living/simple_animal/hostile/asteroid/polarbear/lesser,
|
|
/mob/living/simple_animal/hostile/asteroid/wolf,
|
|
/mob/living/simple_animal/hostile/bear,
|
|
/mob/living/simple_animal/hostile/bear/butter,
|
|
/mob/living/simple_animal/hostile/bear/fightpit,
|
|
/mob/living/simple_animal/hostile/bear/hudson,
|
|
/mob/living/simple_animal/hostile/bear/russian,
|
|
/mob/living/simple_animal/hostile/bear/snow,
|
|
/mob/living/simple_animal/hostile/bee,
|
|
/mob/living/simple_animal/hostile/bee/queen,
|
|
/mob/living/simple_animal/hostile/bee/short,
|
|
/mob/living/simple_animal/hostile/bee/toxin,
|
|
/mob/living/simple_animal/hostile/big_legion,
|
|
/mob/living/simple_animal/hostile/blob,
|
|
/mob/living/simple_animal/hostile/blob/blobbernaut,
|
|
/mob/living/simple_animal/hostile/blob/blobbernaut/independent,
|
|
/mob/living/simple_animal/hostile/blob/blobspore,
|
|
/mob/living/simple_animal/hostile/blob/blobspore/independent,
|
|
/mob/living/simple_animal/hostile/blob/blobspore/weak,
|
|
/mob/living/simple_animal/hostile/boss,
|
|
/mob/living/simple_animal/hostile/boss/paper_wizard,
|
|
/mob/living/simple_animal/hostile/boss/paper_wizard/copy,
|
|
/mob/living/simple_animal/hostile/construct,
|
|
/mob/living/simple_animal/hostile/construct/artificer,
|
|
/mob/living/simple_animal/hostile/construct/artificer/angelic,
|
|
/mob/living/simple_animal/hostile/construct/artificer/hostile,
|
|
/mob/living/simple_animal/hostile/construct/artificer/mystic,
|
|
/mob/living/simple_animal/hostile/construct/artificer/noncult,
|
|
/mob/living/simple_animal/hostile/construct/harvester,
|
|
/mob/living/simple_animal/hostile/construct/juggernaut,
|
|
/mob/living/simple_animal/hostile/construct/juggernaut/angelic,
|
|
/mob/living/simple_animal/hostile/construct/juggernaut/hostile,
|
|
/mob/living/simple_animal/hostile/construct/juggernaut/mystic,
|
|
/mob/living/simple_animal/hostile/construct/juggernaut/noncult,
|
|
/mob/living/simple_animal/hostile/construct/proteon,
|
|
/mob/living/simple_animal/hostile/construct/proteon/hostile,
|
|
/mob/living/simple_animal/hostile/construct/wraith,
|
|
/mob/living/simple_animal/hostile/construct/wraith/angelic,
|
|
/mob/living/simple_animal/hostile/construct/wraith/hostile,
|
|
/mob/living/simple_animal/hostile/construct/wraith/mystic,
|
|
/mob/living/simple_animal/hostile/construct/wraith/noncult,
|
|
/mob/living/simple_animal/hostile/dark_wizard,
|
|
/mob/living/simple_animal/hostile/eyeball,
|
|
/mob/living/simple_animal/hostile/gorilla,
|
|
/mob/living/simple_animal/hostile/gorilla/cargo_domestic,
|
|
/mob/living/simple_animal/hostile/guardian,
|
|
/mob/living/simple_animal/hostile/guardian/assassin,
|
|
/mob/living/simple_animal/hostile/guardian/charger,
|
|
/mob/living/simple_animal/hostile/guardian/dextrous,
|
|
/mob/living/simple_animal/hostile/guardian/explosive,
|
|
/mob/living/simple_animal/hostile/guardian/gaseous,
|
|
/mob/living/simple_animal/hostile/guardian/gravitokinetic,
|
|
/mob/living/simple_animal/hostile/guardian/lightning,
|
|
/mob/living/simple_animal/hostile/guardian/protector,
|
|
/mob/living/simple_animal/hostile/guardian/ranged,
|
|
/mob/living/simple_animal/hostile/guardian/standard,
|
|
/mob/living/simple_animal/hostile/guardian/support,
|
|
/mob/living/simple_animal/hostile/headcrab,
|
|
/mob/living/simple_animal/hostile/heretic_summon,
|
|
/mob/living/simple_animal/hostile/heretic_summon/armsy,
|
|
/mob/living/simple_animal/hostile/heretic_summon/armsy/prime,
|
|
/mob/living/simple_animal/hostile/heretic_summon/ash_spirit,
|
|
/mob/living/simple_animal/hostile/heretic_summon/maid_in_the_mirror,
|
|
/mob/living/simple_animal/hostile/heretic_summon/raw_prophet,
|
|
/mob/living/simple_animal/hostile/heretic_summon/rust_spirit,
|
|
/mob/living/simple_animal/hostile/heretic_summon/stalker,
|
|
/mob/living/simple_animal/hostile/hivebot,
|
|
/mob/living/simple_animal/hostile/hivebot/mechanic,
|
|
/mob/living/simple_animal/hostile/hivebot/range,
|
|
/mob/living/simple_animal/hostile/hivebot/rapid,
|
|
/mob/living/simple_animal/hostile/hivebot/strong,
|
|
/mob/living/simple_animal/hostile/illusion,
|
|
/mob/living/simple_animal/hostile/illusion/escape,
|
|
/mob/living/simple_animal/hostile/illusion/mirage,
|
|
/mob/living/simple_animal/hostile/imp,
|
|
/mob/living/simple_animal/hostile/imp/slaughter,
|
|
/mob/living/simple_animal/hostile/imp/slaughter/engine_demon,
|
|
/mob/living/simple_animal/hostile/imp/slaughter/laughter,
|
|
/mob/living/simple_animal/hostile/jungle,
|
|
/mob/living/simple_animal/hostile/jungle/leaper,
|
|
/mob/living/simple_animal/hostile/jungle/mega_arachnid,
|
|
/mob/living/simple_animal/hostile/jungle/mook,
|
|
/mob/living/simple_animal/hostile/jungle/seedling,
|
|
/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,
|
|
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/guidance,
|
|
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter,
|
|
/mob/living/simple_animal/hostile/megafauna/bubblegum,
|
|
/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination,
|
|
/mob/living/simple_animal/hostile/megafauna/clockwork_defender,
|
|
/mob/living/simple_animal/hostile/megafauna/colossus,
|
|
/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner,
|
|
/mob/living/simple_animal/hostile/megafauna/dragon,
|
|
/mob/living/simple_animal/hostile/megafauna/dragon/lesser,
|
|
/mob/living/simple_animal/hostile/megafauna/hierophant,
|
|
/mob/living/simple_animal/hostile/megafauna/legion,
|
|
/mob/living/simple_animal/hostile/megafauna/legion/medium,
|
|
/mob/living/simple_animal/hostile/megafauna/legion/medium/eye,
|
|
/mob/living/simple_animal/hostile/megafauna/legion/medium/left,
|
|
/mob/living/simple_animal/hostile/megafauna/legion/medium/right,
|
|
/mob/living/simple_animal/hostile/megafauna/legion/small,
|
|
/mob/living/simple_animal/hostile/megafauna/wendigo,
|
|
/mob/living/simple_animal/hostile/mimic,
|
|
/mob/living/simple_animal/hostile/mimic/copy,
|
|
/mob/living/simple_animal/hostile/mimic/copy/machine,
|
|
/mob/living/simple_animal/hostile/mimic/copy/ranged,
|
|
/mob/living/simple_animal/hostile/mimic/crate,
|
|
/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,
|
|
/mob/living/simple_animal/hostile/nanotrasen/ranged/assault,
|
|
/mob/living/simple_animal/hostile/nanotrasen/ranged/smg,
|
|
/mob/living/simple_animal/hostile/nanotrasen/screaming,
|
|
/mob/living/simple_animal/hostile/ooze,
|
|
/mob/living/simple_animal/hostile/ooze/gelatinous,
|
|
/mob/living/simple_animal/hostile/ooze/grapes,
|
|
/mob/living/simple_animal/hostile/pirate,
|
|
/mob/living/simple_animal/hostile/pirate/melee,
|
|
/mob/living/simple_animal/hostile/pirate/melee/space,
|
|
/mob/living/simple_animal/hostile/pirate/ranged,
|
|
/mob/living/simple_animal/hostile/pirate/ranged/space,
|
|
/mob/living/simple_animal/hostile/regalrat,
|
|
/mob/living/simple_animal/hostile/regalrat/controlled,
|
|
/mob/living/simple_animal/hostile/retaliate,
|
|
/mob/living/simple_animal/hostile/retaliate/clown,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/banana,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/clownhulk,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/clownhulk/destroyer,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/fleshclown,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/honkling,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/longface,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/lube,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/mutant,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton,
|
|
/mob/living/simple_animal/hostile/retaliate/clown/mutant/slow,
|
|
/mob/living/simple_animal/hostile/retaliate/goat,
|
|
/mob/living/simple_animal/hostile/retaliate/goose,
|
|
/mob/living/simple_animal/hostile/retaliate/goose/vomit,
|
|
/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace,
|
|
/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace/ranged,
|
|
/mob/living/simple_animal/hostile/retaliate/snake,
|
|
/mob/living/simple_animal/hostile/retaliate/spaceman,
|
|
/mob/living/simple_animal/hostile/retaliate/trader,
|
|
/mob/living/simple_animal/hostile/retaliate/trader/mrbones,
|
|
/mob/living/simple_animal/hostile/skeleton,
|
|
/mob/living/simple_animal/hostile/skeleton/eskimo,
|
|
/mob/living/simple_animal/hostile/skeleton/ice,
|
|
/mob/living/simple_animal/hostile/skeleton/plasmaminer,
|
|
/mob/living/simple_animal/hostile/skeleton/plasmaminer/jackhammer,
|
|
/mob/living/simple_animal/hostile/skeleton/templar,
|
|
/mob/living/simple_animal/hostile/smspider,
|
|
/mob/living/simple_animal/hostile/smspider/overcharged,
|
|
/mob/living/simple_animal/hostile/space_dragon,
|
|
/mob/living/simple_animal/hostile/space_dragon/spawn_with_antag,
|
|
/mob/living/simple_animal/hostile/vatbeast,
|
|
/mob/living/simple_animal/hostile/venus_human_trap,
|
|
/mob/living/simple_animal/hostile/wizard,
|
|
/mob/living/simple_animal/hostile/zombie,
|
|
/mob/living/simple_animal/parrot,
|
|
/mob/living/simple_animal/parrot/natural,
|
|
/mob/living/simple_animal/parrot/poly,
|
|
/mob/living/simple_animal/parrot/poly/ghost,
|
|
/mob/living/simple_animal/pet,
|
|
/mob/living/simple_animal/pet/cat,
|
|
/mob/living/simple_animal/pet/cat/_proc,
|
|
/mob/living/simple_animal/pet/cat/breadcat,
|
|
/mob/living/simple_animal/pet/cat/cak,
|
|
/mob/living/simple_animal/pet/cat/jerry,
|
|
/mob/living/simple_animal/pet/cat/kitten,
|
|
/mob/living/simple_animal/pet/cat/original,
|
|
/mob/living/simple_animal/pet/cat/runtime,
|
|
/mob/living/simple_animal/pet/cat/space,
|
|
/mob/living/simple_animal/pet/fox,
|
|
/mob/living/simple_animal/pet/fox/renault,
|
|
/mob/living/simple_animal/pet/gondola,
|
|
/mob/living/simple_animal/pet/gondola/gondolapod,
|
|
/mob/living/simple_animal/pet/penguin,
|
|
/mob/living/simple_animal/pet/penguin/baby,
|
|
/mob/living/simple_animal/pet/penguin/emperor,
|
|
/mob/living/simple_animal/pet/penguin/emperor/shamebrero,
|
|
/mob/living/simple_animal/revenant,
|
|
/mob/living/simple_animal/robot_customer,
|
|
/mob/living/simple_animal/shade,
|
|
/mob/living/simple_animal/slime,
|
|
/mob/living/simple_animal/slime/pet,
|
|
/mob/living/simple_animal/slime/random,
|
|
/mob/living/simple_animal/slime/transformed_slime,
|
|
/mob/living/simple_animal/sloth,
|
|
/mob/living/simple_animal/sloth/citrus,
|
|
/mob/living/simple_animal/sloth/paperwork,
|
|
/mob/living/simple_animal/soulscythe,
|
|
// DO NOT ADD NEW ENTRIES TO THIS LIST
|
|
// READ THE COMMENT ABOVE
|
|
)
|
|
|
|
/datum/unit_test/simple_animal_freeze/Run()
|
|
var/list/seen = list()
|
|
|
|
// Sanity check, to prevent people from just doing a mass find and replace
|
|
for (var/allowed_type in allowed_types)
|
|
if (allowed_type in seen)
|
|
TEST_FAIL("[allowed_type] is in the allowlist more than once")
|
|
else
|
|
seen[allowed_type] = TRUE
|
|
|
|
TEST_ASSERT(ispath(allowed_type, /mob/living/simple_animal), "[allowed_type] is not a simple_animal. Remove it from the list.")
|
|
|
|
for (var/subtype in subtypesof(/mob/living/simple_animal))
|
|
if (!(subtype in allowed_types))
|
|
TEST_FAIL("No new simple_animal subtypes are allowed. Please refactor [subtype] into a basic mob.")
|