leathalTest

#include 157
bool DEBUG = true;

//Players
Player P1;
Player Ai;
Player Neutral;

//Party
Entity Hero;
Entity Ally1;
Entity Ally2;
Entity Ally3;
Entity Ally4;
Entity Pet;

//Base
Entity Base1;
Entity Base2;
Entity Base3;
Entity Base4;
Entity Base5;
Entity Base6;

//Beasts
  //Sylvan
Entity Kodiak;
bool noKodiak = false;
Entity Mastodon;
bool noMastodon = false;
  //MF
Entity Stagg;
bool noStagg = false;
Entity Cow;
bool noCow = false;
  //CI
Entity Turtle;
bool noTurtle = false;
Entity Unicorn;
bool noUnicorn = false;
  //Ele
Entity Greck;
bool noGreck = false;
Entity Roc;
bool noRoc = false;
  //Chaos
Entity Bullfrog;
bool noBullfrog = false;
Entity Manticore;
bool noManticore = false;
  //DL
Entity Wyrm;
bool noWyrm = false;
Entity Ord;
bool noOrd = false;

//Map objects
Entity Object1;
Entity Object2;
Entity Object3;
Entity Object4;
Entity Object5;
Entity Object6;

//Spawns
Entity Spawn1;
Entity Spawn2;
Entity Spawn3;
Entity Spawn4;
Entity Spawn5;
Entity Spawn6;
Entity Spawn7;
Entity Spawn8;
Entity Spawn9;
Entity Spawn10;
Entity Spawn11;
Entity Spawn12;
Entity Spawn13;
Entity Spawn14;
Entity Spawn15;

//Boss
Entity Boss;
Entity Minion1;
Entity Minion2;
Entity Minion3;
Entity Minion4;
Entity Minion5;

//Exit building
Entity EBase;
Entity Exit;

//Trackers
int currentLvl = 1;
bool object1Destroyed = false;
bool object2Destroyed = false;
bool object3Destroyed = false;
bool object4Destroyed = false;
bool object5Destroyed = false;
bool object6Destroyed = false;
bool dragonDown = false;
bool beast1Tamed = false;
bool beast2Tamed = false;
bool lvlDone = false;
int archerBirdKills = 0;
bool archerTarget1 = false;
bool archerTarget2 = false;
bool archerTarget3 = false;
bool archerTarget4 = false;
bool archerTarget5 = false;
bool archerTarget6 = false;
bool archerTarget7 = false;
int cnt = 0;
int callback = 0;
Location lastLoc;

void configGame(){
   setNumPlayers(2);
   setMapSize(17,17);
   setNumFluxWells(0);
   addAIPlayer("War","Lord of Chaos",0);
   dontNeedDecks();
}

void beforeStart(){
   Ai = getAIPlayer(0); 
   P1 = getHumanPlayer(0); 
   int ds2=Ai.deckSize();
   for(int n=0; n<ds2; n++) Ai.removeDeckCard(0);
   
   //Load the first level
   sylvanLevel();
}

void afterStart(){
callback = 1;
forEachEntity();
P1.addFlux(-6);
Ai.addFlux(-8);

infoBox("Beastmaster","You are no ordinary beastmaster. The beasts that you tame continue to obey you even when you look away. Of course, some beasts are harder to win over then others. Beasts that are generally tame need only be approached, while those that tend to be more aggressive need to be fought.");

infoBox("The Adventure","You are a powerful beastmaster. For many years now, your world has been at war. You believe that by wiping out the leaders from each army, the fighting will come to an end. You head out from your village with your most powerful beast, your elven friends, and the few tools you can gather, in hopes of accomplishing this daunting task. You know that you will need even more strength to win the coming battles, so you plan to find and train some new beasts in the wilds to fight at your side during this adventure.");
}

void onNewRound(){

    P1.addFlux(-2);
    Ai.addFlux(-2);

   //Game over if beastmaster dies
   if(!Hero.doesExist()){endGame(getAIPlayer(0));}

 switch(currentLvl)
  {
  case 1:
    sylvanEvents();
    break;
  case 2:
    mountainfolkEvents();
    break;
  case 3:
    ciEvents();
    break;
  case 4:
    elementalEvents();
    break;
  case 5:
    chaosEvents();
    break;
  case 6:
    darklegionEvents();
    break;
   }

 //Level up the archer
 switch(archerBirdKills)
   {
   case 3:
      Ally1.addTokens("speed",2);
      Ally1.addTokens("range",2);
      Ally1.addTokens("maxhp",1);
      archerBirdKills +=1;
      infoBox("Archer level up","Your archer reflects back on his efforts, and become slightly more powerful.");
      break;
   case 7:
      Ally1.addTokens("attack",1);
      Ally1.addTokens("speed",1);
      Ally1.addTokens("maxhp",2);
      Ally1.addTokens("vision",2);
      archerBirdKills +=1;
      infoBox("Archer level up","Your archer reflects back on his efforts, and his skill increases even further.");
      break;
   case 12:
      Ally1.addTokens("vision",1);
      Ally1.addTokens("range",1);
      Ally1.addTokens("maxhp",3);
      Ally1.addTokens("attack",2);
      archerBirdKills +=1;
      infoBox("Archer level up","Your archer reflects back on his efforts, and is feeling like a true warrior.");
      break;
   case 20:
      Ally1.addTokens("attack",2);
      Ally1.addTokens("range",2);
      Ally1.addTokens("maxhp",5);
      Ally1.addTokens("speed",3);
      Ally1.addTokens("vision",1);
      infoBox("Archer level up","Your archer reflects back on his efforts, and is now ready for anything.");
      archerBirdKills +=1;
      break;
   }
}

void afterAction(Action action)
{
  debug( "afterAction" );
}

