Spolier Alert

WARNING: Posts addressing individual campaigns contain spoilers, including: Lost Mine of Phandelver, Horde of the Dragon Queen, The Rise of Tiamat, Yawning Portal, Princes of the Apocalypse, and home-brew content.

Tuesday, March 30, 2021

Swarms of Medium or Small Creatures

Work in Progress...

D&D 5e has plenty of swarms most of which are medium (1 space) swarms of tiny creatures like: Rot Grubs, Ravens, Insects (Wasps), Rats, Bats, and quite a few more.  

The only non-tiny creature, medium swarm I have found is the Skeletal Swarm, which is a Large (4 space) swarm of medium sized creatures, which sticks closely to the pattern of the other swarms.  

As a DM, I  have bumped into situations where I have a large group of relatively low powered small or medium sized creatures creatures that are more powerful than the typically nearly trivial individual member of a swarm.  These groups could be productively lumped into a swarm to speed play.  I want to explore how I might do this in my games in this posting -- essentially, how to make something like a mob of villagers a single swarm instead of a bunch of individuals to manage. 

RAW Swarms

The standard 5e swarms operate as if they are a single monster.  They remain 100% effective as they take damage until they run out of hit points as other creatures do.  They stay together have a defined (small) number of attacks.  They really are one creature that has some unusual characteristics, typically: 

  • Damage Resistances: Bludgeoning, Piercing, Slashing
  • Condition Immunities: Charmed, Frightened, Grappled, Paralyzed, Petrified, Prone, Restrained, Stunned
  • Swarm. The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a Tiny creature. The swarm can't regain hit points or gain temporary hit points.
That's it.  Not a lot special about a swarm. The resistance to normal melee damage likely represents the difficulty of hitting many small targets with a single attack.  The condition immunities reflect the many individuals that would make effects like charm that work on a single creature ineffective.  The ability to fit through small spaces and share spaces also makes sense, though it opens up a grey area of the swarm ending its turn in a space where it doesn't fit, still, not a big deal.

Overall, RAW swarms are easy to deal with if, perhaps less than satisfying.

My Swarms

I want to be able to handle large numbers of villagers, twig blights, and other small or medium creatures relatively easily.  A few weeks ago I posted to Reddit on how I was planning to handle mobs of villagers in Vallaki.  I'm thinking I will generalize and simplify what I spelled out for that special case here to handle other types of creatures.

Mob of Villagers 

I defined a creature (effectively a Roll20 token) named Mob of Villagers that represents "X" villagers.  The mob is composed of a specified number of villagers, each of which has 4 hit points (they are commoners). The overall creature has X times 4 total hit points.  I defined some features that parallel the standard swarm and a few that extend it:

Mob. The Mob of Villagers can move through any opening large enough for a medium creature to pass through. The Mob of Villagers can't regain hit points or gain temporary hit points.

If the Mob of Villagers regards a creature as an ally or a neutral entity, the creature can move through the Mob of Villagers's space without impeding movement or incurring damage. If the Mob of Villagers regards a creature as an enemy and the creature tries to move through the Mob of Villagers's space, they must succeed on a DC 14 Athletics contest to do so and the spaces occupied by the Mob of Villagers are considered difficult terrain.

Each time a hostile creature ends its turn within the Mob of Villagers's space, they take 5 (2d4) bludgeoning damage.

Strength in Numbers. Upon reaching 75% hit points, the mob looses effectiveness as indicated in multiattack action. If reduced to 50% health, the Mob becomes a Group of Villagers.

Mob Mentality. Any creature attempting to sway the mob by charismatic means has disadvantage on their ability check. If a spell is used to affect the mob's mindset and requires a saving throw, the Mob has advantage on the roll. Attempts to sway the mob with violence or Intimidation automatically fail and attract the mob's wrath.

One of Many. Single target attacks can inflict no more than 4 points of damage (dropping one villager).

Self Help. The Mob of Villagers has advantage on melee range actions as a member of the group will help the actor.

Multiattack. As long as Mob of Villagers has more than 75% health (72 hp) it makes four attacks per turn. When at or below 72 health, three attacks can be made. The Mob of Villagers can make no more than two melee attacks against anyone target and may not repeat attacks in a round.

I also included a few complications, such as changing creature type at a certain number of members representing the mob being reduced in size.  

Fundamentally, I am thinking that a "swarm" packs more creatures into a space than is standard, so a swarm of medium creatures would have 2, maybe 3 per space that normally holds 1.  Small creatures might stuff 4 into that space.  Any time the swarm is less dense than normal, that is one creature per space, the swarm would contract (e.g. large becomes medium) or dissolve into individual entities. 

