M20 on My Mind

Send to Kindle

I have a lot to catch up on over at Nevermet Press. Many, many wiki entries and posts are just bursting to get out of my mind. Alas, energy and concentration are not my friends.

So a quick brain dump here in an attempt to get going:

Odd Retroclone Idea One:

Wanted to be successful with M20 Odd Duck inspired by this post. Basically, the spell list would be substituted with the spells from The Fantasy Trip. Conversion of the spells has been problematic. I finally figured out that IQ level =! M20 spell level. ST cost also doesn't seem to translate as some spells have 50, 60 or 100 ST cost while many others range from 1 to 10.

I created a spreadsheet to rank them relatively to each other. An IQ 14 spell that cost 1 ST would be a higher level than an IQ 8 spell that cost 2 ST. The formula is not that complicated as I opted out of trying to determine a normalized distribution. Besides, I'm not that good at normalization (in math or databases) anyway.

I may never finish it. Ugh. It's a good idea that I just cannot implement.

Odd Retroclone Idea Two:

I also have some bizarre deathwish to create my own retro-clone. It would be a complete vanity project that 'feels' like the amalgam of B/X, 1st and 2nd edition AD&D with some new found love for BAB and other d20 conventions. The other oddity would be how everything is inspired by Paul M. Crabaugh. I will include a class generator (which only needs options for illusionists) and a monster generator. I am about 33% done with the generator - it only generates non-magical beasts at the moment.

What compels me on this idea is a mystery to me.

Tiny Dungeons Project

Send to Kindle

Over on the M20 boards, they are discussing a Tiny Dungeons Project.

Part of it mentions the critters.pl script greywulf hosted on the old m20 site. I couldn't find the original, but I found my modified script for M20 (my other post has it modified for Action!).


srand(time ^ $$ ^ unpack "%L*", 'ps axww | gzip');
$usage="usage: $0 number maxhd\n";
$ARGV[0]=~/^(\d+)$/ && ($numb = $1) || die $usage;
$ARGV[1]=~/^(\d+)$/ && ($maxhd = $1) || die $usage;
%rule = (
'P','a ambi ante circum cis co de dis ob per prae se sine sub',
'Y','Ca Ce Ci Co Cu Cy Da De Di Do Dy',
'X','Ce Ci Co o',
'V','a e i o u',
'F','Ca Ca Ca Cae Cos Com Cus Cus Cus Cus Cus Cium Cium Ces',
'C','b b c c ch ch d d d g g l l m m n n p p ph r r r s s s t t th th v x z Rr sH Ll',
'D','b b c c ch ch d d g g l l m m n n p p ph r r r s s s t t t th th v x z Rr sH Ll h qu gn pt',
'R','b b c c c ch ch g g p p ph t t th th',
'L','c ch p g f',
'H','c ch cl m n p ph pl pr qu t th',
'N','n c l r'

for (1..$numb) { print &parse('W'), " : ", &stats, "\n"; }

sub parse {
/[^A-Z]/ && return $_;
@TMP=split(/\s+/, $rule{$_});
$_=splice(@TMP, rand @TMP, 1);
for (split('')) { print &parse($_); }

sub stats {
$tst = int(rand()*13)+1;
$hd = int(rand()*$maxhd)+1;
$hp = int($hd*4.5)+int(rand()*4*$hd);
$ac = 10+$hd+int(rand()*5);
$tohit = $hd+int(rand()*4);
$dmg = int(rand()*2)+1 . 'd' . (int(rand()*6)+1)*2 . (rand>0.6?'+':'-') . (int(rand()*4)+2);
%weapon = ( '1' => 'Bite',
'2' => 'Claw',
'3' => 'Talon',
'4' => 'Gore',
'5' => 'Slap',
'6' => 'Slam',
'7' => 'Sting',
'8' => 'Tentacle',
'9' => 'Weapon',
'10' => 'Weapon',
'11' => 'Weapon',
'12' => 'Weapon',
'13' => 'Weapon',);
$type = $weapon{$tst};
#    $type = (rand>0.6?"By weapon":"Natural");

return "HD$hd (${hp}hp), AC$ac, $type +$tohit ($dmg)";

Granite Dragons

Send to Kindle

Here is the first of the weekly dragons for the month of July, the thunder dragon. First the M20 statblock:

Adult Granite: HD 21d12+105 (241), AC 28, Bite +27 (2d8), or Breath 8d6 stream of rocks DC 25,  phys+DEX to dodge for half, or thorwn rock 2d6+7.

And now for the Basic Fantasy Statblock

Dragon, Granite

Armor Class: 20
Hit Dice: 7**
No. of Attacks: 2 claws/1 bite or breath/1 tail
Damage: 1d6/1d6/2d12 or breath/1d6 or rock 3d6
Movement: 30' Fly 80' (15')
No. Appearing: 1, Wild 1, Lair 1d4
Save As: Fighter: 7 (as Hit Dice)
Morale: 8
Treasure Type: H
XP: 800

Granite dragons have thick, rock-like scales with small black spots on them. The scales also tend to become for red as they age. They prefer to live on top of ancient mountains or near stone quarries. In order to properly digest their food, they swallow heavy stones in a gizzard type of organ. The bite of a granite dragon is severe due to their hardened teeth. When fighting, a granite dragon prefers to be near a source of rocks. When their breath weapon is not available, a granite dragon will attempt to hurl boulders. Granite dragons are capable of great cruelty. They enjoy swallowing humanoids whole and listening to their cries as they are ground into pieces by the stone in their gizzard. Outside of this rare pleasure, granite dragons are motivated by the urge to live, breed and collect valuable items.

Granite dragons are immune to poisonous gases.

Granite Dragon Age Table
Age Category 1 2 3 4 5 6 7
Hit Dice 4 5 6 7 8 9 10
Attack Bonus +4 +5 +6 +7 +8 +8 +9
Breath Weapon Rock projectiles (Line)
Length - 70' 80' 90' 95' 100' 100'
Width - 25' 30' 30' 35' 40' 45'
Chance/Talking 0% 15% 20% 25% 35% 50% 60%
Spells by Level
Level 1 - 1 2 4 4 4 4
Level 2 - - - - 1 2 3
Level 3 - - - - - 1 2
Claw 1d4 1d4 1d6 1d6 1d6 1d8 1d8
Bite 2d6 3d6 3d8 3d8 3d8 3d8 3d10
Tail 1d4 1d4 1d4 1d6 1d6 1d8 1d8