Well, moving along... still have a lot to go.
Exotic Appendages - Anglerfish-style luminescent lures, spinnerets, Etc.
halfway there. I'm going to do a bit more tonight while I'm waiting for laundry to finish.
beakdict = {}
beakdict['long'] = ['*','*',['short'],[('AGI',3),('ATK',3),('DEF',-3),('END',-3)],['long','lengthy','protracted','tubular'],0]
beakdict['short'] = ['*','*',['long'],[('STR',3),('DEF',3),('AGI',-3),('ATK',-3)],['short','stubby','stunted'],-1]
beakdict['hooked'] = [['Carnivore','Omnivore'],'*',['pointed','fringed','grade_off','cone-like'],[('STR',8),('ATK',10)],['hooked'],0]
beakdict['sharp'] = ['*','*',['fringed'],[('ATK',5),('AGI',2),('END',-2),('AP',-5)],['sharp','edged'],0]
beakdict['narrow'] = ['*','*',['wide'],[('AGI',5),('AP',5),('ATK',-3),('STR',-5)],['narrow','slender'],-2]
beakdict['thick'] = ['*','*',['narrow'],[('END',3),('DEF',3),('AGI',-3),('AP',-3)],['thick','heavy','dense','solid'],2]
beakdict['pointed'] = ['*','*',['hooked','fringed'],[('ATK',4),('AGI',4),('AP',2),('END',-4),('STR',-4)],['pointed','chisel-like'],0]
beakdict['fringed'] = [['Herbivore','Omnivore'],'*',['pointed','hooked'],[('DEF',4),('END',4),('ATK',-4),('STR',-4)],['fringed'],0]
beakdict['thin'] = ['*','*',['thick'],[('AGI',3),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-1]
beakdict['wide'] = ['*','*',['narrow'],[('END',4),('ATK',4),('DEF',-4),('AGI',-4)],['wide','broad'],2]
beakdict['cone-like'] = [['Herbivore','Omnivore'],'*',['grade_off','hooked'],[('STR',8),('AP',-4),('END',-4)],['cone-like','conical'],1]
digitdict = {}
digitdict['long'] = ['*','*',['short'],[('AGI',3),('STR',-1),('DEF',-2)],['long','lengthy','protracted'],0]
digitdict['short'] = ['*','*',['long'],[('DEF',2),('STR',1),('AGI',-1),('ATK',-2)],['short','stubby','stunted'],-1]
digitdict['thick'] = ['*','*',['thin','lithe'],[('END',2),('DEF',1),('ATK',-1),('AGI',-2)],['thick','heavy','dense','solid','meaty'],1]
digitdict['thin'] = ['*','*',['thick','bulky'],[('AGI',3),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-1]
digitdict['many-jointed'] = ['*','*',['grade_off','stumpy','flexible'],[('AGI',8),('END',-4),('DEF',-4)],['multi-jointed','several-jointed','many-jointed'],0]
digitdict['muscular'] = ['*','*',['lithe','bony'],[('STR',2),('DEF',1),('AGI',-1),('END',-2)],['brawny','muscular','burly'],1]
digitdict['lithe'] = ['*','*',['thick','bulky','muscular','bony'],[('AGI',3),('STR',-2),('DEF',-1)],['sinewy','lithe','supple'],-1]
digitdict['bulky'] = ['*','*',['thin','lithe'],[('STR',3),('END',-2),('AGI',-1)],['bulky','massive','hefty','immense'],2]
digitdict['stumpy'] = ['*','*',['thin','lithe','many-jointed','grade_off'],[('DEF',10),('STR',6),('AGI',-10),('ATK',-6)],['stumpy','stocky','stout'],1]
digitdict['clawed'] = ['*',['Terrestrial','Subterranean','Amphibian'],['grade_off'],[('ATK',10),('AGI',-2)],['clawed','spurred'],1]
digitdict['taloned'] = ['*',['Aerial'],['grade_off'],[('ATK',10),('AGI',-2)],['taloned'],1]
digitdict['bony'] = ['*','*',['muscular','lithe'],[('END',2),('STR',-2)],['bony','gaunt','skeletal'],-1]
digitdict['flexible'] = ['*','*',['many-jointed','stumpy'],[('AGI',4),('ATK',2),('DEF',-2),('END',-4)],['flexible','elastic','limber','bendable'],0]
findict = {}
findict['long'] = ['*','*',['short'],[('AGI',3),('STR',-1),('DEF',-2)],['long','lengthy','protracted'],1]
findict['short'] = ['*','*',['long'],[('DEF',2),('STR',1),('AGI',-1),('ATK',-2)],['short','stubby','stunted'],-2]
findict['thick'] = ['*','*',['thin'],[('END',2),('DEF',1),('ATK',-1),('AGI',-2)],['thick','heavy','dense','solid','meaty'],2]
findict['thin'] = ['*','*',['thick'],[('AGI',3),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-2]
findict['curved'] = ['*','*',['straight','rounded'],[('SPD',3),('END',2),('AGI',-3)],['curved','curvilinear','aquiline','crescent-shaped'],0]
findict['straight-edged'] = ['*','*',['curved','rounded'],[('AGI',3),('ATK',2),('SPD',-2),('END',-1)],['straight-edged','pointed','truncated'],0]
findict['round'] = ['*','*',['straight','curved','forked'],[('SPD',2),('AGI',2),('ATK',-2),('STR',-2)],['round','discoid','ovular'],0]
findict['forked'] = ['*','*',['round','no_grade'],[('AGI',6),('DEF',2),('END',-2),('SPD',-6)],['forked','divergent','split','bifurcated'],0]
findict['ridged'] = ['*','*',['smooth'],[('DEF',4),('SPD',-4)],['ridged','striated','jagged'],2]
findict['smooth'] = ['*','*',['ridged'],[('SPD',4),('DEF',-4)],['smooth','flush','planar'],0]
handdict = {}
handdict['broad'] = ['*','*',['broad'],[('END',2),('STR',1),('DEF',-1),('AGI',-2)],['broad','wide','splayed-out'],0]
handdict['narrow'] = ['*','*',['bulky'],[('AGI',2),('DEF',1),('STR',-1),('END',-2)],['narrow','slender'],-5]
handdict['thick'] = ['*','*',None,[('END',2),('DEF',1),('SPD',-1),('AGI',-2)],['thick','heavy','dense','solid','meaty'],5]
handdict['muscular'] = ['*','*',[None],[('STR',2),('DEF',1),('AGI',-1),('END',-2)],['brawny','muscular','burly'],5]
handdict['bulky'] = ['*','*',['narrow','flexible'],[('STR',3),('END',-2),('AGI',-1)],['bulky','massive','hefty','immense'],15]
handdict['stumpy'] = ['*','*',['flexible','grade_off'],[('DEF',10),('STR',6),('AGI',-10),('SPD',-6)],['stumpy','stocky','stout'],5]
handdict['flexible'] = ['*','*',['bulky','stumpy'],[('AGI',4),('ATK',2),('DEF',-2),('END',-4)],['flexible','elastic','limber','bendable'],0]
handdict['padded'] = ['*','*',None,[('DEF',3),('END',2),('ATK',-2),('AGI',-3)],[('padded','calloused','thickly-padded')],2]
hoofdict = {}
hoofdict['long'] = ['*','*',['short'],[('AGI',3),('STR',-1),('DEF',-2)],['long','lengthy','protracted'],1]
hoofdict['short'] = ['*','*',['long'],[('DEF',2),('STR',1),('AGI',-1),('ATK',-2)],['short','stubby','stunted'],-2]
hoofdict['thick'] = ['*','*',['thin'],[('END',2),('DEF',1),('ATK',-1),('AGI',-2)],['thick','heavy','dense','solid'],2]
hoofdict['thin'] = ['*','*',['thick'],[('AGI',3),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-2]
hoofdict['stumpy'] = ['*','*',['thin','grade_off'],[('DEF',10),('STR',6),('AGI',-10),('ATK',-6)],['stumpy','stocky','stout'],2]
hoofdict['cloven'] = ['*','*',['single-toed','grade_off'],[('SPD',10)],['cloven','two-toed'],0]
hoofdict['single-toed'] = ['*','*',['cloven','grade_off'],[('SPD',6)],['single-toed','three-toed','five-toed'],0]
hoofdict['sharp'] = ['*','*',['stumpy','blunt'],[('ATK',6),('SPD',-4)],['sharp','pointed','sharpened','jagged'],0]
jawdict = {}
jawdict['long'] = ['*','*',['short','blunt'],[('AP',4),('ATK',4),('DEF',-4),('END',-4)],['long','lengthy','protracted','elongated'],2]
jawdict['short'] = ['*','*',['long'],[('STR',4),('DEF',4),('ATK',-4),('AP',-4)],['short','stubby','stunted'],0]
jawdict['muscular'] = ['*','*',None,[('STR',5),('ATK',5),('AP',-5),('DEF',-5)],['muscular','thickly-muscled'],3]
jawdict['wide'] = ['*','*',['narrow'],[('ATK',5),('DEF',-5)],['wide','broad'],3]
jawdict['narrow'] = ['*','*',['wide'],[('AGI',4),('AP',4),('STR',-4),('ATK',-4)],['narrow','slender'],-3]
jawdict['blunt'] = ['*','*',['long','pointed'],[('END',4),('STR',4),('AGI',-4),('ATK',-4)],['blunt','compressed','squashed'],-3]
jawdict['pointed'] = ['*','*',['blunt','unhinging'],[('AGI',5),('ATK',5),('DEF',-5),('END',-5)],['pointed','acute','cuspate'],0]
jawdict['unhinging'] = ['*','*',['pointed','grade_off'],[('ATK',15),('AGI',8),('END',-8),('DEF',-15)],['unhinging','disengagable','uncoupleable'],0]
jawdict['crooked'] = ['*','*',['unhinging'],[('STR',3),('DEF',3),('END',3),('AGI',-3),('ATK',-3),('AP',-3)],['crooked','bent','angular','asymmetric'],0]
jawdict['viselike'] = [['Carnivore','Omnivore'],'*',['grade_off'],[('STR',10),('ATK',10),('END',-5),('DEF',-5)],['viselike','powerful','clamp-like'],0]
limbdict = {}
limbdict['long'] = ['*','*',['short'],[('SPD',2),('AGI',1),('STR',-1),('DEF',-2)],['long','lengthy','protracted'],0]
limbdict['short'] = ['*','*',['long'],[('DEF',2),('STR',1),('AGI',-1),('SPD',-2)],['short','stubby','stunted'],-5]
limbdict['thick'] = ['*','*',['thin','lithe'],[('END',2),('DEF',1),('SPD',-1),('AGI',-2)],['thick','heavy','dense','solid','meaty'],5]
limbdict['thin'] = ['*','*',['thick','bulky'],[('AGI',2),('SPD',1),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-10]
limbdict['many-jointed'] = ['*','*',['grade_off','stumpy','crooked','straight','flexible'],[('AGI',8),('END',-4),('SPD',-4)],['multi-jointed','several-jointed','many-jointed'],0]
limbdict['muscular'] = ['*','*',['lithe'],[('STR',2),('DEF',1),('AGI',-1),('END',-2)],['brawny','muscular','burly'],5]
limbdict['lithe'] = ['*','*',['thick','bulky'],[('SPD',3),('STR',-2),('DEF',-1)],['sinewy','lithe','supple'],-5]
limbdict['bulky'] = ['*','*',['thin','lithe','flexible'],[('STR',3),('END',-2),('AGI',-1)],['bulky','massive','hefty','immense'],15]
limbdict['stumpy'] = ['*','*',['thin','lithe','many-jointed','flexible','grade_off'],[('DEF',10),('STR',6),('AGI',-10),('SPD',-6)],['stumpy','stocky','stout'],5]
limbdict['crooked'] = ['*','*',['straight','many-jointed'],[('DEF',3),('END',2),('AGI',-2),('SPD',-3)],['crooked','bent','angular','gnarly','asymmetric'],0]
limbdict['straight'] = ['*','*',['crooked','many-jointed','flexible'],[('STR',3),('DEF',2),('AGI',-2),('ATK',-3)],['straight','inflexible','rigorous','unbending'],0]
limbdict['flexible'] = ['*','*',['many-jointed','straight','bulky','stumpy'],[('AGI',4),('ATK',2),('DEF',-2),('END',-4)],['flexible','elastic','limber','bendable'],0]
pawdict = {}
pawdict['broad'] = ['*','*',['broad'],[('END',2),('STR',1),('DEF',-1),('AGI',-2)],['broad','wide','splayed-out'],0]
pawdict['narrow'] = ['*','*',['bulky'],[('AGI',2),('DEF',1),('STR',-1),('END',-2)],['narrow','slender'],-5]
pawdict['thick'] = ['*','*',None,[('END',2),('DEF',1),('SPD',-1),('AGI',-2)],['thick','heavy','dense','solid','meaty'],5]
pawdict['muscular'] = ['*','*',[None],[('STR',2),('DEF',1),('AGI',-1),('END',-2)],['brawny','muscular','burly'],5]
pawdict['bulky'] = ['*','*',['narrow','flexible'],[('STR',3),('END',-2),('AGI',-1)],['bulky','massive','hefty','immense'],15]
pawdict['stumpy'] = ['*','*',['flexible','grade_off'],[('DEF',10),('STR',6),('AGI',-10),('SPD',-6)],['stumpy','stocky','stout'],5]
pawdict['flexible'] = ['*','*',['bulky','stumpy'],[('AGI',4),('ATK',2),('DEF',-2),('END',-4)],['flexible','elastic','limber','bendable'],0]
pawdict['padded'] = ['*','*',None,[('DEF',3),('END',2),('ATK',-2),('AGI',-3)],[('padded','calloused','thickly-padded')],2]
probdict = {}
probdict['long'] = ['*','*',['short'],[('AGI',3),('ATK',3),('DEF',-3),('END',-3)],['long','lengthy','protracted','tubular'],0]
probdict['short'] = ['*','*',['long'],[('STR',3),('DEF',3),('AGI',-3),('ATK',-3)],['short','stubby','stunted'],-1]
probdict['narrow'] = ['*','*',['wide','bulky','stumpy'],[('AGI',5),('AP',5),('ATK',-3),('STR',-5)],['narrow','slender'],-2]
probdict['thick'] = ['*','*',['narrow','lithe'],[('END',3),('DEF',3),('AGI',-3),('AP',-3)],['thick','heavy','dense','solid'],2]
beakdict['thin'] = ['*','*',['thick','bulky','stumpy'],[('AGI',3),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-1]
beakdict['wide'] = ['*','*',['narrow','bulky'],[('END',4),('ATK',4),('DEF',-4),('AGI',-4)],['wide','broad'],2]
probdict['flexible'] = ['*','*',['bulky','stumpy'],[('AGI',4),('AP',4),('DEF',-4),('END',-4)],['flexible','elastic','limber','bendable'],0]
probdict['bulky'] = ['*','*',['thin','narrow','lithe'],[('STR',3),('END',-2),('AGI',-1)],['bulky','massive','hefty','immense'],15]
probdict['stumpy'] = ['*','*',['thin','narrow','lithe','grade_off'],[('DEF',3),('STR',2),('AGI',-3),('SPD',-2)],['stumpy','stocky','stout'],5]
probdict['muscular'] = ['*','*',['lithe'],[('STR',4),('AP',2),('AGI',-1),('END',-2)],['muscular','strong'],5]
probdict['lithe'] = ['*','*',['thick','bulky','stumpy','muscular'],[('AP',3),('SPD',3),('STR',-2),('DEF',-1)],['sinewy','lithe','supple'],-5]
probdict['spike-tipped'] = ['*','*',['sting-tipped','grade_off'],[('ATK',10)],['spike-tipped','blade-tipped','claw-tipped'],5]
probdict['sting-tipped'] = ['*','*',['spike-tipped','grade_off'],[('ATK',6)],['sting-tipped','stinger-tipped'],5]
shelldict = {}
shelldict['convex'] = ['*','*',['concave'],[('END',10),('DEF',10),('AGI',-6),('SPD',-6)],['arched','towering','domed','convex'],10]
shelldict['concave'] = ['*','*',['convex','spired'],[('END',6),('DEF',6),('AGI',-4),('SPD',-4)],['concave','dimpled','incurved'],5]
shelldict['thick'] = ['*','*',['thin'],[('DEF',15),('END',5),('AGI',-5),('ATK',-15)],['thick','heavy','dense','solid'],15]
shelldict['thin'] = ['*','*',['thick'],[('DEF',4),('END',4),('AGI',-2),('ATK',-2)],['thin','light','delicate'],0]
shelldict['spired'] = ['*','*',['plated','concave','grade_off'],[('DEF',6),('AGI',-3)],['spired','coiled','winding'],5]
shelldict['plated'] = ['*','*',['spired','grade_off'],[('DEF',15),('AGI',-3),('SPD',-2)],['plated','overlayed','interlocking'],5]
shelldict['spiky'] = ['*','*',['smooth','ridged'],[('DEF',10),('ATK',5),('AGI',-5),('AP',-5)],['spiky','barbed','spiny'],5]
shelldict['smooth'] = ['*','*',['spiky','ridged'],[('DEF',8),('END',4),('AGI',-3),('AP',-3)],['smooth','glossy','polished','glassy'],0]
shelldict['ridged'] = ['*','*',['spiky','smooth'],[('DEF',4),('END',4),('AGI',-2),('AP',-2)],['ridged','striated','furrowed'],0]
shelldict['large'] = ['*','*',['small'],[('STR',5),('AGI',-3)],['large','enormous','giant','huge'],5]
shelldict['small'] = ['*','*',['large'],[('AGI',5),('STR',-3)],['small','tiny','miniature','petite'],0]
taildict = {}
taildict['long'] = ['*','*',['short','stumpy','small'],[('AGI',4)],['long','lengthy','protracted'],5]
taildict['short'] = ['*','*',['long','large'],[('AP',6)],['short','stubby','stunted'],-5]
taildict['thick'] = ['*','*',['thin','lithe'],[('AP',4),('DEF',1),('SPD',-1),('AGI',-2)],['thick','heavy','dense','solid','meaty'],5]
taildict['thin'] = ['*','*',['thick','large'],[('AGI',4),('SPD',1),('DEF',-1),('AP',-2)],['thin','light','flimsy','reedy'],-10]
taildict['spike-tipped'] = ['*','*',['sting-tipped','tufted','grade_off'],[('ATK',10)],['spike-tipped','blade-tipped','claw-tipped'],5]
taildict['sting-tipped'] = ['*','*',['spike-tipped','tufted','grade_off'],[('ATK',6)],['sting-tipped','stinger-tipped'],5]
taildict['flexible'] = ['*','*',['stumpy'],[('AGI',4),('AP',4)],['flexible','elastic','limber','bendable'],0]
taildict['stumpy'] = ['*','*',['long','flexible','lithe','many-jointed','prehensile'],[('END',2),('DEF',4)],['stumpy','stocky','stout'],2]
taildict['tufted'] = ['*','*',['sting-tipped','spike-tipped','grade_off'],[('AGI',2),('DEF',2)],2]
taildict['muscular'] = ['*','*',['lithe'],[('STR',2),('AP',4),('AGI',-1),('END',-2)],['brawny','muscular','burly'],5]
taildict['lithe'] = ['*','*',['thick','bulky','muscular'],[('SPD',3),('STR',-2),('DEF',-1)],['sinewy','lithe','supple'],-5]
taildict['many-jointed'] = ['*','*',['grade_off','stumpy','flexible'],[('AP',8),('AGI',4),('END',-2),('SPD',-2)],['multi-jointed','several-jointed','many-jointed'],0]
taildict['large'] = ['*','*',['small','short','thin'],[('AP',5),('AGI',-3)],['large','enormous','giant','huge'],5]
taildict['small'] = ['*','*',['large','long'],[('AGI',5),('AP',-3)],['small','tiny','miniature','petite'],-5]
tentdict = {}
tentdict['long'] = ['*','*',['short','small'],[('SPD',2),('AGI',1),('STR',-1),('DEF',-2)],['long','lengthy','protracted'],0]
tentdict['short'] = ['*','*',['long','large'],[('DEF',2),('STR',1),('AGI',-1),('SPD',-2)],['short','stubby'],-5]
tentdict['thick'] = ['*','*',['thin','lithe'],[('END',2),('DEF',1),('SPD',-1),('AGI',-2)],['thick','heavy','dense','solid','meaty'],5]
tentdict['thin'] = ['*','*',['thick','bulky','large'],[('AGI',2),('SPD',1),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-10]
tentdict['muscular'] = ['*','*',['lithe'],[('STR',2),('DEF',1),('AGI',-1),('END',-2)],['brawny','muscular','burly'],5]
tentdict['lithe'] = ['*','*',['thick','bulky','muscular'],[('SPD',3),('STR',-2),('DEF',-1)],['sinewy','lithe','supple'],-5]
tentdict['bulky'] = ['*','*',['thin','lithe','small'],[('STR',3),('END',-2),('AGI',-1)],['bulky','massive','hefty','immense'],15]
tentdict['stumpy'] = ['*','*',['thin','lithe','grade_off'],[('DEF',3),('STR',2),('AGI',-3),('SPD',-2)],['stumpy','stocky','stout'],5]
tentdict['sucker-covered'] = ['*','*',['grade_off'],[('AGI',8),('SPD',-4)],['sucker-covered'],1]
tentdict['tendril-covered'] = ['*','*',['grade_off'],[('AGI',6),('SPD',-3)],['tendril-covered'],1]
tentdict['clawed'] = ['*',['Terrestrial','Subterranean','Amphibian'],['grade_off'],[('ATK',10),('AGI',-2)],['clawed','spurred'],1]
tentdict['taloned'] = ['*',['Aerial'],['grade_off'],[('ATK',10),('AGI',-2)],['taloned'],1]
tentdict['large'] = ['*','*',['small','short','thin'],[('STR',5),('AGI',-3)],['large','enormous','giant','huge'],5]
tentdict['small'] = ['*','*',['large','long','bulky'],[('AGI',5),('STR',-3)],['small','tiny','miniature','petite'],-5]
toothdict = {}
toothdict['long'] = ['*','*',['short'],[('ATK',3)],['long','lengthy','elongated'],0]
toothdict['short'] = ['*','*',['long'],[('DEF',3)],['short','stubby'],0]
toothdict['sharp'] = ['*','*',['blunt'],[('ATK',4)],['sharp','blade-like','pointed'],0]
toothdict['curved'] = [['Carnivorous','Omnivorous','Other'],'*',['blunt','squarish','chisel-like'],[('ATK',4)],['curved','hooked','arched'],0]
toothdict['blunt'] = [['Herbivorous','Omnivorous','Other'],'*',['curved','sharp','serrated','chisel-like'],[('DEF',4)],['blunt','dull','flat'],0]
toothdict['serrated'] = [['Carnivorous','Omnivorous','Other'],'*',['blunt','chisel-like'],[('ATK',5)],['serrated','jagged','sawlike'],0]
toothdict['squarish'] = ['*','*',['curved','chisel-like'],[('DEF',3),('END',2)],['squarish','boxy'],0]
toothdict['chisel-like'] = [['Herbivorous','Omnivorous','Other'],'*',['serrated','blunt','squarish','curved','grade_off'],[('DEF',8),('ATK',2)],['chisel-like'],0]
toothdict['large'] = ['*','*',['short','small'],[('ATK',4)],['large','enormous','giant','huge'],2]
toothdict['small'] = ['*','*',['long','large'],[('DEF',4)],['small','tiny','miniature','petite'],-1]
trunkdict = {}
trunkdict['long'] = ['*','*',['short'],[('AGI',3),('ATK',3),('DEF',-3),('END',-3)],['long','lengthy','protracted','tubular'],0]
trunkdict['short'] = ['*','*',['long'],[('STR',3),('DEF',3),('AGI',-3),('ATK',-3)],['short','stubby','stunted'],-1]
trunkdict['narrow'] = ['*','*',['wide','bulky','stumpy'],[('AGI',5),('AP',5),('ATK',-3),('STR',-5)],['narrow','slender'],-2]
trunkdict['thick'] = ['*','*',['narrow','lithe'],[('END',3),('DEF',3),('AGI',-3),('AP',-3)],['thick','heavy','dense','solid'],2]
trunkdict['thin'] = ['*','*',['thick','bulky','stumpy'],[('AGI',3),('DEF',-1),('END',-2)],['thin','light','flimsy','reedy'],-1]
trunkdict['wide'] = ['*','*',['narrow','bulky'],[('END',4),('ATK',4),('DEF',-4),('AGI',-4)],['wide','broad'],2]
trunkdict['flexible'] = ['*','*',['bulky','stumpy'],[('AGI',4),('AP',4),('DEF',-4),('END',-4)],['flexible','elastic','limber','bendable'],0]
trunkdict['bulky'] = ['*','*',['thin','narrow','lithe'],[('STR',3),('END',-2),('AGI',-1)],['bulky','massive','hefty','immense'],15]
trunkdict['stumpy'] = ['*','*',['thin','narrow','lithe','grade_off'],[('DEF',3),('STR',2),('AGI',-3),('SPD',-2)],['stumpy','stocky','stout'],5]
trunkdict['muscular'] = ['*','*',['lithe'],[('STR',4),('AP',2),('AGI',-1),('END',-2)],['muscular','strong'],5]
trunkdict['lithe'] = ['*','*',['thick','bulky','stumpy','muscular'],[('AP',3),('SPD',3),('STR',-2),('DEF',-1)],['sinewy','lithe','supple'],-5]
trunkdict['spike-tipped'] = ['*','*',['sting-tipped','grade_off'],[('ATK',10)],['spike-tipped','blade-tipped','claw-tipped'],5]
trunkdict['sting-tipped'] = ['*','*',['spike-tipped','grade_off'],[('ATK',6)],['sting-tipped','stinger-tipped'],5]
wingdict = {}
wingdict['short'] = ['*','*',['long','large'],[('AGI',4),('SPD',-3),('END',-1)],['short','stubby','stunted'],-5]
wingdict['broad'] = ['*','*',['narrow'],[('END',2),('STR',2),('SPD',-2),('AGI',-2)],['broad','wide'],5]
wingdict['long'] = ['*','*',['short'],[('AGI',2),('SPD',2),('DEF',-2),('STR',-2)],['long','lengthy','protracted'],5]
wingdict['narrow'] = ['*','*',['broad'],[('AGI',3),('END',-3)],['narrow','slender'],-5]
wingdict['triangular'] = ['*','*',['arched'],[('AGI',3),('AP',6),('STR',-6)],['triangular','pyriform','cuneate'],-2]
wingdict['large'] = ['*','*',['short'],[('STR',4),('END',4),('SPD',-6),('AGI',-2)],['large','expansive','giant','voluminous'],10]
wingdict['arched'] = ['*','*',['triangular'],[('STR',6),('AGI',-3),('SPD',-3)],['arched','vaulted','curved','bowed'],0]
wingdict['pointed'] = ['*','*',None,[('END',5),('AGI',2),('SPD',-2),('DEF',-5)],['pointed','acute','cuspate'],0]
wingdict['flat'] = ['*','*',None,[('END',4),('STR',2),('DEF',-2),('SPD',-4)],['flat','planar','level','smooth'],-2]
wingdict['slotted'] = ['*','*',None,[('STR',3),('END',2),('ATK',-2),('SPD',-3)],['grooved','slotted','ridged','striated'],-2]
wingdict['back-swept'] = ['*','*',['grade_off'],[('AP',15),('SPD',5),('ATK',5),('DEF',-5),('END',-5),('STR',-5)],['back-swept'],0]
I'm still adding new morphological traits to many of the body parts based on what I think of while I'm working on others, so each of the dictionaries will probably be somewhat larger by the time I'm done.