Generalized Swarm

I really like some elements of the Mob I defined.  
  • Specific count of creatures
  • Single target damage capped to a mean individual's hit points (One of Many)
  • Reduced number of attacks as counts reduces
Some of the other elements seem ripe for simplification, especially changing the creature details (Mob to Group).  

I'm thinking these basic characteristics make sense:

Damage Vulnerabilities. AOE damage effects 

Condition Immunities. charmed, frightened, grappled, paralyzed, petrified, prone, restrained, stunned

Swarm.  The swarm can occupy another creature's space and vice versa, and the swarm can move through any opening large enough for a individual members. The swarm can't regain hit points or gain temporary hit points.

Strength in Numbers. The swarm can have as many as 4 medium/small members per space (huge 36, large 16, medium 4). The size of the swarm may be reduced when it "fits" a smaller space and must be reduced when it drops to 1 per space for a given size swarm (huge to large at 9, large to medium at 4).  The swarm converts to individual(s) when one remains, unless it disbands sooner.

Swarm Mentality. Any creature attempting to sway the swarm by charismatic means has disadvantage on their ability check. If a spell is used to affect the mob's mindset and requires a saving throw, and the spell can affect all the members of the swarm the swarm has advantage on the save attempt (e.g. Hypnotic Pattern). Attempts to sway the mob with intimidation automatically fail and attract the swarm's wrath.

One of Many. Single target attacks can inflict no more than the number of hit points of an individual (dropping one), critical hits can do twice the damage of an individual (killing two members of the swarm).

Behind my Friends. The swarm is not subject to disadvantage when using ranged weapons in melee range.

Self Help. The swarm has advantage on melee range actions, athletics checks and other abilities where a member of the group may reasonably help.

Multiattack. The swarm may take an attack action for every 4 (round up) members of the swarm each turn, but no more than one attack may originate from any given space (limiting the number of attacks the swarm may use against individual targets).  [Count:Attacks -- 36-33:9, 32-29:8, 28-25:7, 24-21:6, 20-17:5, 16-13:4, 12-9:3, 8-5:2]

Trample: As a free action, the swarm may trample (typically doing 2d4 bludgeoning damage) each prone creatures in its space(s).  The swarm may move into a space occupied by a prone creature as part of its move and remain there.

Trip: The Swarm may attempt to trip (knockdown) one adjacent creature no larger than one category larger than individual members of the swarm.  The target must beat a [STR SAVE] with a disadvantaged Athletics or Acrobatics check.  If the swarm succeeds it may move on top of the creature.

The stats of the swarm should likely be adjusted from an individual.  I see swarms as typically stronger than individuals as a helping hand is likely to be there when needed.  A swarm may also be less intelligent or wise as group think seems to make people a fair bit dumber. 

The swarm needs some type(s) of melee attack, likely a ranged attack of some sort and may have a grapple and knockdown option as that seems appropriate for a swarm. 

Defining a Swarm of Twig Blights

To test the above, I will attempt to define a useful Swarm of Twig Blights, something that I anticipate being quite useful in Curse of Strahd.  

Twig Blights are Small plants that tend to be used in large groups.  They seem like a creature that would naturally group up into a swarm and work closely together, so they seem ideal. 

I'll drop the information into Tetra-Cube.com's stat block creator as a trial, basically combining the Twig Blight standard info with the characteristics defined above. Using /u/ItsADnDMonsterNow's CR Calculator, I estimated CR at 3.  Here's the statblock I came up with:


The resulting swarm is a bit less dangerous than the 16 individuals offensively; although, it is more able to apply that damage to a small number of targets because of its more compact nature.  

Overall, this seems to be promising.  Now to create tokens.

Creating Swarm Tokens


To do this, I nosed about the Internet until I found an image that seemed appropriate for a token of these critters.  I took that image, removed its background and stacked a few copies with some variations to make something that looked a bit more like a swarm. 

My next step was to run it through Token Stamp 2, setting a background color and a 12 sided border that I will subsequently use to create numbered tokens in photoshop so that I will end up with a series of numbered tokens, the numbers intended to indicate the number of individuals in the swarm.
After the tokens were created, saved as transparent PNGs, I uploaded them all to Roll20 and created a rollable table with the images in order so that the count can be changed. 



Creating Swarm in Roll20

With the token made, I duplicated the closest facsimile I could find (Mob of Villagers) and started editing.  All rather mundane stuff, except for a few things that allow for mostly automatic token selection and sizing.