void sylvanLevel(){
//Set up level 1

//Set map
sylvanMap();

//Base
Base1 = createEntity("Grove",0,1,P1);
Base2 = createEntity("Great Oak",0,3,P1);
Base3 = createEntity("Emerald Spring",2,2,P1);
Base4 = createEntity("Gossamer Palace",3,0,Neutral);

//Party
Hero = createEntity("Dellenari Beastmaster", 3,3,P1);
Hero.addTokens("maxhp",+3);
Hero.addTokens("speed",+1);
   
Ally1 = createEntity("Tenderfoot Archer",4,2,P1);

Ally2 = createEntity("Elven Scout",4,4,P1);
Ally2.addTokens("attack",-1);
enchantEntity(Ally2, "Camouflage", P1);

Pet = createEntity("Kodiak",3,4,P1);
Pet.addTokens("attack",+1);
Pet.addTokens("maxhp",+1);
   
P1.addToHand("Woodland Spies");
P1.addToHand("Bindweed Poultice");
P1.addToHand("Entangle");
   
fogMap();
lightFog(P1,0,0,8,8);

//Objects
Object1 = createEntity("Ivory Spire",14,5,Neutral);
Object2 = createEntity("Bamboo Watch Tower",2,10,Ai);
Object3 = createEntity("Kithil'aa Treehouse",4,15,Neutral);


//Spawns
Spawn1 = createEntity("Arendor Treefolk",3,11,Ai);
Spawn1.addTokens("attack",-1);
Spawn1.addTokens("speed",-2);

Spawn2 = createEntity("Thistle Falcon",11,4,Ai);
Spawn2.addTokens("attack",-1);
Spawn2.addTokens("speed",-2);

Spawn3 = createEntity("Thistle Falcon",12,5,Ai);
Spawn3.addTokens("attack",-1);
Spawn3.addTokens("speed",-2);

Spawn4 = createEntity("Thistle Falcon",13,4,Ai);
Spawn4.addTokens("attack",-1);
Spawn4.addTokens("speed",-2);

Spawn5 = createEntity("Valedune Arborist",9,8,Ai);
Spawn6 = createEntity("Valedune Arborist",7,8,Ai);
Spawn7 = createEntity("Valedune Arborist",8,7,Ai);

//Beasts
Kodiak = createEntity("Kodiak",3,16,Ai);
Kodiak.addTokens("attack",-2);
Kodiak.addTokens("speed",-4);
Kodiak.addTokens("maxhp",-3);

Mastodon = createEntity("Toothless Mastodon",15,3,Neutral);

//Boss
EBase = createEntity("Grove",16,16,Ai);

Object4 = createEntity("Temple of Zorn",15,16,Ai);
Object5 = createEntity("Long Root Elm",14,13,Ai);

Boss = createEntity("Daring Naturalist",14,14,Ai);
Boss.addTokens("attack", +1);
Boss.addTokens("maxhp", + 2);
enchantEntity(Boss, "Anti-Magic Shell", Ai);
Boss.addTokens("speed",-5);

Minion1 = createEntity("Sapling",15,14,Ai);
enchantEntity(Minion1, "Subject of Loathing", Ai);
Minion1.addTokens("speed",-5);

Minion2 = createEntity("Sapling",13,15,Ai);
Minion2.addTokens("speed",-5);

}

void sylvanEvents(){

cnt +=1;
switch(cnt)
  {
  case 1:
    infoBox("Ivory Spire","As you head out, you wonder how the spire to the north is. With all the battles that have been occurring, you hope it has not been damaged.");
    break;
  case 5:
    infoBox("Ivory Spire","You think its strange that there are so many falcons flying around the spire. You feel the need to get rid of them.");
    break;
  case 7:
     Boss.addTokens("speed",5);
     Minion1.addTokens("speed",5);
     Minion2.addTokens("speed",5);
     infoBox("Warning", "You can hear a mighty foe preparing for battle off in the distance. Your scout shows signs of fear from this threat.");
    break;
  case 8:
    lastLoc = Ally2.getLoc();
    Ally2.remove();
    Ally2 = createEntity("Elven Scout",lastLoc,P1);
    Ally2.setDim(false);
    Ally2.addTokens("maxhp",1);
    infoBox("Scout", "Your scout suddently falls out of his camouflage. He quickly fortifies his stance.");
    break;
  case 10:
    infoBox("Dragon","Making it this far brings you renewed courage. You suddenly remember the legends of a mighty dragon that sleeps to the far east from your village. You've heard that if you disturb the area too much, the dragon will come and defend it.");
    break;
   }

//Tame Mastodon
      if(Mastodon.getController() == P1 && beast2Tamed == false && noMastodon == false)
	{
          beast2Tamed = true;
          Mastodon.setController(P1);
            if (Mastodon.getCurHealth() > 3)  //Penalty if Mastodon is hit
              {
             Mastodon.addTokens("attack",+1);         
             infoBox("Mastodon", "The Mastodon slowly turns its eyes to you. You can see it is willing to assist you with all it's might.");
              }
            else
              {
            infoBox("Mastodon", "The Mastodon slowly glares up at you. It appears to be understand that you are in charge now.");
              }
        }

if (!Object1.doesExist() && object1Destroyed == false){
   P1.addFlux(-1);
   object1Destroyed = true;
   infoBox("Spire", "As the ivory spire falls, you feel some of your energy drain away.");}

if (!Object2.doesExist() && object2Destroyed == false){
   P1.addToHand("Covert Mission");
   P1.addFlux(2);
   object2Destroyed = true;
   infoBox("Tower", "While scavenging through the ruins of the watch tower, you find a handy new tool.");}

if (!Object3.doesExist() && object3Destroyed == false){
   
   object3Destroyed = true;
   infoBox("Dragon", "As the treehouse falls, a dragon apears in its place. It is clearly unhappy.");
   Spawn8 = createEntity("Barkskin Dragon",4,15,Ai);
   Spawn8.addTokens("attack",-1);
   Spawn8.addTokens("range",-1);
   Spawn8.addTokens("maxhp",-1);
   Spawn8.addTokens("speed",3);}

if (!Spawn8.doesExist() && dragonDown == false && object3Destroyed == true){
   
   object3Destroyed = true;
   infoBox("Dragon", "The mighty dragon falls before you. You feel its energy flow through you.");
   P1.addFlux(2);
   dragonDown = true;}

//End sylvan level
 if(!Boss.doesExist() && lvlDone == false){
     infoBox("Success","The Daring Naturalist falls before you, shrieking a horrid curse. With your victory, you find the potential in yourself to grow even stronger. Further north lie the mountains that hold your next target. Destroy the Slate Hut to move on.");
     P1.addToHand("Energy");
     P1.addFlux(+2);
     EBase.remove();
     Exit = createEntity("Slate Hut",16,16,Ai);
     Object4.setController(P1);
     lvlDone = true;}

//Move to level 2
if(!Exit.doesExist() && !Boss.doesExist())
   {mountainfolkLevel();}
}

