

/** Some special deployment rules for some units */

function giantRatDeployment( unit, positions ) {

  var numRats = unit.count * 6;
  var packmasters = ["clanskaven2.gif","clanskaven4.gif", "moulder01.gif" ];

  var unitStruct = unit.definition;
  var unitIcons = unitStruct.icons;

  for( var i=0; i<unit.width && numRats>0; i++ ) {
    positions.front.push( unitIcons );
    numRats--;
  }
  for( var i=0; i<unit.count; i++ ) {
    positions.middle.push( packmasters );
  }
  for( var i=0; numRats>0; i++ ) {
    positions.back.push( unitIcons );
    numRats--;
  }

  return positions;
}

function maxOneOfWeaponTeam( unit, optionName, count ) {
  return maxOneOf( unit, optionName, count, maxOneOfWeaponTeam );
}

var optionsEquipment = [
      ["mMusket", "Warpmusket", 15],
      ["mPoison", "Poisoned attacks", 15],
      ["mTailWeap", "Tail Weapon", 8],
      ["mPistol", "Warplock Pistol", 8],
      ["mRathound", "Rat Hound Bodyguard", 5]
    ];

var optionsMagicWep = [
      ["mFellblad", "Fellblade", 100],
			["mWarpforged", "Warpforged Blade", 50],
			["mAugmented", "Warlock-Augmented Weapon", 45],
			["mCorruptionBlad", "Blade of Corruption", 35],
			["mWeepBlad", "Weeping Blade", 30],
			["mDwarfBane", "Dwarfbane", 25],
			["mBladNurg", "Blade of Nurglitch", 10]
  ].concat(commonMagicWep).optSort().optAdd("changeFunction", maxOneOfMWep);

var optionsMagicArm = [
       ["mWarpArmr", "Warpstone Armor", 30],
       ["mWorldEdgeArm", "World Edge Armour", 25],
       ["mDistraction", "Shield of Distraction", 15]
  ].concat(commonMagicArm).optSort().optAdd("changeFunction", maxOneOfMArm);

var optionsMagicTal = [
      ["mFoulPend", "The Foul Pendant", 30],
			["mShadowMagnet", "Shadow Magnet Trinket", 30],
			["mRivalHide", "Rival Hide Talisman", 15]
  ].concat(commonMagicTal).optSort().optAdd("changeFunction", maxOneOfMTalisman);

var optionsMagicArc = [
			["mWarpstrm", "Warpstorm Scroll", 50],
			["mStaffSor", "Staff of Sorcery", 35],
			["mCondenser", "Warp-Energy Condenser", 20],
			["mScrySton", "Scrying Stone", 15],
			["mWarpToken", "Warpstone Token", 15, {maxCount:4}]
  ].concat(commonMagicArc).optSort().optAdd("changeFunction", maxOneOfMArc);

var optionsMagicEnc = [
			["mSkavenbr", "Skavenbrew", 50],
			["mSkalm", "Skalm", 30],
			["mPipesPiebald", "Pipes of Piebald", 25],
			["mPortentsDoom", "Portents of Verminous Doom", 20]
  ].concat(commonMagicEnc).optSort().optAdd("changeFunction", maxOneOfMEnc);

var optionsMagicEshin = [
			["mWarpStars", "Warpstone Stars", 50],
			["mInfBomb", "Infernal Bomb", 30],
      ["mSmokeBom", "Smoke Bombs", 20]
		];

var optionsMagicSkryre = [
			["mBrassOrb", "Brass Orb", 50],
			["mDoomRock", "Doomrocket", 30],
			["mDeathGlobe", "Death Globe", 25],
      ["mOptics", "Warlock Optics", 20]
		];

var optionsMagicPestilens = [
			["mWarpScroll", "Warp Scroll", 35]
		];

var optionsMagicMoulder = [
			["mProd", "Shock-Prod", 25],
			["mEWhip", "Elector-Whip", 15]
		];

