#include "colors.inc"
#include "stones.inc"
           
#declare TriCut =
difference
{
	box
	{
		<-5, -5, -5>, <5, 5, 5>
	}
	box
	{
		<-10, -10, -10>, <10, 10, 10>
		rotate y*45        
		translate <5*sqrt(2), 0, 5*sqrt(2)>
	}                  
	
	translate <5, 0, 5>
	rotate -x*90
	rotate -z*135
}

#declare TriCutRound =
merge
{
	object
	{
		TriCut
	}
	
	cylinder
	{
		<0, -1, 0>, <0, -1, -5>
		1
	}
}

#declare HillEnd =
merge
{
	cone
	{
		<0, 5, 0> 1
		<0, 0, 0> 5*sqrt(2)
	}
	
	sphere
	{
		<0, 4.2, 0> 1.3
	}
}

#declare Hill =
merge
{       
	object
	{
		HillEnd	
		scale y*sqrt(1.7)
		translate <0, -5*sqrt(2), 5>
	}
	
	object
	{
		TriCutRound
	}
	
	object
	{
		HillEnd
		scale y*sqrt(1.7)
		translate <0, -5*sqrt(2), -5>
	}
}
   
#declare FortWall1 =
merge
{
	box
	{
		<0, 0, 0>, <15, 20, 3>
	}
	
	box
	{
		<0, 20, 0>, <3, 22, 3>
	}
	
	box
	{
		<6, 20, 0>, <9, 22, 3>
	}
	
	box
	{
		<12, 20, 0>, <15, 22, 3>
	}
}

#declare FortWall2 =
difference
{
	object
	{
		FortWall1
	}
	
	box
	{
		<3, 15, -1>, <6, 17, 4>
	}
	
	box
	{
		<9, 15, -1>, <12, 17, 4>
	}
}

#declare BattleFort =
merge
{
	object
	{
		FortWall2
	}
	
	object
	{
		FortWall2
		rotate -y*90
	}
	
	object
	{
		FortWall2
	
		translate <0, 0, 12>
	}
	
	object
	{
		FortWall2
		rotate -y*90
		translate <18, 0, 0>
	}
}

#declare Wall1 =
merge
{
	box
	{
		<0, 0, 0>, <6, 12, 2>
	}
	
	box
	{
		<0, 12, 0>, <3, 13, 2>
	}
}

#declare Wall2 =
merge
{
	object
	{
		Wall1
	}
	
	box
	{
		<0, 0, 2>, <6, 9, 10>
	}
	
	object
	{
		Wall1
		translate <0, 0, 10>
	}
}