void sylvanActions(Action action){

if (action.getEntityActor().getName() == Hero.getName())
{
      //Tame Kodiak
      if(Kodiak.getCurHealth() <= 0 && beast1Tamed == false && noKodiak == false){
          beast1Tamed = true;
          lastLoc = Kodiak.getLoc();
          Kodiak.remove();
	  Kodiak = createEntity("Kodiak",lastLoc,P1);
          infoBox("Kodiak", "The Kodiak lets out a mighty roar, restoring its energy. It is now under your command.");	       
	}
}
if (action.getEntityActor().getName() != Hero.getName())
{
      //Lose Kodiak
      if(Kodiak.getCurHealth() <= 0 && beast1Tamed == false){
          noKodiak = true;
	  }

      //Lose Mastodon
      if(Mastodon.getController() == P1 && beast2Tamed == false)
	{
          noMastodon = true;
        }
}

if (action.getEntityActor().getName() == Ally1.getName())
   {
     if (Spawn2.getCurHealth() <=0 && archerTarget1 == false)
     {archerBirdKills +=1; archerTarget1 = true;}
     if (Spawn3.getCurHealth() <=0 && archerTarget2 == false)
     {archerBirdKills +=1; archerTarget2 = true;}
     if (Spawn4.getCurHealth() <=0 && archerTarget3 == false)
     {archerBirdKills +=1; archerTarget3 = true;}
   }
}

void mountainfolkLevel(){
//Set up level 2
currentLvl = 2;

//Set map
mountainfolkMap();

//Clear old objects
Base1.remove();
Base2.remove();
Base3.remove();
Base4.remove();
Object1.remove();
Object2.remove();
Object3.remove();
Object4.remove();
Object5.remove();
Spawn1.remove();
Spawn2.remove();
Spawn3.remove();
Spawn4.remove();
Spawn5.remove();
Spawn6.remove();
Spawn7.remove();
Spawn8.remove();
EBase.remove();
Minion1.remove();
Minion2.remove();
if (beast1Tamed == false){Kodiak.remove();}
if (beast2Tamed == false){Mastodon.remove();}
callback = 0;
forEachEntity();

//Reset variables
object1Destroyed = false;
object2Destroyed = false;
object3Destroyed = false;
dragonDown = false;
lvlDone = false;
beast1Tamed = false;
beast2Tamed = false;
cnt = 0;
archerTarget1 = false;
archerTarget2 = false;
archerTarget3 = false;

//Move party to start of level and welcome
infoBox("The mountains","After a night of camping, you head into the mountains. You know that just a bit further north, lies the next army.");
Hero.move(createLocation(1,9));
Ally1.move(createLocation(1, 7));
Ally2.move(createLocation(2, 8));
Pet.move(createLocation(1, 10));
Kodiak.move(createLocation(1, 12));
Mastodon.move(createLocation(1, 5));
fogMap();
lightFog(P1,0,3,6,14);

//Base
Base1 = createEntity("Grove",0,9,P1);
Base1 = createEntity("Great Oak",0,10,P1);
Base2 = createEntity("Signal Station",0,8,P1);

//Objects
Object1 = createEntity("Walled Outpost",13,2,Ai);
Object2 = createEntity("Earthworks",8,4,Ai);
Object3 = createEntity("Ord Stone",7,1,Neutral);
enchantEntity(Object3, "Iron Gate", Ai);
Object4 = createEntity("Ord Stone",11,16,Neutral);

//Beasts
Stagg = createEntity("Silver Stagg",15,1,Ai);
Stagg.addTokens("attack",-1);
Stagg.addTokens("maxhp",-2);
Stagg.addTokens("speed",-4);
Cow = createEntity("Stench Cow",5,14,Ai);

//Spawns
Spawn1 = createEntity("KDPW Levy Corps",10,1,Ai);
Spawn7.addTokens("speed",-1);
Spawn2 = createEntity("Shield Warrior",8,9,Ai);
Spawn3 = createEntity("Clay Ram",12,14,Ai);
Spawn4 = createEntity("Dwarven Warrior",9,5,Ai);
enchantEntity(Spawn4, "Training", Ai);
Spawn5 = createEntity("Dwarven Warrior",10,7,Ai);
Spawn6 = createEntity("Dwarven Warrior",14,16,Ai);
Spawn7 = createEntity("War Blimp",14,5,Ai);
Spawn7.addTokens("attack",-5);
Spawn8 = createEntity("Glorn Airship",7,12,Neutral);
Spawn9 = createEntity("Gully Slingers",3,14,Neutral);
Spawn10 = createEntity("Gully Slingers",5,15,Neutral);
Spawn11 = createEntity("Gully Slingers",2,16,Neutral);
Spawn12 = createEntity("Gully Slingers",7,15,Neutral);

//Boss
Boss = createEntity("Epic Veteran",15,10,Ai);
enchantEntity(Boss, "Anti-Magic Shell", Ai);
Boss.addTokens("speed",-5);
Minion1 = createEntity("Craig Scout",13,12,Ai);
Minion1.addTokens("speed",-5);
Minion2 = createEntity("Tunnel Guide",16,9,Ai);
enchantEntity(Minion2, "Rune of shielding", Ai);
Minion2.addTokens("speed",-5);
Minion3 = createEntity("Apprentice Timesap",13,8,Ai);
Minion3.addTokens("speed",-5);

EBase = createEntity("Heart of the Mountain",16,11,Ai);
Object5 = createEntity("Hadarck's Fort",15,12,Ai);
Object6 = createEntity("Storm Factory",14,7,Ai);

//Undim enemy
callback = 1;
forEachEntity();

}