var optionsMagicBan = [
      ["SacredSt", "Sacred Standard of the Horned Rat", 75],
      ["Stormbannr", "Storm Banner", 50],
			["Grandbannr", "Grand Banner of Clan Superiority", 30],
			["Shroudbannr", "Shroud of Dripping Death", 30],
			["Underbannr", "Banner of the Under-Empire", 25],
			["Dwarfbannr", "Dwarf-Hide Banner", 15],
			["Scurrybannr", "Banner of Verminous Scurrying", 10]
    ].concat(commonMagicBan).optSort().optAdd("changeFunction", maxOneOfBanner).optAdd("disabled", noStandardBearer);

var optionsWeaponTeam = [
					["sPlagueMortar", "Poisoned Wind Mortar", 65, {icons: ["skavenfirethrower1.gif"], changeFunction: maxOneOfWeaponTeam} ],
					["sThrow", "Warpfire Thrower Team", 70, {icons: ["skavenfirethrower2.gif"], changeFunction: maxOneOfWeaponTeam} ],
					["sRatGn", "Ratling Gun Team", 55, {icons: ["skavenratlingcannon1.gif"], changeFunction: maxOneOfWeaponTeam} ],
					["sFlayer", "Doom-Flayer", 60, {icons: ["skavenratlingcannon1.gif"], changeFunction: maxOneOfWeaponTeam} ]
     ];

function Pack (creature) {
  this.creature = creature;
  this.packmaster =  {
      name:       "Packmaster",
      points:     8,
      basicText:  "Light Armour, Whip",
      icons:      ["clanskaven2.gif","clanskaven4.gif", "moulder01.gif" ],
      options:    [] };

  this.masterPackmaster = {
      name:       "Master Packmaster",
      points:     25+8,
      basicText:  "Light Armour, Whip",
      itemPoints: 30,
      maxsize:    1,
      icons:      ["mastMoul01.gif"],
      options:    [
             [
              ["iGreatWep", "Great Weapon", 4, {changeFunction: maxOneOfWep}],
              ["iThingsCa", "Things-Catcher", 20, {changeFunction: maxOneOfWep}]
             ],
             optionsMagicWep,
             [].concat(optionsMagicArm, null, optionsMagicTal),
             optionsMagicEnc,
             [].concat(optionsEquipment, null, optionsMagicMoulder)
             ] };

  this.skweel = {
      name:       "Skweel",
      fullName:   "Packmaster Skweel Gnawtooth",
      namedCharacter: 1,
      points:     100,
      itemPoints: 0,
      basicText:  "Light Armour, Warp-lash",
      maxsize:    1,
      icons:       ["mastMoul01.gif"],
      options:    [] };
}

var iconFolder = "image/";

