my %mammal_info = (bovine=>'cattle', canine =>'dog', caprine =>'goat', equine=>'horse', feline =>'cat', leporine=>'rabbit', lupine=>'wolf', ovine =>'sheep', porcine =>'pig', ursine=>'bear', vulpine=>'fox'); $Data{Mammal} = [map {"$_"} keys %mammal_info]; $Data{Animal} = [ "amphibian", "insetoid", sub {random("Mammal")}, "reptilian" ]; $Data{Animal2} = [qw(amphibian insetoid mammallian reptilian)]; $Data{Head} = [ "an enlarged head", "a shrunken head", "horns" ]; $Data{Eyes} = [ "glowing eyes", "the appearance of no eyes", sub {random("Color")." eyes"}, "eyes in an odd position", "only one eye", sub {roll('1d4+2')." eyes"}, "infravision

† ultravision if infravision is already present

", sub {my $clrbld = (roll('1d100')>80?'green':'red'); "$clrbld-weakness color blindness"}, "photo-sensitivity" ]; $Data{Ears} = [ "lobeless ears", "only ear holes", "no ears", "extra-sensitive hearing", sub {roll('1d10*10')."% deafness"}, sub {roll('1d4+2')." ears"} ]; $Data{Nose} = [ "an oversized nose", "only nose holes", "no nose", sub {"a nose with an ".random("Animal")." appearance"}, "an extra-sensitive nose", "no sense of smell" ]; $Data{Mouth} = [ sub {random("Color")." lips"}, "no lips", "an oversized mouth", sub {roll('1d2+1')." mouths"}, ]; $Data{Arms} = [ sub {"arms that are ".roll('1d50')."% ".random("Siz2")." than average"}, "no elbow joint", "no wrist joint", sub {roll('1d4+2')." arms (all arms above triple the normal amount are vestigial)"}, sub {random("Animal")."-like arms"} ]; $Data{Hands} = [ "elongated fingers", "one less finger on each hand", "double jointed fingers", "animal claws", "snake fingers", "webbed fingers" ]; $Data{Legs} = [ sub {"legs that are ".roll('1d50')."% ".random("Siz2")." than average"}, "no knee joint", "no ankle joint", sub {roll('1d4+2')." legs (all legs above double the normal amount are vestigial)"}, sub {random("Animal")." legs"} ]; $Data{Feet} = [ "elongated toes", "one less toe on each foot", "no toes", "animal paws", "claws for toes", "webbed toes" ]; $Data{Skin} = [ "fur covered skin", sub {random("Animal")." skin"}, "fish scales", "feathers", "invisible skin", sub {random("Color")." skin"}, "ultra-sensitive skin" ]; $Data{Bones} = [ "wooden bones", sub {random("Gems")." bones"}, sub {random("Mtls")." bones"}, "fragile bones", "unbreakable bones" ]; $Data{Teeth} = [ "enlarged teeth", "fangs", "fangs with venom", sub {random("Gems")." teeth"}, sub {random("Mtls")." teeth"}, "two sets of teeth" ]; $Data{Hair} = [ sub {random("Color")." hair"}, "odd textured hair", "uncuttable hair", "no hair anywhere", "invisible hair", sub {random("Mtls")." hair"} ]; $Data{Nails} = [ sub {random("Gems")." nails"}, sub {random("Mtls")." nails"}, "no nails", "unbreakable nails" ]; $Data{Blood} = [ "icor for blood", "poisonous blood", sub {random("Color")." blood"} ]; $Data{Body} = [ sub {random("Skin")}, sub {random("Bones")}, sub {random("Blood")}, sub {random("Head")}, sub {random("Hair")}, sub {random("Eyes")}, sub {random("Ears")}, sub {random("Nose")}, sub {random("Mouth")}, sub {random("Teeth")}, sub {random("Arms")}, sub {random("Hands")}, sub {random("Legs")}, sub {random("Feet")}, sub {random("Nails")}, sub {random("Animal2")." wings"}, sub {random("Animal")." tail"}, "gills" ];