void mountainfolkEvents(){

}

void mountainfolkActions(Action action){

}

void ciLevel(){

}

void ciEvents(){

}

void ciActions(Action action){

}

void elementalLevel(){

}

void elementalEvents(){

}

void elementalActions(Action action){

}

void chaosLevel(){

}

void chaosEvents(){

}

void chaosActions(Action action){

}

void darklegionLevel(){

}

void darklegionEvents(){

}

void darklegionActions(Action action){

}

void sylvanMap(){
setTerrain(createLocation(16,0),3,2);
setTerrain(createLocation(15,0),3,2);
setTerrain(createLocation(14,0),3,2);
setTerrain(createLocation(13,0),3,2);
setTerrain(createLocation(12,0),3,2);
setTerrain(createLocation(11,0),3,2);
setTerrain(createLocation(10,0),4,2);
setTerrain(createLocation(9,0),4,2);
setTerrain(createLocation(8,0),4,2);
setTerrain(createLocation(7,0),4,2);
setTerrain(createLocation(6,0),4,2);
setTerrain(createLocation(5,0),4,3);
setTerrain(createLocation(4,0),3,3);
setTerrain(createLocation(3,0),3,3);
setTerrain(createLocation(2,0),3,3);
setTerrain(createLocation(1,0),5,3);
setTerrain(createLocation(0,0),5,3);
setTerrain(createLocation(16,1),3,2);
setTerrain(createLocation(15,1),3,2);
setTerrain(createLocation(14,1),1,1);
setTerrain(createLocation(13,1),3,2);
setTerrain(createLocation(12,1),3,2);
setTerrain(createLocation(11,1),3,2);
setTerrain(createLocation(10,1),4,2);
setTerrain(createLocation(9,1),4,2);
setTerrain(createLocation(8,1),4,2);
setTerrain(createLocation(7,1),4,2);
setTerrain(createLocation(6,1),4,3);
setTerrain(createLocation(5,1),3,3);
setTerrain(createLocation(4,1),3,3);
setTerrain(createLocation(3,1),3,3);
setTerrain(createLocation(2,1),3,3);
setTerrain(createLocation(1,1),3,3);
setTerrain(createLocation(0,1),5,3);
setTerrain(createLocation(16,2),3,2);
setTerrain(createLocation(15,2),1,1);
setTerrain(createLocation(14,2),1,1);
setTerrain(createLocation(13,2),1,1);
setTerrain(createLocation(12,2),3,2);
setTerrain(createLocation(11,2),3,2);
setTerrain(createLocation(10,2),3,2);
setTerrain(createLocation(9,2),4,2);
setTerrain(createLocation(8,2),4,2);
setTerrain(createLocation(7,2),4,3);
setTerrain(createLocation(6,2),4,3);
setTerrain(createLocation(5,2),3,3);
setTerrain(createLocation(4,2),5,3);
setTerrain(createLocation(3,2),5,3);
setTerrain(createLocation(2,2),5,3);
setTerrain(createLocation(1,2),3,3);
setTerrain(createLocation(0,2),3,3);
setTerrain(createLocation(16,3),3,2);
setTerrain(createLocation(15,3),3,2);
setTerrain(createLocation(14,3),3,2);
setTerrain(createLocation(13,3),1,1);
setTerrain(createLocation(12,3),3,2);
setTerrain(createLocation(11,3),3,2);
setTerrain(createLocation(10,3),3,2);
setTerrain(createLocation(9,3),4,2);
setTerrain(createLocation(8,3),4,2);
setTerrain(createLocation(7,3),4,2);
setTerrain(createLocation(6,3),4,3);
setTerrain(createLocation(5,3),4,3);
setTerrain(createLocation(4,3),3,3);
setTerrain(createLocation(3,3),5,3);
setTerrain(createLocation(2,3),3,3);
setTerrain(createLocation(1,3),5,3);
setTerrain(createLocation(0,3),3,3);
setTerrain(createLocation(16,4),1,1);
setTerrain(createLocation(15,4),3,2);
setTerrain(createLocation(14,4),3,2);
setTerrain(createLocation(13,4),3,2);
setTerrain(createLocation(12,4),3,2);
setTerrain(createLocation(11,4),3,2);
setTerrain(createLocation(10,4),3,3);
setTerrain(createLocation(9,4),3,3);
setTerrain(createLocation(8,4),4,2);
setTerrain(createLocation(7,4),4,2);
setTerrain(createLocation(6,4),4,3);
setTerrain(createLocation(5,4),3,3);
setTerrain(createLocation(4,4),3,3);
setTerrain(createLocation(3,4),3,3);
setTerrain(createLocation(2,4),3,3);
setTerrain(createLocation(1,4),3,3);
setTerrain(createLocation(0,4),5,3);
setTerrain(createLocation(16,5),1,1);
setTerrain(createLocation(15,5),3,2);
setTerrain(createLocation(14,5),3,2);
setTerrain(createLocation(13,5),3,2);
setTerrain(createLocation(12,5),3,2);
setTerrain(createLocation(11,5),3,2);
setTerrain(createLocation(10,5),3,3);
setTerrain(createLocation(9,5),3,3);
setTerrain(createLocation(8,5),3,3);
setTerrain(createLocation(7,5),4,3);
setTerrain(createLocation(6,5),3,3);
setTerrain(createLocation(5,5),3,3);
setTerrain(createLocation(4,5),3,3);
setTerrain(createLocation(3,5),3,3);
setTerrain(createLocation(2,5),3,3);
setTerrain(createLocation(1,5),1,1);
setTerrain(createLocation(0,5),3,3);
setTerrain(createLocation(16,6),3,2);
setTerrain(createLocation(15,6),3,2);
setTerrain(createLocation(14,6),3,2);
setTerrain(createLocation(13,6),3,2);
setTerrain(createLocation(12,6),3,2);
setTerrain(createLocation(11,6),3,3);
setTerrain(createLocation(10,6),3,3);
setTerrain(createLocation(9,6),3,3);
setTerrain(createLocation(8,6),3,3);
setTerrain(createLocation(7,6),3,3);
setTerrain(createLocation(6,6),3,3);
setTerrain(createLocation(5,6),3,3);
setTerrain(createLocation(4,6),3,3);
setTerrain(createLocation(3,6),3,3);
setTerrain(createLocation(2,6),1,1);
setTerrain(createLocation(1,6),1,1);
setTerrain(createLocation(0,6),3,3);
setTerrain(createLocation(16,7),3,2);
setTerrain(createLocation(15,7),3,2);
setTerrain(createLocation(14,7),3,3);
setTerrain(createLocation(13,7),3,3);
setTerrain(createLocation(12,7),3,2);
setTerrain(createLocation(11,7),3,3);
setTerrain(createLocation(10,7),3,3);
setTerrain(createLocation(9,7),3,3);
setTerrain(createLocation(8,7),3,3);
setTerrain(createLocation(7,7),3,3);
setTerrain(createLocation(6,7),3,3);
setTerrain(createLocation(5,7),3,3);
setTerrain(createLocation(4,7),3,3);
setTerrain(createLocation(3,7),1,1);
setTerrain(createLocation(2,7),1,1);
setTerrain(createLocation(1,7),1,1);
setTerrain(createLocation(0,7),3,3);
setTerrain(createLocation(16,8),3,3);
setTerrain(createLocation(15,8),3,3);
setTerrain(createLocation(14,8),3,3);
setTerrain(createLocation(13,8),3,3);
setTerrain(createLocation(12,8),3,3);
setTerrain(createLocation(11,8),3,3);
setTerrain(createLocation(10,8),3,3);
setTerrain(createLocation(9,8),3,3);
setTerrain(createLocation(8,8),3,3);
setTerrain(createLocation(7,8),3,3);
setTerrain(createLocation(6,8),3,3);
setTerrain(createLocation(5,8),3,3);
setTerrain(createLocation(4,8),3,3);
setTerrain(createLocation(3,8),1,1);
setTerrain(createLocation(2,8),1,1);
setTerrain(createLocation(1,8),1,1);
setTerrain(createLocation(0,8),3,3);
setTerrain(createLocation(16,9),3,3);
setTerrain(createLocation(15,9),3,1);
setTerrain(createLocation(14,9),3,3);
setTerrain(createLocation(13,9),3,3);
setTerrain(createLocation(12,9),3,3);
setTerrain(createLocation(11,9),3,3);
setTerrain(createLocation(10,9),3,3);
setTerrain(createLocation(9,9),3,3);
setTerrain(createLocation(8,9),1,1);
setTerrain(createLocation(7,9),1,1);
setTerrain(createLocation(6,9),3,3);
setTerrain(createLocation(5,9),3,3);
setTerrain(createLocation(4,9),3,3);
setTerrain(createLocation(3,9),3,3);
setTerrain(createLocation(2,9),1,1);
setTerrain(createLocation(1,9),3,3);
setTerrain(createLocation(0,9),3,3);
setTerrain(createLocation(16,10),3,1);
setTerrain(createLocation(15,10),3,1);
setTerrain(createLocation(14,10),3,3);
setTerrain(createLocation(13,10),3,3);
setTerrain(createLocation(12,10),3,3);
setTerrain(createLocation(11,10),3,3);
setTerrain(createLocation(10,10),3,3);
setTerrain(createLocation(9,10),3,3);
setTerrain(createLocation(8,10),3,1);
setTerrain(createLocation(7,10),3,1);
setTerrain(createLocation(6,10),3,1);
setTerrain(createLocation(5,10),3,3);
setTerrain(createLocation(4,10),3,3);
setTerrain(createLocation(3,10),3,3);
setTerrain(createLocation(2,10),3,3);
setTerrain(createLocation(1,10),3,3);
setTerrain(createLocation(0,10),3,3);
setTerrain(createLocation(16,11),3,1);
setTerrain(createLocation(15,11),3,1);
setTerrain(createLocation(14,11),3,3);
setTerrain(createLocation(13,11),3,3);
setTerrain(createLocation(12,11),3,3);
setTerrain(createLocation(11,11),3,3);
setTerrain(createLocation(10,11),3,3);
setTerrain(createLocation(9,11),3,3);
setTerrain(createLocation(8,11),3,3);
setTerrain(createLocation(7,11),3,1);
setTerrain(createLocation(6,11),3,1);
setTerrain(createLocation(5,11),3,1);
setTerrain(createLocation(4,11),3,3);
setTerrain(createLocation(3,11),3,3);
setTerrain(createLocation(2,11),3,3);
setTerrain(createLocation(1,11),3,3);
setTerrain(createLocation(0,11),3,3);
setTerrain(createLocation(16,12),3,3);
setTerrain(createLocation(15,12),3,3);
setTerrain(createLocation(14,12),3,3);
setTerrain(createLocation(13,12),3,3);
setTerrain(createLocation(12,12),3,3);
setTerrain(createLocation(11,12),3,3);
setTerrain(createLocation(10,12),1,1);
setTerrain(createLocation(9,12),1,1);
setTerrain(createLocation(8,12),3,3);
setTerrain(createLocation(7,12),3,3);
setTerrain(createLocation(6,12),3,3);
setTerrain(createLocation(5,12),1,1);
setTerrain(createLocation(4,12),1,1);
setTerrain(createLocation(3,12),3,3);
setTerrain(createLocation(2,12),3,3);
setTerrain(createLocation(1,12),3,3);
setTerrain(createLocation(0,12),3,3);
setTerrain(createLocation(16,13),2,2);
setTerrain(createLocation(15,13),3,3);
setTerrain(createLocation(14,13),3,3);
setTerrain(createLocation(13,13),3,3);
setTerrain(createLocation(12,13),3,3);
setTerrain(createLocation(11,13),3,3);
setTerrain(createLocation(10,13),1,1);
setTerrain(createLocation(9,13),1,1);
setTerrain(createLocation(8,13),1,1);
setTerrain(createLocation(7,13),3,3);
setTerrain(createLocation(6,13),3,3);
setTerrain(createLocation(5,13),3,3);
setTerrain(createLocation(4,13),1,1);
setTerrain(createLocation(3,13),3,3);
setTerrain(createLocation(2,13),3,3);
setTerrain(createLocation(1,13),3,3);
setTerrain(createLocation(0,13),2,3);
setTerrain(createLocation(16,14),2,2);
setTerrain(createLocation(15,14),2,2);
setTerrain(createLocation(14,14),2,2);
setTerrain(createLocation(13,14),3,3);
setTerrain(createLocation(12,14),3,3);
setTerrain(createLocation(11,14),3,3);
setTerrain(createLocation(10,14),3,3);
setTerrain(createLocation(9,14),1,1);
setTerrain(createLocation(8,14),3,3);
setTerrain(createLocation(7,14),3,3);
setTerrain(createLocation(6,14),3,3);
setTerrain(createLocation(5,14),3,3);
setTerrain(createLocation(4,14),3,3);
setTerrain(createLocation(3,14),3,3);
setTerrain(createLocation(2,14),2,3);
setTerrain(createLocation(1,14),2,3);
setTerrain(createLocation(0,14),2,3);
setTerrain(createLocation(16,15),2,2);
setTerrain(createLocation(15,15),2,2);
setTerrain(createLocation(14,15),1,1);
setTerrain(createLocation(13,15),2,2);
setTerrain(createLocation(12,15),3,3);
setTerrain(createLocation(11,15),3,3);
setTerrain(createLocation(10,15),3,3);
setTerrain(createLocation(9,15),3,3);
setTerrain(createLocation(8,15),3,3);
setTerrain(createLocation(7,15),3,3);
setTerrain(createLocation(6,15),3,3);
setTerrain(createLocation(5,15),3,3);
setTerrain(createLocation(4,15),3,3);
setTerrain(createLocation(3,15),2,3);
setTerrain(createLocation(2,15),2,3);
setTerrain(createLocation(1,15),2,3);
setTerrain(createLocation(0,15),2,3);
setTerrain(createLocation(16,16),2,2);
setTerrain(createLocation(15,16),2,2);
setTerrain(createLocation(14,16),2,2);
setTerrain(createLocation(13,16),2,2);
setTerrain(createLocation(12,16),1,1);
setTerrain(createLocation(11,16),3,3);
setTerrain(createLocation(10,16),3,3);
setTerrain(createLocation(9,16),3,3);
setTerrain(createLocation(8,16),3,3);
setTerrain(createLocation(7,16),3,3);
setTerrain(createLocation(6,16),3,3);
setTerrain(createLocation(5,16),3,3);
setTerrain(createLocation(4,16),3,3);
setTerrain(createLocation(3,16),3,3);
setTerrain(createLocation(2,16),2,3);
setTerrain(createLocation(1,16),2,3);
setTerrain(createLocation(0,16),2,3);
}