var baseDefinition = {
  name: "Skaven",
  maxsize: 1,
  noSpecialName: 1,
  subDefinitions: {

	skrolk: {
    name:       "Skrolk",
	  fullName:   "Plaguelord Skrolk",
	  namedCharacter: 1,
	  points:     470,
	  itemPoints: 0,
	  basicText:  "Staff of Corruption, Liber Bubonicus, Terror",
	  maxsize:    1,
    slot:       "Lord",
	  icons:       ["skrolk.gif"],
	  options:    [] },

	thanquol: {
	  name:       "Thanquol",
	  fullName:   "Grey Seer Thanquol and Boneripper",
	  namedCharacter: 1,
	  points:     450,
	  itemPoints: 0,
	  basicText:  "Amulet of the Horned One, Staff of the Horned One, W6+2 Warpstone Tokens<br>Boneripper",
	  maxsize:    1,
    slot:       "Lord",
	  icons:       ["thanquol.gif"],
	  options:    [] },

	ikit: {
	  name:       "Ikit Claw",
	  fullName:   "Ikit Claw",
	  namedCharacter: 1,
	  points:     395,
	  itemPoints: 0,
	  basicText:  "Storm Daemon, Warplock Pistol, Iron Frame",
	  maxsize:    1,
    slot:       "Lord",
	  icons:       ["ikit.gif"],
	  options:    [] },

	throt: {
	  name:       "Throt",
	  fullName:   "Throt the Unclean",
	  namedCharacter: 1,
	  points:     225.,
	  itemPoints: 0,
	  basicText:  "Creature-Killer, Whip of Domination, Regeneration",
	  maxsize:    1,
    slot:       "Lord",
	  icons:       ["throt.gif"],
	  options:    [] },

	queek: {
	  name:       "Queek",
	  fullName:   "Queek Headtaker",
	  namedCharacter: 1,
	  points:     215,
	  itemPoints: 0,
	  basicText:  "Dwarf Gouger and Warp-shard Armour",
	  maxsize:    1,
    slot:       "Lord",
	  icons:       ["quiek.gif"],
	  options:    [] },

	vermLord: {
	  name:       "Vermin Lord",
	  points:     500,
	  itemPoints: 0,
	  basicText:  "Immune to Psychology, Terror, Doom Glaive",
	  maxsize:    1,
    slot:       "Lord",
	  icons:       ["verminlord.gif"],
	  options:    [] },

	warlord: {
	  name:       "Warlord",
	  names:      ["Sharptooth Dwarfbiter", "S&quot;keet the ugly"],
	  points:     90.,
	  itemPoints: 100,
	  basicText:  "Heavy Armour",
	  maxsize:    1,
    slot:       "Lord",
	  icons:      ["warlord01.gif", "warlord02.gif"],
    options:    [
      [
        ["iGreatWep", "Great Weapon", 6, {changeFunction: maxOneOfWep} ],
        ["iExtraHand", "Extra Hand Weapon", 3, {changeFunction: maxOneOfWep} ],
        ["iHalberd", "Halberd", 3, {changeFunction: maxOneOfWep}],
        null,
        ["iShield", "Shield", 3],
        null,
        ["iRatogre", "Rat Ogre Bonebreaker", 65, {changeFunction: maxOneOfMount, icons: ["warlord03.gif"]} ],
        ["iWarLitter", "War-Litter", 35, {changeFunction: maxOneOfMount} ],
        ["iPoxRat", "Great Pox Rat", 30, {changeFunction: maxOneOfMount, icons: ["chieftain03.gif"]} ]
      ],
      optionsMagicWep,
      [].concat(optionsMagicArm, null, optionsMagicTal),
      [].concat(optionsMagicEnc, null, optionsEquipment)
        ] },

	greySeer: {
	  name:       "Grey Seer",
	  points:     240,
	  itemPoints: 100,
	  basicText:  "Mage lvl. 4, W3 Warpstone Tokens",
	  maxsize:    1,
    slot:       "Lord",
	  icons:       ["grayseer01.gif", "grayseer02.gif", "grayseer03.gif"],
    options:    [
           [ ["iScreamBl", "Screaming Bell", 200, {icons: ["bell2.gif"]} ] ],
           optionsMagicWep,
           optionsMagicTal,
           optionsMagicEnc,
           optionsMagicArc,
           optionsEquipment
           ] },

	snikch: {
	  name:       "Snikch",
	  fullName:   "Master Assassin Snikch",
	  namedCharacter: 1,
	  points:     270,
	  itemPoints: 0,
	  basicText:  "Throwing Stars, The Cloak of Shadows, Whirl of Weeping Blades",
	  maxsize:    1,
    slot:       "Hero",
	  icons:       ["snikch.gif"],
	  options:    [] },

	trench: {
	  name:       "Trench",
	  fullName:   "Trench Craventail",
	  namedCharacter: 1,
	  points:     145,
	  itemPoints: 0,
	  basicText:  "Heavy Armour, Extra Hand Weapon, Tail Blade, Lucky Skullhelmet",
	  maxsize:    1,
    slot:       "Hero",
	  icons:       ["chieftain02.gif"],
	  options:    [] },

	assassin: {
	  name:       "Assassin",
	  points:     120.,
	  itemPoints: 50,
	  basicText:  "Poison, Extra Hand Weapon, Throwing Stars",
	  maxsize:    1,
    slot:       "Hero",
	  icons:       ["assassin01.gif", "assassin02.gif"],
	  options:    [
           optionsMagicWep.optSort(50),
           optionsMagicTal.optSort(50),
           optionsMagicEnc.optSort(50),
           [].concat(optionsEquipment, null, optionsMagicEshin)
           ] },

  warlockE: {
	  name:       "Warlock Engineer",
	  points:     15,
	  itemPoints: 50,
	  maxsize:    1,
    slot:       "Hero",
	  icons:       ["warlockE02.gif"],
	  options:    [
				   [
					["iLvl1", "Mage level 1", 50],
					["iLvl2", "Mage level 2", 85],
          null, 
					["iAugmWeapon", "Warlock-Augmented Weapon", 45],
					["iWarpPist", "Warplock Pistol", 8],
					["iWarpmus", "Warpmusket", 15],
          null,
          ["mWarpArmr", "Warpstone Armor", 30 ]
					],
          optionsMagicWep.optSort(50),
          optionsMagicTal.optSort(50),
          [].concat(optionsMagicArc.optSort(50), null, optionsMagicEnc.optSort(50)),
          [].concat(optionsEquipment, null, optionsMagicSkryre)
				   ] },

	chieftain: {
	  name:       "Chieftain",
	  points:     45,
	  itemPoints: 50,
	  basicText:  "Heavy Armour",
	  maxsize:    1,
    slot:       "Hero",
	  icons:      ["chieftain02.gif"],
	  options:    [
				   [
                ["iGreatWep", "Great Weapon", 4, {changeFunction: maxOneOfWep}],
                ["iExtraHand", "Extra Hand Weapon", 2, {changeFunction: maxOneOfWep}],
                ["iHalberd", "Halberd", 2, {changeFunction: maxOneOfWep}],
                ["iShield", "Shield", 2, { icons: ["chieftain01.gif"]} ],
                null,
                ["iBSB", "Battle Standard Bearer", 25, {changeFunction: deselectBanners, icons: ["clanrats_std01.gif", "clanrats_std01.gif", "plagueMn_std01.gif"]} ]
            ],
            optionsMagicWep.optSort(50),
            [].concat(optionsMagicArm.optSort(50), null, optionsMagicTal.optSort(50)),
            [].concat(optionsMagicEnc.optSort(50), null, optionsEquipment.optSort(50)),
            optionsMagicBan
          ] },

	plaguePr: {
	  name:       "Plague Priest",
	  points:     100,
	  itemPoints: 50,
	  basicText:  "Frenzy",
	  maxsize:    1,
    slot:       "Hero",
	  icons:       ["skavenpriest1.gif", "plaguePr01.gif", "plaguePr02.gif"],
	  options:    [
				   [
           ["iLvl2", "Mage level 2", 35],
          null,
					["iPlagueCn", "Plague Censer", 16, {changeFunction: maxOneOfWep, icons: ["plaguePr01.gif"] } ],
					["iFlail", "Flail", 4, {changeFunction: maxOneOfWep}],
					["iExtraHand", "Extra Hand Weapon", 4, {changeFunction: maxOneOfWep}],
        null,
        ["iPoxRat", "Great Pox Rat", 30, {changeFunction: maxOneOfMount, icons: ["chieftain03.gif"]} ],
        ["iPlagueFurn", "Plague Furnance", 150, {changeFunction: maxOneOfMount, icons: ["plaguefurnance.gif"]} ]
					],
				   optionsMagicWep.optSort(50),
				   [].concat(optionsMagicTal.optSort(50), null, optionsMagicEnc.optSort(50)),
           optionsMagicArc.optSort(50),
           [].concat(optionsEquipment, null, optionsMagicPestilens)
				   ] },

	clanrats: {
	  name:       "Clanrats",
	  points:     4,
	  itemPoints: 0,
	  basicText:  "Light Armour",
	  minsize:    20,
    slot:       "Core",
	  icons:       ["clanskaven2.gif","clanskaven4.gif", "clanskaven5.gif" ],
	  options:    [
				   [
					["iSpear", "Spear", .5, {icons: ["clanskaven1.gif","clanskaven3.gif"]} ], 
					["iShield", "Shield", .5, {icons: ["clanskaven2.gif","clanskaven5.gif"]} ], 
					],
           optionsWeaponTeam,
				   [
					["Music", "Musician", 4, {icons: ["skavenmusican.gif"]} ],
					["Std", "Standard Bearer", 8, {icons: ["clanrats_std01.gif", "clanrats_std02.gif"]} ],
					["Champ", "Clawleader", 8, {icons: ["skavenchamp1.gif"]} ]
					]
				   ] },

	stormver: {
	  name:       "Stormvermin",
	  points:     7,
	  itemPoints: 100,
	  basicText:  "Halberd, Heavy Armour",
	  minsize:    10,
    slot:       "Core",
	  icons:       ["stormver03.gif", "stormver04.gif"],
	  options:    [
				   [
					["iShield", "Shield", 1, {icons: ["stormver01.gif", "stormver02.gif"]} ],
          null,
					["Music", "Musician", 5, {icons:["skavenmusican.gif"]} ],
					["Std", "Standard Bearer", 10, {changeFunction: deselectBanners, icons:["clanrats_std01.gif"]} ],
					["Champ", "Fangleader", 10, {icons:["skavenchamp1.gif"]} ]
					],
           [].concat(optionsWeaponTeam, null, optionsEquipment.optSort(15)),
				   optionsMagicBan.optSort(50)
				   ] },

	slaves: {
	  name:       "Clanrat Slaves",
	  points:     2.,
	  itemPoints: 0,
	  basicText:  "",
	  minsize:    20,
    slot:       "Core",
	  icons:      ["slaves01.gif","slaves02.gif","slaves03.gif"],
	  options:    [
				   [
					["iShield", "Shield", .5, {icons: ["clanskaven2.gif","clanskaven4.gif", "clanskaven5.gif" ]} ],
					["iSpear", "Spear", .5 ],
					["iSling", "Sling", .5, {icons: ["slaves_sling01.gif","slaves_sling02.gif"]} ]
					],
				   [
					["Music", "Musician", 2, {icons: ["slavesmusician.gif"]} ],
					["Champ", "Pawleader", 4]
					]
				   ] },

	nightRn: {
	  name:       "Night Runners",
	  points:     7,
	  itemPoints: 0,
	  basicText:  "Throwing Stars",
	  minsize:    10,
    slot:       "Core",
	  icons:      ["nightRn01.gif", "nightRn02.gif"],
	  options:    [
				   [
					["iSling", "Sling", 1, {icons:["slaves_sling01.gif","slaves_sling02.gif"]} ],
					["sDrill", "Warpdrill", 60, {icons: ["skavenratlingcannon1.gif"]} ],
					], 
				   [
					["Champ", "Nightleader", 8, {icons: ["assassin01.gif", "assassin02.gif"]} ]
					]
				   ] },

	giantRatUnit: {
	  name:       "Giant Rat Unit",
	  maxsize:    1,
    slot:       "Core",

    subDefinitions: new Pack(
        {
      name:       "Giant Rats",
      points:     3,
      minsize:    5,
      icons:      ["skavenrat1.gif","skavenrat2.gif"],
      options:    [] } )
  },

	ratSwarm: {
	  name:       "Rat Swarm",
	  points:     25.,
	  basicText:  "Swarm, Unbreakable, Skirmishers",
	  minsize:    2,
	  maxsize:    10,
    slot:       "Core",
	  icons:      ["skavenratswarm.gif"],
	  options:    [] },

	gutterRn: {
	  name:       "Gutter Runners",
	  points:     12,
	  basicText:  "Scouts, Skirmisher, Throwing Stars",
	  minsize:    3,
	  maxsize:    16,
    slot:       "Special",
	  icons:      ["gutterRn01.gif", "gutterRn02.gif"],
	  deployment: spreadDeployment,
	  options:    [
				   [
           ["iExtraHand", "Extra Hand Weapon", 0, {changeFunction: maxOneOfWep} ],
           ["iNet", "Net", 0, {changeFunction: maxOneOfWep} ],
           ["iSling", "Sling", 1],
           ["iPois", "Poison", 5],
           ["sDrill", "Warpdrill", 60, {icons: ["skavenratlingcannon1.gif"]} ]
					],
				   [
					["Champ", "Black Skaven", 12, {icons: ["assassin01.gif", "assassin02.gif"]} ],
					["mSmokeBomb", "Smoke bombs for Black Skaven", 10 ],
					["mWeeping", "Weeping Blade", 10 ]
					]
				   ] },

	ratOgresUnit: {
	  name:       "Rat Ogres Unit",
	  maxsize:    1,
    slot:       "Special",

    subDefinitions: new Pack(
        {
	    name:       "Rat Ogres",
	    points:     40,
	    basicText:  "Causes Fear",
	    icons:      ["ratogre1.gif","ratogre2.gif", "ratogre3.gif", "ratogre4.gif"],
      options:    [
        [["Champ", "Elite Rat Ogre", 15 ]]
      ] } )
  },

	plagueMn: {
	  name:       "Plague Monks",
	  points:     7,
	  basicText:  "Frenzy, Two hand weapons",
	  minsize:    10,
    slot:       "Special",
	  icons:      ["plagueMn01.gif", "plagueMn02.gif", "plagueMn03.gif"],
	  options:    [
				   [
					["Music", "Musician", 5],
					["Std", "Standard Bearer", 10, {changeFunction: deselectBanners, icons: ["plagueMn_std01.gif"]} ],
					["Champ", "Bringer-of-the-Word", 10, {icons: ["plagueMn_champ01.gif", "skavenpriest1.gif"]} ]
					],
          [["mPlague", "Plague Banner", 30, {changeFunction: maxOneOfBanner}]].concat(optionsMagicBan).optSort(50)
            ]
            },

	plagueCe: {
	  name:       "Plague Censer Bearers",
	  points:     16,
	  basicText:  "Plague Censer, Hatred, Frenzy, Skirmishers",
	  minsize:    5,
    slot:       "Special",
	  icons:      ["plagueCe01.gif", "plagueCe02.gif"],
	  deployment: spreadDeployment,
	  options:    [
					[["Champ", "Plague Chanter", 13, {icons: ["skavenpriest1.gif"]} ]]
	] },

	jezzails: {
	  name:       "Warplock Jezzails",
	  points:     20,
	  basicText:  "Jezzail",
	  minsize:    3,
	  maxsize:    10,
    slot:       "Special",
	  icons:      ["skavenratlingcannon1.gif"],
	  options:    [
					[["Champ", "Sharpshooter Team", 10]]
		] },

	poisWind: {
	  name:       "Poisoned Wind Globadiers",
	  points:     10,
	  basicText:  "Skirmishers, Poisoned Wind Globes",
	  minsize:    5,
	  maxsize:    15,
    slot:       "Special",
	  icons:      ["poisWind01.gif","poisWind02.gif"],
	  deployment: spreadDeployment,
	  options:    [
          [
					["Champ", "Bombadier", 5],
            ["mDeathGlobe", "Death Globe for Bombadier", 25]
            ],
            [ ["sPlagueMortar", "Poisoned Wind Mortar", 65, {icons: ["skavenfirethrower1.gif"]} ] ]
	] },

	abomination: {
	  name:       "Abomination",
    fullName:   "Hell Pit Abomination",
	  points:     235,
	  maxsize:    1,
    slot:       "Rare",
	  icons:      ["abomination.gif"],
	  options:    [
    [["iSpikes", "Warpstone Spikes", 15]]
    ] },

	doomWheel: {
	  name:       "Doomwheel",
	  points:     150,
	  maxsize:    1,
    slot:       "Rare",
	  icons:      ["doomwheel.gif"],
	  options:    [ ] },

	warpLght: {
	  name:       "Warp-Lightning Cannon",
	  points:     90,
	  maxsize:    1,
    slot:       "Rare",
	  icons:      ["skavenwarpcannon.gif"],
	  options:    [ ] },
  
	plagueclaw: {
	  name:       "Plagueclaw",
    fullName:   "Plagueclaw Kataput",
	  points:     100,
	  maxsize:    1,
    slot:       "Rare",
	  icons:      ["plagueclaw.gif"],
	  options:    [ ] }

  }
};

var baseUnit = new Unit( null, null );

