function xmask(frm) {

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 01 -- Style Modifiers													*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab01 = new Array(
	"avenging",		"ferocious",		"cautious",		"relentless",		"calm",
	"confidant",		"joyful",		"courageous",		"wrathful",		"sad",
	"crouching",		"falling",		"flying",		"rolling",		"running",
	"tumbling",		"leaping",		"twisting",		"balancing",		"speeding",
	"tricky",		"invisible",		"stealthy",		"sneaky",		"sly",
	"evasive",		"secret",		"unseen",		"hidden",		"shadowy",
	"diamond",		"jade",			"onyx",			"pearl",		"opal",
	"gold",			"silver",		"topaz",		"emerald",		"ruby",
	"irresistible",		"invincible",		"mighty",		"perfect",		"faultless",
	"flawless",		"pure",			"superior",		"transcendent",		"supreme");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 02 -- Styles														*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab02 = new Array(
	"blizzard",		"cherry blossom",	"weasel",		"chimera",		"claw",
	"crab",			"crane",		"dagger",		"dragon",		"tsunami",
	"willow",		"fang",			"fist",			"fox",			"oak",
	"hammer",		"grasshopper",		"kama",			"ki-rin",		"lizard",
	"lotus blossom",	"trident",		"manticore",		"mantis",		"mace",
	"nunchaku",		"scythe",		"northstar",		"foot",			"panther",
	"phoenix",		"unicorn",		"rat",			"raven",		"whip",
	"scorpion",		"snake",		"spear",		"spider",		"staff",
	"sword",		"chain",		"thunder",		"tiger",		"lightning",
	"east wind",		"turtle",		"southern cross",	"west wind",		"wolf");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 03 -- Adverbs														*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab03 = new Array(
	"aggresively",		"angrily",		"brutally",		"completely",		"cruelly",
	"destructively",	"ferociously",		"fiercely",		"forcefully",		"harshly",
	"insanely",		"masterfully",		"menacingly",		"mercilessly",		"overwhelmingly",
	"painfully",		"perfectly",		"powerfully",		"quickly",		"roughly",
	"ruthlessly",		"skillfully",		"strongly",		"suddenly",		"swiftly",
	"terrifyingly",		"unrelentingly",	"unremittingly",	"viciously",		"vigorously",
	"beautifully",		"brilliantly",		"calmly",		"dexterously",		"easily",
	"effortlessly",		"fluidly",		"gracefully",		"sinuously",		"smoothly",
	"unfailingly",		"poetically",		"tranquilly",		"reflexively",		"secretly",
	"painlessly",		"quietly",		"elegantly",		"cautiously",		"delicately");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 04 -- Verbs (offensive, aggresive)												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab04 = new Array(
	"annihilates",		"assails",		"assaults",		"attacks",		"bashes",
	"becomes one with",	"breaks",		"blasts",		"brutalizes",		"burns",
	"carves",		"charges",		"crushes",		"cuts",			"decimates",
	"demolishes",		"destroys",		"devastates",		"devours",		"dominates",
	"drowns",		"eliminates",		"illuminates",		"impales",		"invades",
	"kicks",		"leaps over",		"mangles",		"nails",		"obliterates",
	"overwhelms",		"parts",		"penetrates",		"punches",		"quells",
	"rains upon",		"ravages",		"removes",		"rends",		"scatters",
	"scourges",		"severs",		"shatters",		"silences",		"shreds",
	"slashes",		"slaughters",		"slays",		"splits",		"storms",
	"strikes",		"sucker punches",	"thrusts",		"torments",		"tramples",
	"vanquishes",		"withers",		"wounds",		"wracks");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 05 -- Verbs (offensive, non-aggresive)												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab05 = new Array(
	"appears",		"bows",			"dances",		"dodges",		"drifts",
	"drops",		"falls",		"flies",		"flips",		"glides",
	"kicks",		"lies",			"leaps",		"moves",		"prances",
	"punches",		"rides",		"seeks",		"shouts",		"sings",
	"slashes",		"spins",		"slides",		"speaks",		"stands",
	"strikes",		"sweeps",		"swims",		"tracks",		"tumbles");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 06 -- Possitional Phrases												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab06 = new Array(
	"above",		"across",		"atop",			"before",		"below",
	"by",			"close to",		"facing",		"from",			"higher than",
	"in the midst of",	"near",			"next to",		"on top of",		"over",
	"through",		"underneath",		"upon",			"with",			"within");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 07 -- Turf Names													*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab07 = new Array(
	"badlands",		"canyon",		"castle",		"rapids",		"cemetery",
	"city",			"waterfall",		"sea",			"desert",		"dungeon",
	"foothills",		"forest",		"fountain",		"ocean",		"tombs",
	"glade",		"grotto",		"heavens",		"hells",		"island",
	"cavern",		"beach",		"atoll",		"marsh",		"clouds",
	"peaks",		"brush",		"pillars",		"plain",		"orchard",
	"prairie",		"ravine",		"ricefield",		"paradise",		"ruins",
	"labyrinth",		"shrine",		"glacier",		"swamp",		"temple",
	"tower",		"tundra",		"clearing",		"cliff",		"village",
	"vineyard",		"volcano",		"wastelands",		"well",			"bluff");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 08 -- Conjunction Phrases												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab08 = new Array(
	"and so it",		"before it",		"for it",		"and in addition it",	"so fast that it",
	"so it",		"then it",		"when it",		"where it",		"while it",
	"and",			"and",			"and",			"and",			"and",
	"and",			"and",			"and",			"and",			"and",
	"and",			"and",			"and",			"and",			"and",
	"as it",		"as it",		"as it",		"as it",		"as it",
	"as it",		"as it",		"as it",		"as it",		"as it",
	"as it",		"as it",		"as it",		"as it",		"as it");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 09 -- Nouns												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab09 = new Array(
	"reptile",		"bird",			"canine",		"feline",		"rodent",
	"venom",		"shell",		"elements",		"flower",		"tree",
	"insect",		"blade",		"pole",			"iron",			"club",
	"sickle",		"body",			"bone",			"flame",		"horn",
	"abomination",		"lash",			"storm",		"wind",			"star",
	"river",		"tides",		"mire",			"fortification",	"crevice",
	"grave",		"barrens",		"sands",		"isle",			"settlement",
	"stone",		"sky",			"mountain",		"wood",			"spring",
	"garden",		"fires",		"grass",		"farm",			"maze",
	"holy ground",		"ice",			"field",		"ledge",		"cave");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 10 -- Verbs (defensive)												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab10 = new Array(
	"absorbs",		"averts",		"avoids",		"blocks",		"conceals",
	"defends against",	"dodges",		"dominates",		"fends off",		"grasps",
	"guards against",	"leaps over",		"negates",		"parries",		"parts",
	"protects against",	"quells",		"redirects",		"reduces",		"removes",
	"scatters",		"shields",		"shields against",	"silences",		"shreds",
	"wards off",		"waves away",		"dodges");

/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* Chart 11 -- Defensive Targets												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/
   var xmtab11 = new Array(
	"aggression",		"assailment",		"beauty",		"blood",		"chaos",
	"chi",			"cut",			"descent",		"drive",		"edge",
	"efforts",		"energy",		"foray",		"gaze",			"kick",
	"motion",		"offensive",		"onslaught",		"pain",			"punch",
	"push",			"quickening",		"rising",		"roar",			"rolling",
	"slash",		"speed",		"stab",			"storm",		"tempest",
	"terror",		"touch",		"throw",		"thrust",		"violence");

/* Chart 12, Named Locations */

var xmtab12 = new Array(
	"the Ancient Ruins",				"Blackrock Pass",
	"the Hunting Grounds",				"the Iron City",
	"the Jade Gate",				"Mount Kachi",
	"Pang-Wu Province",				"the Yang River Bridge",
	"the Dragon's Crater",				"the Swamp of Hopelessness",
	"the Sea of Stars",				"the Obsidian Tower",
	"Xiang-Xia Province",				"the Imperial Palace",
	"the Valley of Shadows",			"the Altar of the Ancestors",
	"the Purelands",				"the Garden of Worship",
	"the Point of the Wailing Bones",		"the Endless Beach",
	"the Bottomless Well",				"the Tomb of the Ancient Kings",
	"the Hall of Bones",				"the Vineyard of Xian's Song",
	"the Garden of Lost Hope",			"the Desert of Gems",
	"the Snowy Wastes",				"the Ancient Volcano",
	"the Spring of Life",				"the Old Hermit's Village",
	"the Forbidden City",				"the Jade Cliffs",
	"the Graveyard of the Undying",			"the Cho-ma Market Square",
	"the Altar of the Rainbow Circle",		"Ssu-Ma's Tomb",
	"the Eyrie of the Phoenix",			"the Palace of the Dragon Kings",
	"the Cherry Blossom Pagoda",			"the Plaza of the Ten Thousand Immortals",
	"the Lake of the Sacred Tortoise",		"the Imperial Pleasure Garden",
	"Shangtung Mountain",				"the Baths at Lo Xiang",
	"the Monastery of the Red Butterfly",		"Dancing Buddha's Shrine",
	"the Citadel of Lord Lao",			"the Sweetwater Swamp",
	"NorthGuard Keep",				"the Guardian Range");


/* ----------------------------------------------------------------------------------------------------------------------------	*/
/* BEGIN CHAMBRA MOVE GENERATION												*/
/* ----------------------------------------------------------------------------------------------------------------------------	*/

/* start 		*/			
	move =  "The ";

/* style modifier	*/	 
	if(Math.floor(20*Math.random()+1)==1) {
		move += xmtab01[Math.floor(xmtab01.length*Math.random())] + " ";
	}

/* style		*/	
	move += xmtab02[Math.floor(xmtab02.length*Math.random())]+" ";

/* attack		*/	 
	if(Math.floor(20*Math.random()+1)==2) {
		move += xmtab03[Math.floor(xmtab03.length*Math.random())]+" "+xmtab04[Math.floor(xmtab04.length*Math.random())];
	}else {
		dice = Math.floor(02*Math.random()+1);
		if(dice==1) { move += xmtab04[Math.floor(xmtab04.length*Math.random())];}
		if(dice==2) { move += xmtab05[Math.floor(xmtab05.length*Math.random())]+" "+xmtab06[Math.floor(xmtab06.length*Math.random())];}
	}
	move += " the " + xmtab07[Math.floor(xmtab07.length*Math.random())];

/* attack special	*/	 
	if(Math.floor(20*Math.random()+1)==3) {
		dice = Math.floor(03*Math.random()+1);
		move += " " + xmtab08[Math.floor(xmtab08.length*Math.random())] + " ";
		if(dice==1) { move += xmtab03[Math.floor(xmtab03.length*Math.random())]+" "+xmtab04[Math.floor(xmtab04.length*Math.random())];}
		if(dice==2) { move += xmtab04[Math.floor(xmtab04.length*Math.random())];}
		if(dice==3) { move += xmtab05[Math.floor(xmtab05.length*Math.random())]+" "+xmtab06[Math.floor(xmtab06.length*Math.random())];}
		dice = Math.floor(02*Math.random()+1);
		if(dice==1) { move += " " + xmtab12[Math.floor(xmtab12.length*Math.random())];}
		if(dice==2) { move += " the " + xmtab09[Math.floor(xmtab09.length*Math.random())];}
	}

/* attack-defense split	*/
	move += "; ";

/* defense		*/	 
	if(Math.floor(20*Math.random()+1)==4) {
		dice = Math.floor(02*Math.random()+1);
		if(dice==1) { move += xmtab03[Math.floor(xmtab03.length*Math.random())]+" "+xmtab10[Math.floor(xmtab10.length*Math.random())]+" the ";}
		if(dice==2) { move += xmtab05[Math.floor(xmtab05.length*Math.random())]+" "+xmtab06[Math.floor(xmtab06.length*Math.random())]+" the ";}
	} else {
		move += xmtab10[Math.floor(xmtab10.length*Math.random())]+" the ";
	}
	move += xmtab11[Math.floor(xmtab11.length*Math.random())]+" of the "+xmtab09[Math.floor(xmtab09.length*Math.random())];

/* defense special	*/	 
	if(Math.floor(20*Math.random()+1)==5) {
		dice = Math.floor(03*Math.random()+1);
		move += " " + xmtab08[Math.floor(xmtab08.length*Math.random())]+" ";
		if(dice==1) { move += xmtab03[Math.floor(xmtab03.length*Math.random())]+" "+xmtab10[Math.floor(xmtab10.length*Math.random())];}
		if(dice==2) { move += xmtab05[Math.floor(xmtab05.length*Math.random())]+" "+xmtab06[Math.floor(xmtab06.length*Math.random())];}
		if(dice==3) { move += xmtab10[Math.floor(xmtab10.length*Math.random())];}
		move += " the " + xmtab11[Math.floor(xmtab11.length*Math.random())]+" of the "+xmtab09[Math.floor(xmtab09.length*Math.random())];
	}

/* conclusion		*/			
	move += "!";

/* yen bonus indicator	*/	 
	if(Math.floor(20*Math.random()+1)==6) {
		if(Math.floor(20*Math.random()+1)==7) {
			move += " *yen+yen*";
		} else {
			move += " *yen*";
		}
	}
	return move;
}