Attributes and Abilities

The attribute NumberInSwarm needs to be added to the creature's sheet.  The initial value is not important as it will be managed by the macros.  The maximum (second) value needs to be the maximum number of individuals represented by the token. 

In my example, I'll be setting this to 12 / 36 as I plan to have 12 individuals in most twig blight swarms at the start and a max of 36, which is most significant for controlling token size transition point. 

Current Health

The current health of the token implies a number of individuals and should be set appropriately when the creature is used. 

Take-Damage Ability

This is the big kahuna of the setup, a large macro attached to the swarm's sheet.  This was written by Jon; I believe it is quite creative.  Here is the text of the macro for a Twig Blight Swarm.  I'll discuss it a bit further below. 

!token-mod {{
    --set
        bar3_value|[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]]
        width|[[[[{[[([[[[[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]]/@{selected|bar3|max}]]-0.0001]])d1]],[[{[[(1d[[[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]]]])-16]],0}>1]],1}>1]]*70]]
        height|[[[[{[[([[[[[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]]/@{selected|bar3|max}]]-0.0001]])d1]],[[{[[(1d[[[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]]]])-16]],0}>1]],1}>1]]*70]]
currentside|[[{[[@{selected|NumberInSwarm|Max}-[[floor((@{selected|bar3|max}-[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]])/4)]]]],[[0d0]]}kh1]]
    --order
        toback
}}
!setattr --name Swarm of Twig Blights --NumberInSwarm|[[{[[@{selected|NumberInSwarm|Max} - [[floor((@{selected|bar3|max}-[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]])/4)]]]],[[0d0]]}kh1]]
/desc The Swarm took [[{?{How much damage?},@{selected|bar3}}kl1]] damage. [[{[[[[floor((@{selected|bar3|max}-[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]])/4)]]-[[@{selected|NumberInSwarm|max}-@{selected|NumberInSwarm}]]]],0}kh1]] of them were killed. It now has [[@{selected|NumberInSwarm|Max}-[[floor((@{selected|bar3|max}-[[@{selected|bar3}-[[{?{How much damage?},@{selected|bar3}}kl1]]]])/4)]]]] left.

Roll20's language isn't exactly elegant, but it gets the job done.  There are very few lines in the above code, if you are using it, be aware that many of the apparent line breaks are phantoms. 

The code asks the user for the damage taken, figures out how many individuals are left in the swarm, and sets the height and width of the token.  A full-strength token will be huge, at half, it will be reduced to large and at 16 hit points (4 individuals) it will be reduced to medium-sized. 

The macro is hardcoded for creatures that have 4 health and a breakpoint to medium-sized of 16.  Those numbers can be changed as needed.

Reset-Swarm Ability


Sometimes the token will end up with the wrong height or width for proverbial reasons (seems to be a Roll20 bug dealing with a race condition).  Other times the token's health may be adjusted causing the token to be out of sync.  This ability is a slimmed-down version of Take-Damage that just recalculates and sets the token size and side.  It can be used to fix the occasional trip into the weeds.

Here is the full text of this ability:

!token-mod {{
    --set
        bar3_value|[[@{selected|bar3}-[[{0,@{selected|bar3}}kl1]]]]
        width|[[[[{[[([[[[[[@{selected|bar3}-[[{0,@{selected|bar3}}kl1]]]]/@{selected|bar3|max}]]-0.0001]])d1]],[[{[[(1d[[[[@{selected|bar3}-[[{0,@{selected|bar3}}kl1]]]]]])-16]],0}>1]],1}>1]]*70]]
        height|[[[[{[[([[[[[[@{selected|bar3}-[[{0,@{selected|bar3}}kl1]]]]/@{selected|bar3|max}]]-0.0001]])d1]],[[{[[(1d[[[[@{selected|bar3}-[[{0,@{selected|bar3}}kl1]]]]]])-16]],0}>1]],1}>1]]*70]]
currentside|[[{[[@{selected|NumberInSwarm|Max}-[[floor((@{selected|bar3|max}-[[@{selected|bar3}-[[{0,@{selected|bar3}}kl1]]]])/4)]]]],[[0d0]]}kh1]]
    --order
        toback
}}
!setattr --name Swarm of Twig Blights --NumberInSwarm|[[{[[@{selected|NumberInSwarm|Max} - [[floor((@{selected|bar3|max}-[[@{selected|bar3}-[[{0,@{selected|bar3}}kl1]]]])/4)]]]],[[0d0]]}kh1]]

That's it, not simple, but rather slick.

No comments:

Post a Comment