#declare Wall4 =
merge
{
	object
	{
		Wall2
	}
	
	object
	{
		Wall2
		translate <6, -1, 0>
	}
	
	object
	{
		Wall2
		translate <12, -2, 0>
	}
	
	object
	{
		Wall2
		translate <18, -3, 0>
	}
	
	object
	{
		Wall2
		translate <24, -4, 0>
	}
	
	object
	{
		Wall2
		translate <30, -5, 0>
	}
		                     
	object
	{
		Wall2
		translate <36, -6, 0>
	}
	
	object
	{
		Wall2
		translate <42, -7, 0>
	}
	
	object
	{
		Wall2
		translate <48, -8, 0>
	}
	
	object
	{
		Wall2
		translate <54, -9, 0>
	}
	
	object
	{
		Wall2
		translate <60, -10, 0>
	}
}

	
#declare Wall3 =
merge
{
	object
	{
		Wall2
	}
	
	object
	{
		Wall2
		translate <6, -1, 0>
	}
	
	object
	{
		Wall2
		translate <12, -0.7, 0>
	}
	
	object
	{
		Wall2
		translate <18, -0.5, 0>
	}
	
	object
	{
		Wall2
		translate <24, -0.3, 0>
	}
	
	object
	{
		Wall2
		translate <30, 0, 0>
	}
	
	object
	{
		Wall2
		translate <36, 0, 0>
	}
	
	object
	{
		Wall2
		translate <42, .3, 0>
	}
	
	object
	{
		Wall2
		translate <48, .5, 0>
	}
	      
	object
	{
		Wall2
		translate <54, .7, 0>
	}
	
	object
	{
		Wall2
		translate <60, .5, 0>
	}
	
	object
	{
		Wall2
		translate <66, .3, 0>
	}
	
	object
	{
		Wall2
		translate <72, 0, 0>
	}
	
	object
	{
		Wall2
		translate <78, -0.2, 0>
	}
	
	object
	{
		Wall2
		translate <84, -0.2, 0>
	}
	
	object
	{
		Wall2
		translate <90, -0.1, 0>
	}
	
	object
	{
		Wall2
		translate <96, 0, 0>
	}
	
	object
	{
		Wall2
		translate <102, .1, 0>
	}
	
	object
	{
		Wall2
		translate <108, .2, 0>
	}
	
	object
	{
		Wall2
		translate <114, .3, 0>
	}

	object
	{
		Wall2
		translate <120, .3, 0>
	}
	
	object
	{
		Wall2
		translate <126, 0, 0>
	}

	object
	{
		Wall2
		translate <132, -.5, 0>
	}

	object
	{
		Wall2
		translate <138, -1, 0>
	}

	object
	{
		Wall2
		translate <144, -1.5, 0>
	}

	object
	{
		Wall2
		translate <150, -2, 0>
	}              
	
	object
	{
		Wall2
		translate <156, -2.5, 0>
	}

	object
	{
		Wall2
		translate <162, -3, 0>
	}

	object
	{
		Wall2
		translate <168, -3.5, 0>
	}

	object
	{
		Wall2
		translate <174, -4, 0>
	}

	object
	{
		Wall2
		rotate y*20
		translate <180, -4.5, 0>
	}
	
	object
	{
		Wall2
		rotate y*40
		translate <cos(0.349)*6+180, -5, -sin(.349)*6>
	} 
	
	object
	{
		Wall2
		rotate y*60
		translate <cos(.6981)*6+cos(.349)*6+180, -7, -sin(.6981)*6-sin(.349)*6>
	}

	object
	{
		Wall2
		rotate y*80
		translate <(cos(1.0471)+cos(.6981)+cos(.349))*6+180, -9, (-sin(1.0471)-sin(.6981)-sin(.349))*6>
	}
	
	object
	{
		Wall2
		rotate y*100
		translate <(cos(1.3963)+cos(1.0471)+cos(.6981)+cos(.349))*6+180, -11, (-sin(1.3963)-sin(1.0471)-sin(.6981)-sin(.349))*6>
	}
	
	object
	{
		Wall2
		rotate y*120
		translate <(cos(1.7453)+cos(1.3963)+cos(1.0471)+cos(.6981)+cos(.349))*6+180, -13, (-sin(1.7453)-sin(1.3963)-sin(1.0471)-sin(.6981)-sin(.349))*6>
	}
	
	object
	{
		Wall4
		scale x*.3
		rotate -z*8
		rotate y*120
		translate <(cos(2.0944)+cos(1.7453)+cos(1.3963)+cos(1.0471)+cos(.6981)+cos(.349))*6+180, -13, (-sin(2.0944)-sin(1.7453)-sin(1.3963)-sin(1.0471)-sin(.6981)-sin(.349))*6 + 3>
	}
	
}

	
light_source
{
	<-100, 100, -30> White
}
light_source
{
	<-100, 100, -30> Red*2
}

camera
{
	location <-100, 5, -70>
	look_at <0, 10, -40>
	angle 90
}

object
{
	Wall3
	scale x*0.4
	scale y*0.9	
	rotate y*90
	translate <-6, -2, 0>
	
	texture
	{
		T_Stone1
		scale 2
	}
/*	
	finish
	{
		crand .1
	}
	 */
}
    
plane
{
	<0, 1, 0>, -25
	pigment
	{
		bozo

      	colour_map
         {
         [.7   colour rgb <0.50, .50, .40>   ]
         [.7   colour rgb <1, .4, .2>   ]
         [.999 colour rgb <.4, .53, .20>   ]
         [1.01 colour rgb <.53, .11, .11> ]
         }

      turbulence 1
      scale 9
      translate 100*x
      }

   finish { crand .1 }
}


object
{
	Hill
	
	scale x*10
	scale z*10
	scale y*4
	translate <0, 0, -10>
//	rotate -y*45
	
	pigment
	{
		bozo

      	colour_map
         {
         [.7   colour rgb <0.30, .30, .20>   ]
         [.7   colour rgb <1, .4, .2>   ]
         [.999 colour rgb <.4, .53, .20>   ]
         [1.01 colour rgb <.53, .11, .11> ]
         }

      turbulence 1
      scale 9
      translate 100*x
      }

   finish { crand .1 }
}

object
{
	BattleFort      
//	rotate y*180	
	translate<-8, -5, 0>

	texture
	{
		T_Stone1
		scale 2
	}
	
	finish
	{
		crand .1
	}
	
}

sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.50  color Blue]
      [1.00  color MidnightBlue]
    }
    scale 2
    translate <-1, -1, -1>
  }
  pigment {
    bozo
    turbulence 0.6
    octaves 7
    omega .49876
    lambda 2.5432
    color_map {
      [0.0 color rgbf<.8, .7, .7, 0.1>]
      [0.4 color rgbf<.9, .9, .9, .9>]
      [0.7 color rgbf<1, 1, 1, 1>]
    }
    scale 6/10
    scale <1, 0.3, 0.3>
  }
  pigment {
    bozo
    turbulence 0.6
    octaves 8
    omega .5123
    lambda 2.56578
    color_map {
      [0.0 color rgbf<.375, .375, .375, 0.2>]
      [0.4 color rgbf<.45, .45, .45, .9>]
      [0.6 color rgbf<0.5, 0.5, 0.5, 1>]
    }
    scale 6/10
    scale <1, 0.3, 0.3>
  }
}