void mountainfolkMap(){
setTerrain(createLocation(16,0),3,2);
setTerrain(createLocation(15,0),3,2);
setTerrain(createLocation(14,0),3,2);
setTerrain(createLocation(13,0),1,1);
setTerrain(createLocation(12,0),1,1);
setTerrain(createLocation(11,0),1,1);
setTerrain(createLocation(10,0),3,2);
setTerrain(createLocation(9,0),3,2);
setTerrain(createLocation(8,0),3,2);
setTerrain(createLocation(7,0),3,3);
setTerrain(createLocation(6,0),3,2);
setTerrain(createLocation(5,0),3,3);
setTerrain(createLocation(4,0),3,2);
setTerrain(createLocation(3,0),3,2);
setTerrain(createLocation(2,0),5,3);
setTerrain(createLocation(1,0),1,1);
setTerrain(createLocation(0,0),1,1);
setTerrain(createLocation(16,1),3,2);
setTerrain(createLocation(15,1),3,2);
setTerrain(createLocation(14,1),3,2);
setTerrain(createLocation(13,1),3,2);
setTerrain(createLocation(12,1),1,1);
setTerrain(createLocation(11,1),3,2);
setTerrain(createLocation(10,1),3,2);
setTerrain(createLocation(9,1),3,2);
setTerrain(createLocation(8,1),3,2);
setTerrain(createLocation(7,1),3,2);
setTerrain(createLocation(6,1),3,2);
setTerrain(createLocation(5,1),3,2);
setTerrain(createLocation(4,1),3,2);
setTerrain(createLocation(3,1),3,3);
setTerrain(createLocation(2,1),1,1);
setTerrain(createLocation(1,1),5,3);
setTerrain(createLocation(0,1),1,1);
setTerrain(createLocation(16,2),5,2);
setTerrain(createLocation(15,2),3,2);
setTerrain(createLocation(14,2),3,2);
setTerrain(createLocation(13,2),3,2);
setTerrain(createLocation(12,2),3,2);
setTerrain(createLocation(11,2),1,1);
setTerrain(createLocation(10,2),3,2);
setTerrain(createLocation(9,2),3,2);
setTerrain(createLocation(8,2),3,2);
setTerrain(createLocation(7,2),3,2);
setTerrain(createLocation(6,2),3,2);
setTerrain(createLocation(5,2),3,2);
setTerrain(createLocation(4,2),4,1);
setTerrain(createLocation(3,2),3,2);
setTerrain(createLocation(2,2),5,3);
setTerrain(createLocation(1,2),3,2);
setTerrain(createLocation(0,2),5,3);
setTerrain(createLocation(16,3),5,2);
setTerrain(createLocation(15,3),5,2);
setTerrain(createLocation(14,3),1,1);
setTerrain(createLocation(13,3),4,2);
setTerrain(createLocation(12,3),3,2);
setTerrain(createLocation(11,3),3,2);
setTerrain(createLocation(10,3),3,2);
setTerrain(createLocation(9,3),3,2);
setTerrain(createLocation(8,3),3,2);
setTerrain(createLocation(7,3),3,2);
setTerrain(createLocation(6,3),3,2);
setTerrain(createLocation(5,3),3,2);
setTerrain(createLocation(4,3),4,1);
setTerrain(createLocation(3,3),4,1);
setTerrain(createLocation(2,3),4,1);
setTerrain(createLocation(1,3),3,3);
setTerrain(createLocation(0,3),3,3);
setTerrain(createLocation(16,4),1,1);
setTerrain(createLocation(15,4),5,2);
setTerrain(createLocation(14,4),1,1);
setTerrain(createLocation(13,4),4,2);
setTerrain(createLocation(12,4),4,2);
setTerrain(createLocation(11,4),3,2);
setTerrain(createLocation(10,4),4,1);
setTerrain(createLocation(9,4),3,2);
setTerrain(createLocation(8,4),4,1);
setTerrain(createLocation(7,4),4,1);
setTerrain(createLocation(6,4),4,1);
setTerrain(createLocation(5,4),4,1);
setTerrain(createLocation(4,4),4,1);
setTerrain(createLocation(3,4),4,1);
setTerrain(createLocation(2,4),4,1);
setTerrain(createLocation(1,4),5,3);
setTerrain(createLocation(0,4),3,3);
setTerrain(createLocation(16,5),5,2);
setTerrain(createLocation(15,5),1,1);
setTerrain(createLocation(14,5),5,2);
setTerrain(createLocation(13,5),5,2);
setTerrain(createLocation(12,5),4,2);
setTerrain(createLocation(11,5),4,1);
setTerrain(createLocation(10,5),4,1);
setTerrain(createLocation(9,5),4,1);
setTerrain(createLocation(8,5),3,2);
setTerrain(createLocation(7,5),4,1);
setTerrain(createLocation(6,5),4,1);
setTerrain(createLocation(5,5),4,1);
setTerrain(createLocation(4,5),4,1);
setTerrain(createLocation(3,5),4,1);
setTerrain(createLocation(2,5),5,3);
setTerrain(createLocation(1,5),5,3);
setTerrain(createLocation(0,5),3,3);
setTerrain(createLocation(16,6),1,1);
setTerrain(createLocation(15,6),5,2);
setTerrain(createLocation(14,6),5,2);
setTerrain(createLocation(13,6),5,2);
setTerrain(createLocation(12,6),4,2);
setTerrain(createLocation(11,6),4,1);
setTerrain(createLocation(10,6),4,1);
setTerrain(createLocation(9,6),3,2);
setTerrain(createLocation(8,6),3,2);
setTerrain(createLocation(7,6),4,1);
setTerrain(createLocation(6,6),4,1);
setTerrain(createLocation(5,6),4,1);
setTerrain(createLocation(4,6),4,1);
setTerrain(createLocation(3,6),4,1);
setTerrain(createLocation(2,6),4,1);
setTerrain(createLocation(1,6),5,3);
setTerrain(createLocation(0,6),3,3);
setTerrain(createLocation(16,7),1,1);
setTerrain(createLocation(15,7),5,2);
setTerrain(createLocation(14,7),5,2);
setTerrain(createLocation(13,7),5,2);
setTerrain(createLocation(12,7),4,2);
setTerrain(createLocation(11,7),4,1);
setTerrain(createLocation(10,7),4,1);
setTerrain(createLocation(9,7),3,2);
setTerrain(createLocation(8,7),3,2);
setTerrain(createLocation(7,7),4,1);
setTerrain(createLocation(6,7),4,1);
setTerrain(createLocation(5,7),4,1);
setTerrain(createLocation(4,7),4,1);
setTerrain(createLocation(3,7),4,1);
setTerrain(createLocation(2,7),5,3);
setTerrain(createLocation(1,7),3,3);
setTerrain(createLocation(0,7),3,3);
setTerrain(createLocation(16,8),5,2);
setTerrain(createLocation(15,8),5,2);
setTerrain(createLocation(14,8),1,1);
setTerrain(createLocation(13,8),5,2);
setTerrain(createLocation(12,8),5,2);
setTerrain(createLocation(11,8),4,1);
setTerrain(createLocation(10,8),4,1);
setTerrain(createLocation(9,8),4,1);
setTerrain(createLocation(8,8),4,1);
setTerrain(createLocation(7,8),3,2);
setTerrain(createLocation(6,8),4,1);
setTerrain(createLocation(5,8),4,1);
setTerrain(createLocation(4,8),4,1);
setTerrain(createLocation(3,8),4,1);
setTerrain(createLocation(2,8),4,1);
setTerrain(createLocation(1,8),5,3);
setTerrain(createLocation(0,8),3,3);
setTerrain(createLocation(16,9),5,2);
setTerrain(createLocation(15,9),5,2);
setTerrain(createLocation(14,9),5,2);
setTerrain(createLocation(13,9),5,2);
setTerrain(createLocation(12,9),4,2);
setTerrain(createLocation(11,9),4,1);
setTerrain(createLocation(10,9),4,1);
setTerrain(createLocation(9,9),4,1);
setTerrain(createLocation(8,9),4,1);
setTerrain(createLocation(7,9),4,1);
setTerrain(createLocation(6,9),3,2);
setTerrain(createLocation(5,9),4,1);
setTerrain(createLocation(4,9),4,1);
setTerrain(createLocation(3,9),4,1);
setTerrain(createLocation(2,9),4,1);
setTerrain(createLocation(1,9),5,3);
setTerrain(createLocation(0,9),5,3);
setTerrain(createLocation(16,10),5,2);
setTerrain(createLocation(15,10),5,2);
setTerrain(createLocation(14,10),5,2);
setTerrain(createLocation(13,10),5,2);
setTerrain(createLocation(12,10),5,2);
setTerrain(createLocation(11,10),4,1);
setTerrain(createLocation(10,10),4,1);
setTerrain(createLocation(9,10),4,1);
setTerrain(createLocation(8,10),4,1);
setTerrain(createLocation(7,10),4,1);
setTerrain(createLocation(6,10),4,1);
setTerrain(createLocation(5,10),4,1);
setTerrain(createLocation(4,10),4,1);
setTerrain(createLocation(3,10),4,1);
setTerrain(createLocation(2,10),5,3);
setTerrain(createLocation(1,10),2,3);
setTerrain(createLocation(0,10),3,3);
setTerrain(createLocation(16,11),5,2);
setTerrain(createLocation(15,11),5,2);
setTerrain(createLocation(14,11),5,2);
setTerrain(createLocation(13,11),4,2);
setTerrain(createLocation(12,11),4,2);
setTerrain(createLocation(11,11),5,2);
setTerrain(createLocation(10,11),4,1);
setTerrain(createLocation(9,11),4,1);
setTerrain(createLocation(8,11),4,1);
setTerrain(createLocation(7,11),4,1);
setTerrain(createLocation(6,11),4,1);
setTerrain(createLocation(5,11),4,1);
setTerrain(createLocation(4,11),4,1);
setTerrain(createLocation(3,11),4,1);
setTerrain(createLocation(2,11),2,3);
setTerrain(createLocation(1,11),2,3);
setTerrain(createLocation(0,11),2,3);
setTerrain(createLocation(16,12),5,2);
setTerrain(createLocation(15,12),5,2);
setTerrain(createLocation(14,12),5,2);
setTerrain(createLocation(13,12),5,2);
setTerrain(createLocation(12,12),5,2);
setTerrain(createLocation(11,12),4,2);
setTerrain(createLocation(10,12),2,3);
setTerrain(createLocation(9,12),2,3);
setTerrain(createLocation(8,12),4,1);
setTerrain(createLocation(7,12),4,1);
setTerrain(createLocation(6,12),2,1);
setTerrain(createLocation(5,12),4,1);
setTerrain(createLocation(4,12),1,1);
setTerrain(createLocation(3,12),2,3);
setTerrain(createLocation(2,12),5,3);
setTerrain(createLocation(1,12),5,3);
setTerrain(createLocation(0,12),2,3);
setTerrain(createLocation(16,13),3,1);
setTerrain(createLocation(15,13),5,2);
setTerrain(createLocation(14,13),5,2);
setTerrain(createLocation(13,13),3,3);
setTerrain(createLocation(12,13),5,1);
setTerrain(createLocation(11,13),2,3);
setTerrain(createLocation(10,13),2,3);
setTerrain(createLocation(9,13),2,3);
setTerrain(createLocation(8,13),4,1);
setTerrain(createLocation(7,13),4,1);
setTerrain(createLocation(6,13),2,1);
setTerrain(createLocation(5,13),2,2);
setTerrain(createLocation(4,13),2,1);
setTerrain(createLocation(3,13),1,1);
setTerrain(createLocation(2,13),5,3);
setTerrain(createLocation(1,13),1,1);
setTerrain(createLocation(0,13),5,3);
setTerrain(createLocation(16,14),5,2);
setTerrain(createLocation(15,14),3,1);
setTerrain(createLocation(14,14),5,2);
setTerrain(createLocation(13,14),5,1);
setTerrain(createLocation(12,14),5,1);
setTerrain(createLocation(11,14),5,1);
setTerrain(createLocation(10,14),2,3);
setTerrain(createLocation(9,14),2,3);
setTerrain(createLocation(8,14),2,3);
setTerrain(createLocation(7,14),2,3);
setTerrain(createLocation(6,14),2,1);
setTerrain(createLocation(5,14),2,1);
setTerrain(createLocation(4,14),2,2);
setTerrain(createLocation(3,14),2,1);
setTerrain(createLocation(2,14),5,3);
setTerrain(createLocation(1,14),1,1);
setTerrain(createLocation(0,14),1,1);
setTerrain(createLocation(16,15),3,1);
setTerrain(createLocation(15,15),5,1);
setTerrain(createLocation(14,15),3,1);
setTerrain(createLocation(13,15),3,1);
setTerrain(createLocation(12,15),5,1);
setTerrain(createLocation(11,15),5,1);
setTerrain(createLocation(10,15),5,1);
setTerrain(createLocation(9,15),5,1);
setTerrain(createLocation(8,15),2,3);
setTerrain(createLocation(7,15),2,1);
setTerrain(createLocation(6,15),2,1);
setTerrain(createLocation(5,15),2,2);
setTerrain(createLocation(4,15),2,1);
setTerrain(createLocation(3,15),2,1);
setTerrain(createLocation(2,15),2,2);
setTerrain(createLocation(1,15),1,1);
setTerrain(createLocation(0,15),1,1);
setTerrain(createLocation(16,16),5,1);
setTerrain(createLocation(15,16),3,1);
setTerrain(createLocation(14,16),5,1);
setTerrain(createLocation(13,16),3,1);
setTerrain(createLocation(12,16),3,1);
setTerrain(createLocation(11,16),5,1);
setTerrain(createLocation(10,16),5,1);
setTerrain(createLocation(9,16),2,3);
setTerrain(createLocation(8,16),2,1);
setTerrain(createLocation(7,16),2,2);
setTerrain(createLocation(6,16),2,1);
setTerrain(createLocation(5,16),2,1);
setTerrain(createLocation(4,16),2,1);
setTerrain(createLocation(3,16),2,2);
setTerrain(createLocation(2,16),2,1);
setTerrain(createLocation(1,16),5,3);
setTerrain(createLocation(0,16),5,3);
}

bool entityCallback(Entity ent){
if (callback == 0){
//remove corpses and ruins
if (ent.isType(5) == true){
ent.remove();}
}
else{ent.setDim(false);}
return true;
}