If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Dragon Rage/Source Code

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Dragon Rage.

Found in nearly every folder on the game disc are files that when opened in a text editor contain the following: .ICE - Scripts written in what appears to be a proprietary scripting language called, you guessed it, ice. .POI - A list of the actors in each level, followed by what is likely (According to some of the ICE files) the xyz positions and rotations of said actor. .PMF - XML file giving the x and y locations of "pads" (event triggers) and another unknown set of coordinates. .CML - An XML like file in a script called "Castle". Same as a POI but apparently for destroyable keeps and wall parts.

..\TECH\DATA\AMBUSH\AMBUSH.ICE

	include "../scripts/dtypes.ice"
	include "../scripts/dlightning.ice"

	constant enum VOICE_OVERS
	{
		VO_ADARAINTRO,
		VO_MULTIWARD,
		VO_RESCUEDSPRITE,
		VO_DEADFACTORY,
		VO_AMBUSH,
		VO_LEAVECITY,
		VO_DARKWARD,
		VO_MANDEKTAUNT,
		VO_FINDKEY,
		VO_GRABKEY,
		VO_WARDGONE,
		VO_LEVELWIN,
		VO_LEVELLOSE
	}

//	fVO_Player( VO_LEVELLOSE)

	create xyz dStartLoc
	create xyz dEndLoc
	create xyz gTempLoc
	create float dStartOffset
	create float dEndOffset



// Variables Daryl needs
// Daryl: I do? :-)
	create ObjHandle gModelHandle
	create ObjHandle gCave1TroopAHandle
	create ObjHandle gCave1TroopBHandle
	create ObjHandle gCave1TroopCHandle
	create ObjHandle gCave2TroopAHandle
	create ObjHandle gCave2TroopBHandle
	create ObjHandle gCave2TroopCHandle
	create ObjHandle gCave3TroopAHandle
	create ObjHandle gCave3TroopBHandle
	create ObjHandle gCave3TroopCHandle
	create ObjHandle gCave4TroopAHandle
	create ObjHandle gCave4TroopBHandle
	create ObjHandle gCave4TroopCHandle
	create ObjHandle gCave5TroopAHandle
	create ObjHandle gCave5TroopBHandle
	create ObjHandle gCave5TroopCHandle
	create ObjHandle gDocksTroopAHandle
	create ObjHandle gDocksTroopBHandle
	create ObjHandle gDocksTroopCHandle
	create ObjHandle gGalleonHandle
	create ObjHandle gEarthWardGeneratorHandle

	create integer gIsMultiWardAlive = FALSE
	create integer gIsPlantAlive = TRUE
	create integer gIsKeyAlive = FALSE
	create integer gGateVOs = FALSE
	create integer gAmbushVOs = FALSE
	create integer gIsStaticGalleonAlive = FALSE
	create integer gCave1Start = FALSE
	create integer gCave2Start = FALSE
	create integer gCave3Start = FALSE
	create integer gCave4Start = FALSE
	create integer gCave5Start = FALSE
	create integer gCave1 = 12
	create integer gCave2 = 12
	create integer gCave3 = 12
	create integer gCave4 = 12
	create integer gCave5 = 12
	create integer gDocks = 10
	create integer gNewTroop
	create integer gAmbushCount
	create integer gBuildingCount
	create integer gPreKeyCount
	create integer gKeyCount
	create integer gGemCount
	create integer gExitMarker
	create integer gGotUpgrade = FALSE
	create integer gEndGame = FALSE
	create integer gWagonCount

	create ObjHandle gDarkWardAnchorHandle
	create ObjHandle gDarkWagonHandle
	create ObjHandle gAdaraHandle
	create ObjHandle gSprite1Handle
	create ObjHandle gExitRockHandle

	create xyz gLocation
	create xyz gOrientation = (0, 0, 0)
	create xyz tempLoc
	create xyz gEmergencyKeyLoc = (106.4, 56.6, -3)

	create float gDragonDistance
	create xyz gGemLoc

	create ObjHandle gDarkKeyHandle

	
	//---------------------------------------------------
	// Function declarations
	//---------------------------------------------------

	FUNCTION fInitModels()
	{
			//Main Gate

		fDWardCreatePOI(EARTH, "FireWardGeneratorPoi", 9.0, 15.0)
		set gEarthWardGeneratorHandle = dModelHandle

		GetPoiLoc("OrcTowerOctid4x2600Poi", gTempLoc)
		fDShrineCreateLoc(gTempLoc)

		AddObjectPOISnap(gModelHandle, "MountedArcher", "GateDefender1Poi")
		AddObjectPOISnap(gModelHandle, "MountedArcher", "GateDefender2Poi")
		AddObjectPOISnap(gModelHandle, "MountedArcher", "GateDefender3Poi")

		AddObjectPOISnap(gModelHandle, "Archer", "DistrictADefender1Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictADefender2Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictADefender3Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictADefender4Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictADefender5Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictADefender6Poi")
	
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "DistrictBDefender1Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictBDefender2Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "DistrictBDefender3Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictBDefender4Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "DistrictBDefender5Poi")
			
		AddObjectPOISnap(gModelHandle, "MountedArcher", "CavalryGroup1Poi")
		AddObjectPOISnap(gModelHandle, "MountedArcher", "CavalryGroup2Poi")
		AddObjectPOISnap(gModelHandle, "MountedArcher", "CavalryGroup3Poi")

		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender1Poi")
		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender2Poi")
		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender3Poi")
		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender4Poi")
		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender5Poi")
		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender6Poi")
		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender7Poi")
		AddObjectPOISnap(gModelHandle, "Skirmisher", "PlantDefender8Poi")

		AddObjectPOI(gModelHandle, "KeepOctStone", "SpriteBuildingPoi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtBonusSprite)

		AddObjectPOI(gModelHandle, "HouseLowerClassB", "MoreTown1Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "MoreTown2Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "MoreTown3Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "MoreTown4Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "Tavern", "MoreTown5Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)

		AddObjectPOI(gModelHandle, "Tavern", "Tavern1Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "Tavern", "Tavern2Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "Tavern", "Tavern3Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "Tavern", "Tavern4Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "Tavern", "Tavern5Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)

		AddObjectPOI(gModelHandle, "KeepOctStone", "GreatHallid52x106Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)

		AddObjectPOI(gModelHandle, "KeepOctStone", "GreatHallid53x280Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)

		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid54x830Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseCountryA", "HouseLowerClassBid55x840Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid56x870Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid57x830Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseCountryA", "HouseLowerClassBid58x850Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid59x870Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid60x830Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid61x850Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseCountryA", "HouseLowerClassBid62x760Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseCountryA", "HouseLowerClassBid63x780Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid64x760Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid65x780Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid66x760Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid67x780Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid68x220Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid69x240Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseCountryA", "HouseLowerClassBid70x220Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseCountryA", "HouseLowerClassBid71x230Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid72x210Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid73x240Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid74x220Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid75x230Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid76x260Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid77x260Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapultid87x610Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapultid88x660Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapultid89x720Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapultid90x280Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapultid91x330Poi")

		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid1x8100Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid2x7900Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "HouseLowerClassBid3x7700Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "Ballistaid5x7500Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "Ballistaid6x7300Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "Ballistaid7x7100Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "Ballistaid8x7000Poi")
		AddObjectPOISnap(gModelHandle, "Windmill", "Windmillid49x570Poi")
		AddObjectPOISnap(gModelHandle, "Windmill", "Windmillid50x610Poi")
		AddObjectPOISnap(gModelHandle, "Windmill", "Windmillid51x630Poi")

		AddObjectPOISnap(gModelHandle, "Catapult", "Catapult1Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapult2Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapult3Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapult4Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapult5Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapult6Poi")
		AddObjectPOISnap(gModelHandle, "Catapult", "Catapult7Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "EarthMonk1Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "EarthMonk2Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "EarthMonk3Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "EarthMonk4Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "EarthMonk5Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "EarthMonk6Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "EarthMonk7Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "EarthMonk8Poi")
		AddObjectPOISnap(gModelHandle, "Archer", "EarthMonk9Poi")
		AddObjectPOISnap(gModelHandle, "MonkEarthM", "EarthMonk10Poi")

		AddObjectPOI(gModelHandle, "HouseMiddleClassA", "MidClass1Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseMiddleClassA", "MidClass2Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseMiddleClassA", "MidClass3Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseMiddleClassA", "MidClass4Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		AddObjectPOI(gModelHandle, "HouseMiddleClassA", "MidClass5Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadBuilding)
		
		AddObjectPOI(gModelHandle, "SuperGalleonDamaged", "StaticGalleon1Poi")
		SetHitPOInts(gModelHandle, 2000)
		SetDragonSight(gModelHandle, 0)
	}

	FUNCTION fVO_Player (integer whichVO)
	{
		select whichVO
			case VO_ADARAINTRO
			BEGIN
				VoiceOverPlay ( VO_13ad096 )
//				IceDisplay( "The Orcs are hurting, but they've got one Zeenium factory left.  I think it's time you paid them a visit. \n")
			END
			case VO_MULTIWARD
			BEGIN
				VoiceOverPlay ( VO_13ad097 )
//				IceDisplay( "The Orcs just put up Wards all around you.  Something doesn't feel right. \n")
			END
			case VO_RESCUEDSPRITE
			BEGIN
				VoiceOverPlay ( VO_grs005 )
//				IceDisplay( "Thank you for rescuing me. \n")
			END
			case VO_DEADFACTORY
			BEGIN
				VoiceOverPlay ( VO_gnad145 )
//				IceDisplay( "Good job. \n")
			END
			case VO_AMBUSH
			BEGIN
				VoiceOverPlay ( VO_13mk007 )
//				IceDisplay( "Surprise, lizard.  You shall not be underestimated this time. \n")
			END
			case VO_LEAVECITY
			BEGIN
				VoiceOverPlay ( VO_13ad098 )
//				IceDisplay( "It's an ambush!  Orcs everywhere!  You've got to get out of here! . \n")
			END
			case VO_DARKWARD
			BEGIN
				VoiceOverPlay ( VO_13ad099 )
//				IceDisplay( "They sealed the gate!  \n")
			END
			case VO_MANDEKTAUNT
			BEGIN
				VoiceOverPlay ( VO_13mk008 )
//				IceDisplay( "Ha, ha, ha, ha...ha, ha ha ha, ha ha.  Numb miss...No mistakes this time! \n")
			END
			case VO_FINDKEY
			BEGIN
				VoiceOverPlay ( VO_13ad100 )
//				IceDisplay( "There's got to be a Dark Key somewhere in this city; Orcs always keep one around.  Keep blowing up buildings until you find it! \n")
			END
			case VO_GRABKEY
			BEGIN
				VoiceOverPlay ( VO_13ad101 )
//				IceDisplay( "There it is, grab it and get out of here! \n")
			END
			case VO_WARDGONE
			BEGIN
				if ( gGotUpgrade == TRUE ) then
				BEGIN
					VoiceOverPlay ( VO_GNAD150 )
//					IceDisplay( "Fly into the glowing sphere... \n")
				END
				else
				BEGIN
					VoiceOverPlay ( VO_gnad135 )
//					IceDisplay( "Well Done! \n")
				END
			END
			case VO_LEVELWIN
			BEGIN
				VoiceOverPlay ( VO_13ad102 )
//				IceDisplay( "Cael, I love what you've done with the place, but we barely escaped the ambush and Mandek's troops are right behind us.  Why do I get the feeling you're enjoying yourself? \n")
			END
			case VO_LEVELLOSE
			BEGIN
				VoiceOverPlay ( VO_13mk009 )
//				IceDisplay( "Tonight we feast!  Roast Dragon for all! \n")
			END
			default
			BEGIN
				EXIT
//				IceDisplay( "Why am I here?  What is the meaning of Ice? \n")
			END

		EXIT
	}

	FUNCTION fCave1Spawn()
	{
		set gNewTroop = Random(3)
		if (gNewTroop == 0) then
		BEGIN
//			IceDisplay ("..................Cave1 Mounted Archer!!! \n")
			AddObjectPOISnap(gCave1TroopAHandle, "ArcherMounted", "Cave1SpawnPoi")
			SetBehaviorPatrol(gCave1TroopAHandle, "Cave1Path", PATH_ONEWAY_FORWARD)
			AssignTeamID(gCave1TroopAHandle, 0101)
			set gCave1 = gCave1 - 1
		END
		else if (gNewTroop == 1) then
		BEGIN
//			IceDisplay ("..................Cave1 Wizard!!! \n")
			AddObjectPOI(gCave1TroopBHandle, "MonkWaterA", "Cave1SpawnPoi")
			fAdjustHeightUp( gCave1TroopBHandle, 1.7 )
			//SetObjIceHandler(gCave1TroopBHandle, ICEOBJHANDLER_DEATH, evtCave1Dead)
			SetBehaviorPatrol(gCave1TroopBHandle, "Cave1Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave1TroopBHandle, 0103)
			set gCave1 = gCave1 - 3
		END
		ELSE //if (gNewTroop == 2) then
		BEGIN
//			IceDisplay ("..................Cave1 War Machine!!! \n")
			AddObjectPOISnap(gCave1TroopCHandle, "Catapult", "Cave1SpawnPoi")
//			AddObjectPOI(gCave1TroopCHandle, "Ballista", "Cave1SpawnPoi")
			//SetObjIceHandler(gCave1TroopCHandle, ICEOBJHANDLER_DEATH, evtCave1Dead)
			SetBehaviorPatrol(gCave1TroopCHandle, "Cave1Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave1TroopCHandle, 0103)
			set gCave1 = gCave1 - 3
		END

		EXIT
	}

	FUNCTION fCave2Spawn()
	{
		set gNewTroop = Random(3)
		if (gNewTroop == 0) then
		BEGIN
//		IceDisplay ("..................Cave2 Mounted Archer!!! \n")
			AddObjectPOISnap(gCave2TroopAHandle, "ArcherMounted", "Cave2SpawnPoi")
			//SetObjIceHandler(gCave2TroopAHandle, ICEOBJHANDLER_DEATH, evtCave2Dead)
			SetBehaviorPatrol(gCave2TroopAHandle, "Cave2Path", PATH_ONEWAY_FORWARD)
			AssignTeamID(gCave2TroopAHandle, 0201)
			set gCave2 = gCave2 - 1
		END
		else if (gNewTroop == 1) then
		BEGIN
//			IceDisplay ("..................Cave2 Wizard!!! \n")
			AddObjectPOISnap(gCave2TroopBHandle, "MonkAirM", "Cave2SpawnPoi")
			//SetObjIceHandler(gCave2TroopBHandle, ICEOBJHANDLER_DEATH, evtCave2Dead)
			SetBehaviorPatrol(gCave2TroopBHandle, "Cave2Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave2TroopBHandle, 0202)
			set gCave2 = gCave2 - 2
		END
		ELSE //if (gNewTroop == 2) then
		BEGIN
//			IceDisplay ("..................Cave2 War Machine!!! \n")
			AddObjectPOISnap(gCave2TroopCHandle, "Catapult", "Cave2SpawnPoi")
			//SetObjIceHandler(gCave2TroopCHandle, ICEOBJHANDLER_DEATH, evtCave2Dead)
			SetBehaviorPatrol(gCave2TroopCHandle, "Cave2Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave2TroopCHandle, 0203)
			set gCave2 = gCave2 - 3
		END

		EXIT
	}

	FUNCTION fCave3Spawn()
	{
		set gNewTroop = Random(3)
		if (gNewTroop == 0) then
		BEGIN
//			IceDisplay ("..................Cave3 Mounted Archer!!! \n")
			AddObjectPOISnap(gCave3TroopAHandle, "ArcherMounted", "Cave3SpawnPoi")
			//SetObjIceHandler(gCave3TroopAHandle, ICEOBJHANDLER_DEATH, evtCave3Dead)
			SetBehaviorPatrol(gCave3TroopAHandle, "Cave3Path", PATH_ONEWAY_FORWARD)
			AssignTeamID(gCave3TroopAHandle, 0301)
			set gCave3 = gCave3 - 1
		END
		else if (gNewTroop == 1) then
		BEGIN
//			IceDisplay ("..................Cave3 Wizard!!! \n")
			AddObjectPOISnap(gCave3TroopBHandle, "ArcherMounted", "Cave3SpawnPoi")
			//SetObjIceHandler(gCave3TroopBHandle, ICEOBJHANDLER_DEATH, evtCave3Dead)
			SetBehaviorPatrol(gCave3TroopBHandle, "Cave3Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave3TroopBHandle, 0302)
			set gCave3 = gCave3 - 2
		END
		ELSE //if (gNewTroop == 2) then
		BEGIN
//			IceDisplay ("..................Cave3 War Machine!!! \n")
			AddObjectPOISnap(gCave3TroopCHandle, "Catapult", "Cave3SpawnPoi")
			//SetObjIceHandler(gCave3TroopCHandle, ICEOBJHANDLER_DEATH, evtCave3Dead)
			SetBehaviorPatrol(gCave3TroopCHandle, "Cave3Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave3TroopCHandle, 0303)
			set gCave3 = gCave3 - 3
		END

		EXIT
	}

	FUNCTION fCave4Spawn()
	{
		set gNewTroop = Random(3)
		if (gNewTroop == 0) then
		BEGIN
//			IceDisplay ("..................Cave4 Mounted Archer!!! \n")
			AddObjectPOISnap(gCave4TroopAHandle, "ArcherMounted", "Cave4SpawnPoi")
			//SetObjIceHandler(gCave4TroopAHandle, ICEOBJHANDLER_DEATH, evtCave4Dead)
			SetBehaviorPatrol(gCave4TroopAHandle, "Cave4Path", PATH_ONEWAY_FORWARD)
			AssignTeamID(gCave4TroopAHandle, 0401)
			set gCave4 = gCave4 - 1
		END
		else if (gNewTroop == 1) then
		BEGIN
//			IceDisplay ("..................Cave4 Wizard!!! \n")
			AddObjectPOI(gCave4TroopBHandle, "MonkWaterA", "Cave4SpawnPoi")
			fAdjustHeightUp( gCave4TroopBHandle, 1.7 )
			//SetObjIceHandler(gCave4TroopBHandle, ICEOBJHANDLER_DEATH, evtCave4Dead)
			SetBehaviorPatrol(gCave4TroopBHandle, "Cave4Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave4TroopBHandle, 0403)
			set gCave4 = gCave4 - 3
		END
		ELSE //if (gNewTroop == 2) then
		BEGIN
//			IceDisplay ("..................Cave4 War Machine!!! \n")
			AddObjectPOISnap(gCave4TroopCHandle, "Catapult", "Cave4SpawnPoi")
//			AddObjectPOI(gCave4TroopCHandle, "Ballista", "Cave4SpawnPoi")
			//SetObjIceHandler(gCave4TroopCHandle, ICEOBJHANDLER_DEATH, evtCave4Dead)
			SetBehaviorPatrol(gCave4TroopCHandle, "Cave4Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave4TroopCHandle, 0403)
			set gCave4 = gCave4 - 3
		END

		EXIT
	}

	FUNCTION fCave5Spawn()
	{
		set gNewTroop = Random(3)
		if (gNewTroop == 0) then
		BEGIN
//			IceDisplay ("..................Cave5 Mounted Archer!!! \n")
			AddObjectPOISnap(gCave5TroopAHandle, "ArcherMounted", "Cave5SpawnPoi")
			//SetObjIceHandler(gCave5TroopAHandle, ICEOBJHANDLER_DEATH, evtCave5Dead)
			SetBehaviorPatrol(gCave5TroopAHandle, "Cave5Path", PATH_ONEWAY_FORWARD)
			AssignTeamID(gCave5TroopAHandle, 0501)
			set gCave5 = gCave5 - 1
		END
		else if (gNewTroop == 1) then
		BEGIN
//			IceDisplay ("..................Cave5 Wizard!!! \n")
			AddObjectPOISnap(gCave5TroopBHandle, "MonkAirM", "Cave5SpawnPoi")
			//SetObjIceHandler(gCave5TroopBHandle, ICEOBJHANDLER_DEATH, evtCave5Dead)
			SetBehaviorPatrol(gCave5TroopBHandle, "Cave5Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave5TroopBHandle, 0502)
			set gCave5 = gCave5 - 2
		END
		ELSE //if (gNewTroop == 2) then
		BEGIN
//			IceDisplay ("..................Cave5 War Machine!!! \n")
			AddObjectPOISnap(gCave5TroopCHandle, "Catapult", "Cave5SpawnPoi")
			//SetObjIceHandler(gCave5TroopCHandle, ICEOBJHANDLER_DEATH, evtCave5Dead)
			SetBehaviorPatrol(gCave5TroopCHandle, "Cave5Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gCave5TroopCHandle, 0503)
			set gCave5 = gCave5 - 3
		END

		EXIT
	}

	FUNCTION fDocksSpawn()
	{
		set gNewTroop = Random(2)
		if (gNewTroop == 0) then
		BEGIN
//			IceDisplay ("..................Docks Caravel!!! \n")
			AddObjectPOI(gDocksTroopAHandle, "Caravel", "OceanSpawnPoi")
			//SetObjIceHandler(gDocksTroopAHandle, ICEOBJHANDLER_DEATH, evtDocksDead)
			SetBehaviorPatrol(gDocksTroopAHandle, "DocksPath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gDocksTroopAHandle, 0602)
			set gDocks = gDocks - 2
		END
		ELSE //if (gNewTroop == 1) then
		BEGIN
//			IceDisplay ("..................Docks Galleon!!! \n")
			AddObjectPOI(gDocksTroopBHandle, "Galleon", "OceanSpawnPoi")
			//SetObjIceHandler(gDocksTroopBHandle, ICEOBJHANDLER_DEATH, evtDocksDead)
			SetBehaviorPatrol(gDocksTroopBHandle, "DocksPath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID(gDocksTroopBHandle, 0603)
			set gDocks = gDocks - 3
		END

		EXIT
	}


	// this function takes the point at which you want the lightning to start...
	// ...and the point at which you want the lightning to strike...
	// ...then offsets them within the range you provide via dStartOffset and dEndOffset
	FUNCTION fSetLightningLocs()
	{
		create integer dTemp

		set dTemp = Random(2)
		if (dTemp == 0) then
		BEGIN
			set dStartLoc^x = dStartLoc^x + dStartOffset
		END
		ELSE //if (dTemp == 1) then
		BEGIN
			set dStartLoc^x = dStartLoc^x - dStartOffset
		END

		set dTemp = Random(2)
		if (dTemp == 0) then
		BEGIN
			set dStartLoc^y = dStartLoc^y + dStartOffset
		END
		ELSE //if (dTemp == 1) then
		BEGIN
			set dStartLoc^y = dStartLoc^y - dStartOffset
		END

		set dTemp = Random(2)
		if (dTemp == 0) then
		BEGIN
			set dEndLoc^x = dEndLoc^x + dEndOffset
		END
		ELSE //if (dTemp == 1) then
		BEGIN
			set dEndLoc^x = dEndLoc^x - dEndOffset
		END

		set dTemp = Random(2)
		if (dTemp == 0) then
		BEGIN
			set dEndLoc^y = dEndLoc^y + dEndOffset
		END
		ELSE //if (dTemp == 1) then
		BEGIN
			set dEndLoc^y = dEndLoc^y - dEndOffset
		END

		EXIT
	}

// // // // // // // // // // // //
//
// // // // // // // // // // // //
//	Events begin here
// // // // // // // // // // // //
//
// // // // // // // // // // // //
	ONCE ANYOF(initializeScripts) 
	(void void)
	{
//		IceDisplay ("..................initializeScripts \n")
		fInitDaryl(5, AMBUSH)
					
		fInitModels()

		//Main Gate

		HudRadarEnable (DRAGON1)

		AddObjectPOI(gModelHandle, "ZeeniumFactory", "ProcessingPlantPoi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadPlant)
		SetHitPOInts(gModelHandle, 3300)
		fDRadarObj (PRIMARY, gModelHandle)

		Trigger(evtEricsLightning)
		Trigger(evtWagons)
 
	}

	ONCE ANYOF( evtLevelBegin )
	{
		AddObjectPoi( gAdaraHandle, "Adara", "Dragon1_Start") // Adara Created
		TriggerPulse(500, evtSpriteFollowCael, gAdaraHandle)
	}

	ANYOF (evtWagons)
	(void void)
	{
		if (gWagonCount < 3) then
		BEGIN
			AddObjectPOISnap(gModelHandle, "WagonStandard", "Cave4SpawnPoi")
			SetBehaviorPatrol(gModelHandle, "WagonPath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			SetMovementSpeed(gModelHandle, 0.8)
			SetDragonSight(gModelHandle, 0)
			SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtRandomGem)
			SetObjIceHandler(gModelHandle, ICEOBJHANDLER_PAD, evtWagonPad)
			set gWagonCount = gWagonCount + 1
			TriggerDelay (3*SECOND, evtWagons)
		END
	}

	ANYOF(evtWagonPad)
	(integer whoGUID string padName)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		if (StringsEqual(padName,"WagonPad") == TRUE) then
		BEGIN	
			RemoveObject (who)
			set gWagonCount = gWagonCount - 1
			if (gWagonCount == 0) then
			BEGIN
				TriggerDelay (10*SECOND, evtWagons)
			END
		END
	}

	ANYOF(evtRandomGem)
	(integer whoGUID integer killerGUID)
	{
		create objhandle who
			
		if (gGemCount < 20) then
		BEGIN
			GUIDtoObjHandle(whoGUID, who)
			GetObjLocation (who, gTempLoc)
			set gTempLoc^z = gTempLoc^z + 0.6

			fDGemCreateLoc (Random(4), gTempLoc)	// DGems.ice has changed to allow all attempts to create gems
			set gGemCount = gGemCount + 1
		END

		set gWagonCount = gWagonCount - 1 
		if (gWagonCount == 0) then
		BEGIN
			TriggerDelay (15*SECOND, evtWagons)
		END
	}

	ANYOF(evtGemDied)
	(void void)
	{
		set gGemCount = gGemCount - 1
	} 

	ONCE ANYOF(evtBonusSprite) 
	(integer whoGUID integer killerGUID)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		GetObjLocation (who, gTempLoc)
		AddObjectLOC(gSprite1Handle, "SpriteFire", gTempLoc, gOrientation)
		TriggerPulse( 1000, evtSpriteFlutter, gSprite1Handle )
		TriggerDelay(10*SECOND, evtKillSprites)

//		IceDisplay ("............Thank you for freeing me!!! \n")
		fVO_Player( VO_RESCUEDSPRITE)
		if (fDCanDragonUpgrade() >= 0) then
		BEGIN
//			IceDisplay ("............Upgrades!!! \n")
			set gGotUpgrade = TRUE
		END
		ELSE if (fDCanDragonUpgrade() < 0) then
		BEGIN
//			IceDisplay ("............Cows!!! \n")
			AddObjectPOISnap(gModelHandle, "Cow", "Cow1Poi")
			AddObjectPOISnap(gModelHandle, "Cow", "Cow2Poi")
			AddObjectPOISnap(gModelHandle, "Cow", "Cow3Poi")
			AddObjectPOISnap(gModelHandle, "Cow", "Cow4Poi")
			AddObjectPOISnap(gModelHandle, "Cow", "Cow5Poi")
		END
	}

	ANYOF( evtSpriteFlutter )
	( ObjHandle who )
	{
		create xyz newLoc

		set newLoc^x = gTempLoc^x + float(Random(5)) - float(Random(5))
		set newLoc^y = gTempLoc^y + float(Random(5)) - float(Random(5))
		set newLoc^z = gTempLoc^z + float(Random(5)) - float(Random(5))

		SetBehaviorGoTo( who, newLoc )
	}

	ONCE ANYOF(evtKillSprites)
	(void void)
	{
		RemoveObject(gSprite1Handle)
	}


	ONCE ANYOF(evtDeadPlant)
	(integer whoGUID integer killerGUID)
	{
		create xyz tempLoc
		create integer tempInt
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		GetPoiLoc("Bonanza1Poi", gTempLoc)
		set gTempLoc^z = gTempLoc^z + 1.0
		fDGemCreateLoc(Random(4), gTempLoc)
		GetPoiLoc("Bonanza2Poi", gTempLoc)
		set gTempLoc^z = gTempLoc^z + 1.0
		fDGemCreateLoc(Random(4), gTempLoc)
		GetPoiLoc("Bonanza3Poi", gTempLoc)
		set gTempLoc^z = gTempLoc^z + 1.0
		fDGemCreateLoc(Random(4), gTempLoc)

		KillObject (gEarthWardGeneratorHandle)
		fVO_Player( VO_DEADFACTORY )
		AddObjectPoi(gExitRockHandle, "BoulderMedA", "AdaraPoi")
		set gExitMarker = fDRadarObj( PRIMARY, gExitRockHandle)
		set gIsPlantAlive = FALSE
		AddObjectPOISnap(gDarkWagonHandle, "WagonStandard", "DarkWardGeneratorPoi")
		SetHitPOInts(gDarkWagonHandle, 5000)
		Trigger(evtAmbush)
		TriggerDelay(8*SECOND, evtAmbush)
		TriggerDelay(16*SECOND, evtAmbush)
	}

	ANYOF(evtAmbush)
	(void void)
	{
//		IceDisplay ("..................Wave!!! \n")
			
		fCave1Spawn()
		AddObjectPOISnap(gModelHandle, "Archer", "Cave1SpawnPoi")
		SetBehaviorPatrol(gModelHandle, "Cave1Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		AddObjectPOISnap(gModelHandle, "ArcherMounted", "Cave1SpawnPoi")
		SetBehaviorPatrol(gModelHandle, "Cave1Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		fCave2Spawn()
		AddObjectPOISnap(gModelHandle, "Archer", "Cave2SpawnPoi")
		SetBehaviorPatrol(gModelHandle, "Cave2Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		AddObjectPOISnap(gModelHandle, "ArcherMounted", "Cave2SpawnPoi")
		SetBehaviorPatrol(gModelHandle, "Cave2Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		fCave3Spawn()
		AddObjectPOISnap(gModelHandle, "ArcherMounted", "Cave3SpawnPoi")
		SetBehaviorPatrol(gModelHandle, "Cave3Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		fCave4Spawn()
		AddObjectPOISnap(gModelHandle, "Archer", "Cave4SpawnPoi")
		SetBehaviorPatrol(gModelHandle, "Cave4Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		fCave5Spawn()
		AddObjectPOISnap(gModelHandle, "ArcherMounted", "Cave5SpawnPoi")
		SetBehaviorPatrol(gModelHandle, "Cave5Path", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		fDocksSpawn()
	}


	ANYOF(evtDeadBuilding)
	(integer whoGUID integer killerGUID)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		set gBuildingCount = gBuildingCount + 1
//		IceDisplay ("..................DeadBuilding \n")
		if ((gGateVOs == TRUE) AND (gIsKeyAlive == FALSE)) then
		BEGIN
			set gPreKeyCount = gPreKeyCount + 1
			set gKeyCount = Random(38)
			if (((gKeyCount <= gBuildingCount) AND (gPreKeyCount > 4)) OR (gBuildingCount >= 41)) then //if keycount is within the range of buildingcount
			BEGIN
				set gIsKeyAlive = TRUE
				GetObjLocation (who, gGemLoc)
				set gGemLoc^z = gGemLoc^z + 1.0
				AddObjectLOC(gDarkKeyHandle, "DarkKey", gGemLoc, gOrientation)
				fDRadarObj( PRIMARY, gDarkKeyHandle)
				MakeWardKey(gDarkKeyHandle)
				fVO_Player( VO_GRABKEY)
				//fAdaraVO( VO_GRABKEY, 5000 )
			END
		END
	}

	ONCE ANYOF (evtItemAquired) 
	(integer playerNum integer itemType)
	{
		set gExitMarker = fDRadarObj( PRIMARY, gExitRockHandle)
		if (gGotUpgrade == TRUE) then
		BEGIN
			fDUpgradeCreate()
		END
	}

	ONCE ANYOF (evtItemReleased) 
	(integer playerNum integer itemType)
	{
		UnTrigger(evtSpriteFollowCael)
		GetPoiLoc( "AdaraPoi", gTempLoc )
		TriggerPulse( 1000, evtSpriteFlutter, gAdaraHandle )
		SetNeverSleepFlag( gAdaraHandle )
		fVO_Player( VO_WARDGONE)
	}


	ANYOF(evtDragonPad)
	(integer whoGUID string padName)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		if ((StringsEqual(padName,"MultiWardPad") == TRUE) AND (gIsMultiWardAlive == FALSE)) then
		BEGIN
			fDWardCreatePOI(EARTH, "MultiWardPoi", 12.0, 19.0)
			fDWardCreatePOI(FIRE, "MultiWardPoi", 10.0, 19.0)
			set gIsMultiWardAlive = TRUE
			fVO_Player( VO_MULTIWARD)
			//fAdaraVO( VO_MULTIWARD, 10000 )
		END
		ELSE if ((StringsEqual(padName,"AmbushVOPad") == TRUE) AND (gIsPlantAlive == FALSE) AND (gAmbushVOs == FALSE))  then
		BEGIN
			fVO_Player( VO_AMBUSH)
			fVO_Player( VO_LEAVECITY)
			//fAdaraVO( VO_LEAVECITY, 10000 )
			set gAmbushVOs = TRUE
		END
		ELSE if ((StringsEqual(padName,"MainGatePad") == TRUE) AND (gGateVOs == FALSE))  then
		BEGIN
			if (gIsPlantAlive == FALSE) then
			BEGIN
				KillObject (gDarkWagonHandle)
				fDWardCreatePOI(DARK, "DarkWardGeneratorPoi", 10.0, 14.0)
				set gExitMarker = fDRadarObj( SECONDARY, gExitRockHandle)
				fVO_Player( VO_DARKWARD)
				//fAdaraVO( VO_DARKWARD, 14000 )
				fVO_Player( VO_MANDEKTAUNT)
				fVO_Player( VO_FINDKEY)
				set gEndGame = TRUE
				set gGateVOs = TRUE
				if (gBuildingCount == 44) then
				BEGIN
					AddObjectLOC(gDarkKeyHandle, "DarkKey", gEmergencyKeyLoc, gOrientation)
					SetObjIceHandler(gDarkKeyHandle, ICEOBJHANDLER_DEATH, evtDarkKey)
					fDRadarObj( PRIMARY, gDarkKeyHandle)
					MakeWardKey(gDarkKeyHandle)
				END
			END
		END
		ELSE if ((StringsEqual(padName,"EndPad") == TRUE) AND (gEndGame == TRUE) AND (gGotUpgrade == FALSE)) then
		BEGIN
			fAltEnd(WIN)
//			IceDisplay(".................End Pad!!! \n")
		END
	}

	// Cave 1 death.
	ANYOF(evtObjDiedTeam1)
	(integer theInt void)
	{
		set gCave1 = gCave1 + theInt

		TriggerDelay(3*SECOND, evtRespawnCave1 )

		if (gCave1Start == FALSE) then
		BEGIN
			TriggerDelay( 180*SECOND, evtCave1Dead)
			set gCave1Start = TRUE
		END
	}

	ANYOF( evtRespawnCave1 )
	{
		while (gCave1 > 3)
		BEGIN
			fCave1Spawn()
		END
	}

	ONCE ANYOF( evtCave1Dead )
	{
		set gCave1 = -99
	}

	// Cave 2 death.
	ANYOF(evtObjDiedTeam2)
	(integer theInt void)
	{
		set gCave2 = gCave2 + theInt

		TriggerDelay(3*SECOND, evtRespawnCave2 )

		if (gCave2Start == FALSE) then
		BEGIN
			TriggerDelay( 180*SECOND, evtCave2Dead)
			set gCave2Start = TRUE
		END
	}

	ANYOF( evtRespawnCave2 )
	{
		while (gCave2 > 3)
		BEGIN
			fCave2Spawn()
		END
	}

	ONCE ANYOF( evtCave2Dead )
	{
		set gCave2 = -99
	}

	// Cave 3 death.
	ANYOF(evtObjDiedTeam3)
	(integer theInt void)
	{
		set gCave3 = gCave3 + theInt

		TriggerDelay(3*SECOND, evtRespawnCave3 )

		if (gCave3Start == FALSE) then
		BEGIN
			TriggerDelay( 180*SECOND, evtCave3Dead)
			set gCave3Start = TRUE
		END
	}

	ANYOF( evtRespawnCave3 )
	{
		while (gCave3 > 3) 
		BEGIN
			fCave3Spawn()
		END
	}

	ONCE ANYOF( evtCave3Dead )
	{
		set gCave3 = -99
	}

	// Cave 4 death.
	ANYOF(evtObjDiedTeam4)
	(integer theInt void)
	{
		set gCave4 = gCave4 + theInt

		TriggerDelay(3*SECOND, evtRespawnCave4 )

		if (gCave4Start == FALSE) then
		BEGIN
			TriggerDelay( 180*SECOND, evtCave4Dead)
			set gCave4Start = TRUE
		END
	}

	ANYOF( evtRespawnCave4 )
	{
		while (gCave4 > 3)
		BEGIN
			fCave4Spawn()
		END
	}

	ONCE ANYOF( evtCave4Dead )
	{
		set gCave4 = -99
	}

	// Cave 5 death.
	ANYOF(evtObjDiedTeam5)
	(integer theInt void)
	{
		set gCave5 = gCave5 + theInt

		TriggerDelay(3*SECOND, evtRespawnCave5 )

		if (gCave5Start == FALSE) then
		BEGIN
			TriggerDelay( 180*SECOND, evtCave5Dead)
			set gCave5Start = TRUE
		END
	}

	ANYOF( evtRespawnCave5 )
	{
		while (gCave5 > 3)
		BEGIN
			fCave5Spawn()
		END
	}

	ONCE ANYOF( evtCave5Dead )
	{
		set gCave5 = -99
	}

	// Docks death.
	ANYOF(evtObjDiedTeam6)
	(integer theInt void)
	{
		set gDocks = gDocks + theInt

		TriggerDelay(3*SECOND, evtDocksRespawn )
	}

	ANYOF( evtDocksRespawn )
	{
		while (gDocks > 3)
		BEGIN
			fDocksSpawn()
		END
	}

ANYOF(evtEricsLightning)
(void void)
{
	create integer dTemp
//	//IceDisplay("evtEricsLightning\n")
	//
	// choose an area
	//

	set dTemp = Random(9) //number of active areas

	select dTemp
	case 0
	BEGIN
//		//IceDisplay("location choice 0 \n")
		set dEndLoc = (44.0, 114.4, 2.8)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 5.0
		set dEndOffset = 0.0
	END
	case 1
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (50.9, 114.5, 2.9)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 10.0
		set dEndOffset = 0.0
	END
	case 2
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (56.9, 112.4, 2.7)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 10.0
		set dEndOffset = 0.0
	END
	case 3
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (58.9, 107.9, 3.0)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 10.0
		set dEndOffset = 0.0
	END
	case 4
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (59.0, 103.5, 3.8)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 10.0
		set dEndOffset = 0.0
	END
	case 5
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (41.7, 110.3, 0.9)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 5.0
		set dEndOffset = 0.0
	END
	case 6
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (51.9, 109.9, 0.8)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 5.0
		set dEndOffset = 0.0
	END
	case 7
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (54.9, 101.4, 1.1)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 10.0
		set dEndOffset = 0.0
	END
	case 8
	BEGIN
//		//IceDisplay("location choice 1 \n")
		set dEndLoc = (59.0, 103.5, 1.0)
		set dStartLoc = dEndLoc
		set dStartLoc^z = dStartLoc^z + 10.0
		set dStartOffset = 5.0
		set dEndOffset = 0.0
	END
	default
	BEGIN
		EXIT
//		IceDisplay("sdfbweberbzsdrrbzwegewzbwerwgwebrwr \n")
	END

	fSetLightningLocs()

	//
	// choose type of bolt to shoot in that area
	//

	set dTemp = Random(3)
	select dTemp
	case 0
	BEGIN
//		//IceDisplay("Config choice 0 \n")
		set dLparam1 = ELIGHTNING_EFFECT_OPTION_THICK // choose one of (ELIGHTNING_EFFECT_OPTION_THICK, ELIGHTNING_EFFECT_OPTION_THIN)
		set dLparam2 = ELIGHTNING_EFFECT_OPTION_BRANCH // choose one of (ELIGHTNING_EFFECT_OPTION_BOLT, ELIGHTNING_EFFECT_OPTION_SHAFT, ELIGHTNING_EFFECT_OPTION_BRANCH)
		set dLparam3 = ELIGHTNING_EFFECT_OPTION_COLD // choose one of (ELIGHTNING_EFFECT_OPTION_HOT, ELIGHTNING_EFFECT_OPTION_WARM, ELIGHTNING_EFFECT_OPTION_COOL, ELIGHTNING_EFFECT_OPTION_COLD, ELIGHTNING_EFFECT_OPTION_FROZEN)
		set dLparam4 = ELIGHTNING_EFFECT_OPTION_END_SPOT + ELIGHTNING_EFFECT_OPTION_START_SPOT + ELIGHTNING_EFFECT_OPTION_FADE // choose any combination of (ELIGHTNING_EFFECT_OPTION_START_SPOT, ELIGHTNING_EFFECT_OPTION_END_SPOT, ELIGHTNING_EFFECT_OPTION_FADE, ELIGHTNING_EFFECT_OPTION_GROW)
		//
		// launch the bolt at the chosen location in the chosen area
		//
		CreateLightning(dStartLoc, dEndLoc, dLparam1+dLparam2+dLparam3+dLparam4, FLOAT(Random(700))*0.001)

		set dLparam1 = ELIGHTNING_EFFECT_OPTION_THICK // choose one of (ELIGHTNING_EFFECT_OPTION_THICK, ELIGHTNING_EFFECT_OPTION_THIN)
		set dLparam2 = ELIGHTNING_EFFECT_OPTION_BOLT // choose one of (ELIGHTNING_EFFECT_OPTION_BOLT, ELIGHTNING_EFFECT_OPTION_SHAFT, ELIGHTNING_EFFECT_OPTION_BRANCH)
		set dLparam3 = ELIGHTNING_EFFECT_OPTION_COLD // choose one of (ELIGHTNING_EFFECT_OPTION_HOT, ELIGHTNING_EFFECT_OPTION_WARM, ELIGHTNING_EFFECT_OPTION_COOL, ELIGHTNING_EFFECT_OPTION_COLD, ELIGHTNING_EFFECT_OPTION_FROZEN)
		set dLparam4 = ELIGHTNING_EFFECT_OPTION_END_SPOT + ELIGHTNING_EFFECT_OPTION_START_SPOT + ELIGHTNING_EFFECT_OPTION_FADE // choose any combination of (ELIGHTNING_EFFECT_OPTION_START_SPOT, ELIGHTNING_EFFECT_OPTION_END_SPOT, ELIGHTNING_EFFECT_OPTION_FADE, ELIGHTNING_EFFECT_OPTION_GROW)
		//
		// launch the bolt at the chosen location in the chosen area
		//
		CreateLightning(dStartLoc, dEndLoc, dLparam1+dLparam2+dLparam3+dLparam4, FLOAT(Random(600))*0.001)
	END
	case 1
	BEGIN
//		//IceDisplay("Config choice 1 \n")
		set dLparam1 = ELIGHTNING_EFFECT_OPTION_THICK // choose one of (ELIGHTNING_EFFECT_OPTION_THICK, ELIGHTNING_EFFECT_OPTION_THIN)
		set dLparam2 = ELIGHTNING_EFFECT_OPTION_BRANCH // choose one of (ELIGHTNING_EFFECT_OPTION_BOLT, ELIGHTNING_EFFECT_OPTION_SHAFT, ELIGHTNING_EFFECT_OPTION_BRANCH)
		set dLparam3 = ELIGHTNING_EFFECT_OPTION_COLD // choose one of (ELIGHTNING_EFFECT_OPTION_HOT, ELIGHTNING_EFFECT_OPTION_WARM, ELIGHTNING_EFFECT_OPTION_COOL, ELIGHTNING_EFFECT_OPTION_COLD, ELIGHTNING_EFFECT_OPTION_FROZEN)
		set dLparam4 = ELIGHTNING_EFFECT_OPTION_END_SPOT + ELIGHTNING_EFFECT_OPTION_START_SPOT // choose any combination of (ELIGHTNING_EFFECT_OPTION_START_SPOT, ELIGHTNING_EFFECT_OPTION_END_SPOT, ELIGHTNING_EFFECT_OPTION_FADE, ELIGHTNING_EFFECT_OPTION_GROW)
		//
		// launch the bolt at the chosen location in the chosen area
		//
		CreateLightning(dStartLoc, dEndLoc, dLparam1+dLparam2+dLparam3+dLparam4, FLOAT(Random(600))*0.001)

		set dLparam1 = ELIGHTNING_EFFECT_OPTION_THICK // choose one of (ELIGHTNING_EFFECT_OPTION_THICK, ELIGHTNING_EFFECT_OPTION_THIN)
		set dLparam2 = ELIGHTNING_EFFECT_OPTION_BOLT // choose one of (ELIGHTNING_EFFECT_OPTION_BOLT, ELIGHTNING_EFFECT_OPTION_SHAFT, ELIGHTNING_EFFECT_OPTION_BRANCH)
		set dLparam3 = ELIGHTNING_EFFECT_OPTION_COLD // choose one of (ELIGHTNING_EFFECT_OPTION_HOT, ELIGHTNING_EFFECT_OPTION_WARM, ELIGHTNING_EFFECT_OPTION_COOL, ELIGHTNING_EFFECT_OPTION_COLD, ELIGHTNING_EFFECT_OPTION_FROZEN)
		set dLparam4 = ELIGHTNING_EFFECT_OPTION_END_SPOT + ELIGHTNING_EFFECT_OPTION_START_SPOT // choose any combination of (ELIGHTNING_EFFECT_OPTION_START_SPOT, ELIGHTNING_EFFECT_OPTION_END_SPOT, ELIGHTNING_EFFECT_OPTION_FADE, ELIGHTNING_EFFECT_OPTION_GROW)
		//
		// launch the bolt at the chosen location in the chosen area
		//
		CreateLightning(dStartLoc, dEndLoc, dLparam1+dLparam2+dLparam3+dLparam4, FLOAT(Random(500))*0.001)

		set dLparam1 = ELIGHTNING_EFFECT_OPTION_THICK // choose one of (ELIGHTNING_EFFECT_OPTION_THICK, ELIGHTNING_EFFECT_OPTION_THIN)
		set dLparam2 = ELIGHTNING_EFFECT_OPTION_BOLT // choose one of (ELIGHTNING_EFFECT_OPTION_BOLT, ELIGHTNING_EFFECT_OPTION_SHAFT, ELIGHTNING_EFFECT_OPTION_BRANCH)
		set dLparam3 = ELIGHTNING_EFFECT_OPTION_COLD // choose one of (ELIGHTNING_EFFECT_OPTION_HOT, ELIGHTNING_EFFECT_OPTION_WARM, ELIGHTNING_EFFECT_OPTION_COOL, ELIGHTNING_EFFECT_OPTION_COLD, ELIGHTNING_EFFECT_OPTION_FROZEN)
		set dLparam4 = ELIGHTNING_EFFECT_OPTION_END_SPOT + ELIGHTNING_EFFECT_OPTION_START_SPOT // choose any combination of (ELIGHTNING_EFFECT_OPTION_START_SPOT, ELIGHTNING_EFFECT_OPTION_END_SPOT, ELIGHTNING_EFFECT_OPTION_FADE, ELIGHTNING_EFFECT_OPTION_GROW)
		//
		// launch the bolt at the chosen location in the chosen area
		//
		CreateLightning(dStartLoc, dEndLoc, dLparam1+dLparam2+dLparam3+dLparam4, FLOAT(Random(500))*0.001)
	END
	case 2
	BEGIN
//		//IceDisplay("Config choice 2 \n")
		set dLparam1 = ELIGHTNING_EFFECT_OPTION_THIN // choose one of (ELIGHTNING_EFFECT_OPTION_THICK, ELIGHTNING_EFFECT_OPTION_THIN)
		set dLparam2 = ELIGHTNING_EFFECT_OPTION_BOLT // choose one of (ELIGHTNING_EFFECT_OPTION_BOLT, ELIGHTNING_EFFECT_OPTION_SHAFT, ELIGHTNING_EFFECT_OPTION_BRANCH)
		set dLparam3 = ELIGHTNING_EFFECT_OPTION_COLD // choose one of (ELIGHTNING_EFFECT_OPTION_HOT, ELIGHTNING_EFFECT_OPTION_WARM, ELIGHTNING_EFFECT_OPTION_COOL, ELIGHTNING_EFFECT_OPTION_COLD, ELIGHTNING_EFFECT_OPTION_FROZEN)
		set dLparam4 = ELIGHTNING_EFFECT_OPTION_END_SPOT + ELIGHTNING_EFFECT_OPTION_START_SPOT // choose any combination of (ELIGHTNING_EFFECT_OPTION_START_SPOT, ELIGHTNING_EFFECT_OPTION_END_SPOT, ELIGHTNING_EFFECT_OPTION_FADE, ELIGHTNING_EFFECT_OPTION_GROW)
		//
		// launch the bolt at the chosen location in the chosen area
		//
		CreateLightning(dStartLoc, dEndLoc, dLparam1+dLparam2+dLparam3+dLparam4, FLOAT(Random(500))*0.001)

		set dLparam1 = ELIGHTNING_EFFECT_OPTION_THIN // choose one of (ELIGHTNING_EFFECT_OPTION_THICK, ELIGHTNING_EFFECT_OPTION_THIN)
		set dLparam2 = ELIGHTNING_EFFECT_OPTION_BOLT // choose one of (ELIGHTNING_EFFECT_OPTION_BOLT, ELIGHTNING_EFFECT_OPTION_SHAFT, ELIGHTNING_EFFECT_OPTION_BRANCH)
		set dLparam3 = ELIGHTNING_EFFECT_OPTION_COLD // choose one of (ELIGHTNING_EFFECT_OPTION_HOT, ELIGHTNING_EFFECT_OPTION_WARM, ELIGHTNING_EFFECT_OPTION_COOL, ELIGHTNING_EFFECT_OPTION_COLD, ELIGHTNING_EFFECT_OPTION_FROZEN)
		set dLparam4 = ELIGHTNING_EFFECT_OPTION_END_SPOT + ELIGHTNING_EFFECT_OPTION_START_SPOT // choose any combination of (ELIGHTNING_EFFECT_OPTION_START_SPOT, ELIGHTNING_EFFECT_OPTION_END_SPOT, ELIGHTNING_EFFECT_OPTION_FADE, ELIGHTNING_EFFECT_OPTION_GROW)
		//
		// launch the bolt at the chosen location in the chosen area
		//
		CreateLightning(dStartLoc, dEndLoc, dLparam1+dLparam2+dLparam3+dLparam4, FLOAT(Random(400))*0.001)
	END
	default
	BEGIN
		EXIT
//		IceDisplay("!!!!!!!!!    you have two few cases in your select statment \n")
	END
	
	BEGIN
		if (gIsPlantAlive == TRUE) then
		BEGIN
			TriggerDelay(Random(900)+200, evtEricsLightning)
//			//IceDisplay("reTriggering evtEricsLightning \n")
		END
	END
}

..\TECH\DATA\AMBUSH\AMBUSH.CML

<CASTLE version="1" >
	<KEEP name="AssaultTurretWaterT" id="0" x="100.222229" y="56.666668" z="0.000000" yaw="1.505000" pitch="0.000000" roll="0.000000" />
	<KEEP name="AssaultTurretWaterT" id="1" x="23.888889" y="47.777779" z="0.000000" yaw="-0.915000" pitch="0.000000" roll="0.000000" />
	<KEEP name="AssaultTurretWaterT" id="2" x="35.666664" y="52.222225" z="0.000000" yaw="-0.215000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="3" x="82.313133" y="48.313129" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="KeepOctStone" id="4" x="82.000000" y="37.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="5" x="90.000000" y="89.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="6" x="82.000000" y="98.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="7" x="90.888893" y="61.666668" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="KeepOctStone" id="8" x="18.181818" y="81.909096" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="9" x="41.006050" y="103.709099" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="10" x="42.090908" y="106.090912" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="11" x="11.363636" y="68.363640" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="12" x="17.818182" y="74.636360" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="13" x="24.454544" y="74.818176" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="14" x="28.000000" y="72.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="15" x="13.929293" y="77.909088" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="AssaultTurretFireT" id="16" x="19.959597" y="79.868690" z="0.000000" yaw="4.256000" pitch="0.000000" roll="0.000000" />
	<KEEP name="AssaultTurretFireT" id="17" x="20.939394" y="82.212120" z="0.000000" yaw="4.756000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="18" x="18.454544" y="90.727272" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="19" x="19.909088" y="90.181824" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="AssaultTurretFireT" id="20" x="21.848484" y="89.796982" z="0.000000" yaw="5.056000" pitch="0.000000" roll="0.000000" />
	<KEEP name="AssaultTurretFireT" id="21" x="23.222223" y="85.746468" z="0.000000" yaw="4.756000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="22" x="31.545454" y="71.181816" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="23" x="37.818180" y="94.454544" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="24" x="29.222219" y="94.555557" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="25" x="52.000000" y="110.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="26" x="55.000000" y="107.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="27" x="55.000000" y="101.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="28" x="44.111111" y="114.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="29" x="51.000000" y="114.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="30" x="57.000000" y="112.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="31" x="59.000000" y="108.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="32" x="58.656563" y="103.545456" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="33" x="42.999996" y="110.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="34" x="36.309528" y="61.065083" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="35" x="35.914280" y="69.814285" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="36" x="38.974602" y="59.647755" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<KEEP name="TowerTallStoneArch" id="37" x="39.133335" y="66.000000" z="0.000000" yaw="0.000000" pitch="0.000000" roll="0.000000" />
	<WALL name="StoneWall" start="31" end="32" />
	<WALL name="StoneWall" start="30" end="31" />
	<WALL name="StoneWall" start="29" end="30" />
	<WALL name="StoneWall" start="28" end="29" />
	<WALL name="StoneWall" start="26" end="27" />
	<WALL name="StoneWall" start="25" end="26" />
	<WALL name="StoneWall" start="33" end="25" />
	<WALL name="StoneWall" start="10" end="33" />
	<WALL name="StoneWall" start="9" end="10" />
	<WALL name="StoneWall" start="24" end="23" />
	<WALL name="StoneWall" start="19" end="18" />
	<WALL name="StoneWall" start="20" end="19" />
	<WALL name="StoneWall" start="21" end="20" />
	<WALL name="StoneWall" start="16" end="17" />
	<WALL name="StoneWall" start="15" end="16" />
	<WALL name="StoneWall" start="11" end="12" />
	<WALL name="StoneWall" start="13" end="12" />
	<WALL name="StoneWall" start="14" end="13" />
	<WALL name="StoneWall" start="22" end="14" />
	<WALL name="StoneWall" start="35" end="22" />
	<WALL name="StoneWall" start="34" end="35" />
	<WALL name="StoneWall" start="36" end="37" />
</CASTLE>

..\TECH\DATA\AMBUSH\AMBUSH.PMF

<?xml version="1.0" encoding="UTF-8"?>
<PADS VER="1">
	<PAD NAME="WagonPad"  X="35" Y="86" DX="5" DY="5" />
	<PAD NAME="MultiWardPad"  X="72" Y="34" DX="30" DY="5" />
	<PAD NAME="MainGatePad"  X="65" Y="80" DX="26" DY="5" />
	<PAD NAME="AmbushVOPad"  X="15" Y="94" DX="27" DY="5" />
	<PAD NAME="EndPad"  X="110" Y="95" DX="5" DY="19" />
</PADS>

..\TECH\DATA\AMBUSH\AMBUSH.POI

Tree80Poi                         	  33.346 	  32.443 	   0.000 	   0.000 	   0.000 	   2.000 TreeDead2
Tree79Poi                         	  33.111 	  34.333 	   0.000 	   0.000 	   0.000 	   0.000 TreeDead2
Tree78Poi                         	  30.556 	  35.778 	   0.000 	   0.000 	   0.000 	   0.000 TreeDead2
Tree77Poi                         	  26.444 	  29.444 	   0.000 	   0.000 	   0.000 	   0.000 TreeDead2
Tree76Poi                         	  27.000 	  40.111 	   0.000 	   0.000 	   0.000 	   0.000 TreeDecid
Tree75Poi                         	  28.222 	  37.889 	   0.000 	   0.000 	   0.000 	   0.000 TreeDecid
Tree74Poi                         	  26.111 	  34.889 	   0.000 	   0.000 	   0.000 	   0.000 TreeDecid
Tree73Poi                         	  32.556 	  30.333 	   0.000 	   0.000 	   0.000 	   0.000 TreeDecid
Tree72Poi                         	  30.889 	  33.667 	   0.000 	   0.000 	   0.000 	   0.000 TreeDecid
Tree71Poi                         	  27.889 	  31.778 	   0.000 	   0.000 	   0.000 	   0.000 TreeDecid
Tree70Poi                         	  28.434 	  36.647 	   0.000 	   0.000 	   0.000 	  -0.006 TreeDecid
Tree69Poi                         	  31.693 	  30.360 	   0.000 	   0.000 	   0.000 	   1.094 TreeDecid
Tree68Poi                         	  28.800 	  27.800 	   0.000 	   0.000 	   0.000 	   0.829 TreeDecid
Tree67Poi                         	  34.613 	  55.176 	   0.000 	   0.000 	   0.000 	   0.000 TreeDecid
Tree66Poi                         	  32.584 	  58.449 	   0.000 	   0.000 	   0.000 	  -2.004 TreeDecid
Tree65Poi                         	  32.742 	  63.425 	   0.000 	   0.000 	   0.000 	  -2.518 TreeDead2
Tree64Poi                         	  27.142 	  63.890 	   0.000 	   0.000 	  -0.045 	   0.212 TreeDead2
Tree63Poi                         	  34.236 	  61.602 	   0.000 	   0.000 	   0.000 	   0.612 TreeDead2
Tree62Poi                         	  24.369 	  40.395 	   0.000 	   0.000 	   0.000 	  -0.391 TreeDead2
Tree61Poi                         	  34.015 	  29.545 	   0.000 	   0.000 	   0.000 	   0.811 TreeDead2
Windmillid51x630Poi               	  63.203 	  75.346 	   0.000 	   0.000 	   0.000 	   0.911 
Windmillid50x610Poi               	  59.996 	  72.051 	   0.000 	   0.000 	   0.000 	   1.000 
Windmillid49x570Poi               	  57.000 	  68.000 	   0.000 	   0.000 	   0.000 	   0.930 
Ballistaid8x7000Poi               	  70.000 	  79.000 	   0.000 	   0.000 	   0.000 	   0.000 
Ballistaid7x7100Poi               	  38.760 	  56.093 	   0.000 	   0.000 	   0.000 	   0.786 
Ballistaid6x7300Poi               	  38.945 	  55.299 	   0.000 	   0.000 	   0.000 	   1.476 
Ballistaid5x7500Poi               	  37.868 	  54.282 	   0.000 	   0.000 	   0.000 	   1.385 
OrcTowerOctid4x2600Poi            	  25.022 	   9.044 	   0.000 	   0.000 	   0.000 	  -0.641 
HouseLowerClassBid3x7700Poi       	  77.000 	  40.300 	   0.000 	   0.000 	   0.000 	  -0.074 
HouseLowerClassBid2x7900Poi       	  78.564 	  40.591 	   0.000 	   0.000 	   0.000 	   1.684 
HouseLowerClassBid1x8100Poi       	  80.622 	  40.000 	   0.000 	   0.000 	   0.000 	  -0.241 
StaticGalleon1Poi                 	  88.146 	  38.505 	   3.062 	  -0.026 	  -0.232 	  -1.583 
StaticGalleon2Poi                 	  90.566 	  43.001 	   3.000 	   0.000 	   0.000 	   1.554 
Catapultid91x330Poi               	  24.576 	  81.111 	   0.000 	   0.000 	   0.000 	   0.000 
Catapultid90x280Poi               	  26.778 	  85.667 	   0.000 	   0.000 	   0.000 	   0.000 
Catapultid89x720Poi               	  75.333 	  50.000 	   0.000 	   0.000 	   0.000 	   0.000 
Catapultid88x660Poi               	  66.000 	  46.000 	   0.000 	   0.000 	   0.000 	   0.000 
Catapultid87x610Poi               	  61.000 	  47.000 	   0.000 	   0.000 	   0.000 	  -0.936 
HouseLowerClassBid77x260Poi       	  30.225 	  58.121 	   0.000 	   0.000 	   0.000 	   1.827 
HouseLowerClassBid76x260Poi       	  27.441 	  54.368 	   0.000 	   0.000 	   0.000 	  -1.076 
HouseLowerClassBid75x230Poi       	  30.669 	  55.045 	   0.000 	   0.000 	   0.000 	   3.951 
HouseLowerClassBid74x220Poi       	  28.459 	  58.676 	   0.000 	   0.000 	   0.000 	   0.493 
HouseLowerClassBid73x240Poi       	  34.829 	  56.883 	   0.000 	   0.000 	   0.000 	  -1.384 
HouseLowerClassBid72x210Poi       	  25.781 	  53.883 	   0.000 	   0.000 	   0.000 	   0.424 
HouseLowerClassBid71x230Poi       	  20.513 	  54.305 	   0.000 	   0.000 	   0.000 	  -0.603 
HouseLowerClassBid70x220Poi       	  24.595 	  59.929 	   0.000 	   0.000 	   0.000 	   4.443 
HouseLowerClassBid69x240Poi       	  25.967 	  61.601 	   0.000 	   0.000 	   0.000 	   0.255 
HouseLowerClassBid68x220Poi       	  25.993 	  64.097 	   0.000 	   0.000 	   0.000 	  -0.348 
HouseLowerClassBid67x780Poi       	  77.778 	  33.333 	   0.000 	   0.000 	   0.000 	   0.150 
HouseLowerClassBid66x760Poi       	  76.000 	  33.000 	   0.000 	   0.000 	   0.000 	   1.418 
HouseLowerClassBid65x780Poi       	  76.455 	  36.857 	   0.000 	   0.000 	   0.000 	   1.293 
HouseLowerClassBid64x760Poi       	  76.040 	  34.261 	   0.000 	   0.000 	   0.000 	  -0.305 
HouseLowerClassBid63x780Poi       	  78.040 	  35.268 	   0.000 	   0.000 	   0.000 	   2.693 
HouseLowerClassBid62x760Poi       	  76.420 	  38.357 	   0.000 	   0.000 	   0.000 	  -0.711 
HouseLowerClassBid61x850Poi       	  85.076 	  65.691 	   0.000 	   0.000 	   0.000 	   1.746 
HouseLowerClassBid60x830Poi       	  83.339 	  63.240 	   0.000 	   0.177 	   0.002 	  -0.509 
HouseLowerClassBid59x870Poi       	  87.000 	  62.000 	   0.000 	   0.000 	   0.000 	  -1.217 
HouseLowerClassBid58x850Poi       	  84.353 	  58.033 	   0.000 	   0.000 	   0.167 	  -2.051 
HouseLowerClassBid57x830Poi       	  82.931 	  55.964 	   0.000 	   0.000 	   0.000 	   0.235 
HouseLowerClassBid56x870Poi       	  87.845 	  63.260 	   0.000 	   0.000 	   0.000 	   1.059 
HouseLowerClassBid55x840Poi       	  84.343 	  60.106 	   0.000 	   0.096 	   0.000 	  -0.726 
HouseLowerClassBid54x830Poi       	  82.920 	  60.179 	   0.000 	   0.000 	   0.000 	   0.119 
GreatHallid53x280Poi              	  30.350 	  60.694 	   0.000 	   0.000 	   0.000 	  -0.098 
GreatHallid52x106Poi              	 106.395 	  57.078 	   0.000 	   0.000 	   0.000 	   3.439 
Tree60Poi                         	 104.742 	  58.815 	   0.000 	   0.000 	   0.000 	  -0.874 TreeDead2
Tree59Poi                         	  24.111 	 103.444 	   0.000 	   0.000 	   0.000 	  -1.178 TreeDead2
Tree58Poi                         	  78.667 	  87.001 	   0.000 	   0.000 	   0.000 	   1.160 TreeDead2
Tree57Poi                         	  86.672 	  65.727 	   0.000 	   0.000 	   0.000 	  -1.181 TreeDead2
Tree56Poi                         	 109.448 	  59.160 	   0.000 	   0.000 	   0.000 	   0.997 TreeDead2
Tree55Poi                         	  84.292 	  61.776 	   0.000 	   0.000 	   0.000 	  -2.319 TreeDead2
Tree54Poi                         	  76.889 	  87.889 	   0.000 	   0.000 	   0.000 	   1.749 TreeDead2
Dragon1_Start                     	 102.534 	  10.074 	  10.100 	   0.000 	   0.000 	   0.267 
Tree40Poi                         	  27.537 	  58.465 	   0.000 	   0.014 	   0.267 	   2.586 TreeDead2
Tree39Poi                         	  26.387 	  60.503 	   0.000 	   0.000 	   0.000 	   1.031 TreeDead2
Tree38Poi                         	  58.669 	  42.614 	   0.000 	   0.000 	   0.000 	  -4.871 TreeDead2
Tree37Poi                         	  31.111 	  29.778 	   0.000 	   0.000 	   0.000 	  -0.534 TreeDead2
Tree36Poi                         	  28.000 	  34.444 	   0.000 	   0.000 	   0.000 	  -0.969 TreeDead2
Tree35Poi                         	  24.667 	  99.778 	   0.000 	   0.000 	   0.000 	   0.530 TreeDead2
Tree34Poi                         	  26.778 	 101.556 	   0.000 	   0.000 	   0.000 	  -1.411 TreeDead2
Tree33Poi                         	  27.222 	  97.333 	   0.000 	   0.000 	   0.000 	  -0.206 TreeDead2
Tree32Poi                         	  26.445 	  96.555 	   0.000 	   0.000 	   0.000 	   1.643 TreeDead2
Tree31Poi                         	  27.333 	  94.222 	   0.000 	   0.000 	   0.000 	  -0.554 TreeDead2
Tree30Poi                         	  76.222 	  52.131 	   0.000 	   0.000 	   0.000 	   1.010 TreeDead2
Tree29Poi                         	  70.667 	  47.556 	   0.000 	   0.000 	   0.000 	  -2.000 TreeDead2
Tree28Poi                         	  69.778 	  49.333 	   0.000 	   0.000 	   0.000 	   0.505 TreeDead2
Tree27Poi                         	  68.667 	  47.000 	   0.000 	   0.000 	   0.000 	  -0.923 TreeDead2
Tree26Poi                         	  62.675 	  52.639 	   0.000 	   0.000 	   0.000 	   1.282 TreeDead2
Tree25Poi                         	  62.000 	  53.560 	   0.000 	   0.000 	   0.000 	  -1.438 TreeDead2
Tree24Poi                         	  60.059 	  54.516 	   0.000 	   0.000 	   0.000 	   0.282 TreeDead2
Tree23Poi                         	  62.333 	  61.444 	   0.000 	   0.000 	   0.000 	   1.979 TreeDead2
Tree22Poi                         	  67.889 	  66.556 	   0.000 	   0.000 	   0.000 	  -1.637 TreeDead2
Tree21Poi                         	  75.444 	  65.111 	   0.000 	   0.000 	   0.000 	   0.835 TreeDead2
Tree20Poi                         	  29.333 	  31.333 	   0.000 	   0.000 	   0.000 	  -0.197 TreeDecid
Tree19Poi                         	  28.333 	  30.333 	   0.000 	   0.000 	   0.000 	  -1.881 TreeDecid
Tree18Poi                         	  31.373 	  32.770 	   0.000 	   0.017 	   0.000 	  -1.864 TreeDecid
Tree17Poi                         	  29.333 	  32.667 	   0.000 	   0.000 	   0.000 	  -0.653 TreeDecid
Tree16Poi                         	  65.667 	  68.334 	   0.000 	   0.000 	   0.000 	  -0.619 TreeDecid
Tree15Poi                         	  23.111 	  95.889 	   0.000 	   0.000 	   0.000 	   1.565 TreeDecid
Tree14Poi                         	  24.111 	  91.667 	   0.000 	   0.000 	   0.000 	  -0.578 TreeDecid
Tree13Poi                         	  26.889 	  92.889 	   0.000 	  -0.001 	   0.000 	  -0.659 TreeDecid
Tree12Poi                         	  27.962 	  88.213 	   0.000 	   0.056 	   0.000 	  -0.609 TreeDecid
Tree11Poi                         	  36.556 	  90.333 	   0.000 	   0.000 	   0.000 	  -1.267 TreeDecid
Tree10Poi                         	  75.529 	  62.972 	   0.000 	   0.000 	   0.000 	  -1.226 TreeDecid
Tree9Poi                          	  73.556 	  65.333 	   0.000 	   0.000 	   0.000 	  -1.116 TreeDecid
Tree8Poi                          	  64.444 	  64.111 	   0.000 	   0.000 	   0.000 	   1.161 TreeDecid
Tree7Poi                          	  74.702 	  68.879 	   0.000 	   0.000 	   0.000 	   0.604 TreeDecid
Tree6Poi                          	  71.778 	  65.889 	   0.000 	   0.000 	   0.000 	  -1.043 TreeDecid
Tree5Poi                          	  70.000 	  71.000 	   0.000 	   0.000 	   0.000 	   1.103 TreeDecid
Tree4Poi                          	  67.444 	  68.444 	   0.000 	   0.000 	   0.000 	  -0.919 TreeDecid
Tree3Poi                          	  65.556 	  64.778 	   0.000 	   0.000 	   0.000 	   1.293 TreeDecid
Tree2Poi                          	  69.667 	  67.333 	   0.000 	   0.000 	   0.000 	  -0.232 TreeDecid
Tree1Poi                          	  68.889 	  69.333 	   0.000 	   0.000 	   0.000 	   2.378 TreeDecid
DarkWardGeneratorPoi              	  90.441 	  97.737 	   0.000 	   0.000 	   0.000 	  -0.840 
PlantDefender8Poi                 	  43.312 	 105.409 	   0.000 	   0.000 	   0.000 	   0.000 
PlantDefender7Poi                 	  39.556 	  98.222 	   0.000 	   0.000 	   0.000 	   0.000 
PlantDefender6Poi                 	  39.711 	 104.078 	   0.000 	   0.000 	   0.000 	   0.000 
PlantDefender5Poi                 	  42.421 	 103.257 	   0.000 	   0.000 	   0.000 	   0.000 
PlantDefender4Poi                 	  49.689 	 107.933 	   0.000 	   0.000 	   0.000 	   0.000 
PlantDefender3Poi                 	  40.456 	  99.520 	   0.000 	   0.000 	   0.000 	   0.000 
PlantDefender2Poi                 	  39.111 	 101.438 	   0.000 	   0.000 	   0.000 	   0.000 
PlantDefender1Poi                 	  49.786 	 105.514 	   0.000 	   0.000 	   0.000 	   0.000 
FarmCPeasant1Poi                  	  19.600 	  81.600 	   0.000 	   0.000 	   0.000 	   0.000 
FarmCPig2Poi                      	  17.400 	  80.600 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmCPig1Poi                      	  17.545 	  84.636 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmCCow1Poi                      	  21.564 	  84.273 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
DistrictCPeasant3Poi              	  31.309 	  77.436 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictCPeasant2Poi              	  34.655 	  88.618 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictCPeasant1Poi              	  30.273 	  81.600 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictCDefender4Poi             	  26.600 	  79.800 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictCDefender3Poi             	  31.400 	  85.200 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictCDefender2Poi             	  26.547 	  81.509 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictCDefender1Poi             	  31.600 	  89.600 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBPeasant4Poi              	  41.600 	  52.000 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBPeasant3Poi              	  38.378 	  54.467 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBPeasant2Poi              	  24.400 	  63.756 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBPeasant1Poi              	  31.917 	  58.432 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBDefender5Poi             	  50.600 	  48.800 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBDefender4Poi             	  42.600 	  55.800 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBDefender3Poi             	  36.400 	  57.156 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBDefender2Poi             	  28.475 	  59.356 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictBDefender1Poi             	  29.000 	  63.978 	   0.000 	   0.000 	   0.000 	   0.000 
FarmBPeasant2Poi                  	  38.289 	  35.844 	   0.000 	   0.000 	   0.000 	   0.000 
FarmBPeasant1Poi                  	  35.400 	  38.000 	   0.000 	   0.000 	   0.000 	   0.000 
FarmBPig3Poi                      	  31.400 	  38.800 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmBPig2Poi                      	  38.200 	  31.800 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmBPig1Poi                      	  38.200 	  37.800 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmBCow4Poi                      	  32.200 	  31.400 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmBCow3Poi                      	  29.000 	  36.400 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmBCow2Poi                      	  36.978 	  33.289 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmBCow1Poi                      	  41.378 	  38.133 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
CavalryGroup3Poi                  	  69.582 	  41.240 	   0.000 	   0.000 	   0.000 	   0.000 
CavalryGroup2Poi                  	  67.709 	  42.252 	   0.000 	   0.000 	   0.000 	   0.000 
CavalryGroup1Poi                  	  71.491 	  42.200 	   0.000 	   0.000 	   0.000 	   0.000 
FarmADefender1Poi                 	  65.400 	  48.400 	   0.000 	   0.000 	   0.000 	   0.000 Archer
FarmAPeasant3Poi                  	  65.711 	  66.400 	   0.000 	   0.000 	   0.000 	   0.000 
FarmAPeasant2Poi                  	  60.491 	  60.545 	   0.000 	   0.000 	   0.000 	   0.000 
FarmAPeasant1Poi                  	  71.800 	  71.200 	   0.000 	   0.000 	   0.000 	   0.000 
FarmACow5Poi                      	  71.289 	  49.267 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmACow4Poi                      	  77.600 	  60.000 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmACow3Poi                      	  61.800 	  64.600 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmACow2Poi                      	  73.200 	  67.000 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
FarmACow1Poi                      	  70.000 	  73.600 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
GateDefender3Poi                  	  85.285 	  90.994 	   0.000 	   0.000 	   0.000 	   0.000 
GateDefender2Poi                  	  84.242 	  91.067 	   0.000 	   0.000 	   0.000 	   0.000 
GateDefender1Poi                  	  83.848 	  92.345 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictAPeasant4Poi              	  85.911 	  68.044 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictAPeasant3Poi              	  88.022 	  60.578 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictAPeasant2Poi              	  85.800 	  58.000 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictAPeasant1Poi              	  81.600 	  41.700 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictADefender6Poi             	  82.400 	  36.200 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictADefender5Poi             	  78.745 	  43.656 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictADefender4Poi             	  82.400 	  68.800 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictADefender3Poi             	 104.756 	  56.222 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictADefender2Poi             	 108.511 	  58.800 	   0.000 	   0.000 	   0.000 	   0.000 
DistrictADefender1Poi             	  85.800 	  73.600 	   0.000 	   0.000 	   0.000 	   0.000 
Cave1SpawnPoi                     	  35.255 	  87.775 	   0.009 	   0.000 	   0.000 	   1.643 
Cave2SpawnPoi                     	  35.943 	  44.463 	   0.000 	   0.000 	   0.000 	   1.091 
Cave3SpawnPoi                     	  81.620 	  33.153 	   0.000 	   0.000 	   0.000 	   0.000 
Cave4SpawnPoi                     	  94.062 	  63.068 	   0.000 	   0.000 	   0.000 	   2.693 
Cave5SpawnPoi                     	  66.565 	  72.739 	   0.000 	   0.000 	   0.000 	  -2.000 
OceanSpawnPoi                     	  91.450 	  11.667 	   0.000 	   0.000 	   0.000 	   0.000 
Boat1Poi                          	  89.328 	  47.906 	   0.000 	   0.000 	   0.000 	   0.000 
Boat2Poi                          	  93.975 	  52.150 	   0.000 	   0.000 	   0.000 	   0.000 
Boat3Poi                          	  90.400 	  35.200 	   0.000 	   0.000 	   0.000 	   0.000 
Tree41Poi                         	  23.494 	  60.813 	   0.000 	   0.000 	   0.000 	   1.130 TreeDead2
Tree42Poi                         	  28.961 	  57.638 	   0.000 	   0.000 	   0.000 	  -0.681 TreeDead2
Tree43Poi                         	  26.810 	  53.721 	   0.000 	   0.000 	   0.000 	  -1.146 TreeDead2
Tree44Poi                         	  28.327 	  54.910 	   0.000 	   0.000 	   0.000 	   1.091 TreeDead2
Tree45Poi                         	  32.690 	  55.847 	   0.000 	   0.000 	   0.000 	  -1.660 TreeDead2
Tree46Poi                         	  76.480 	  36.151 	   0.000 	   0.000 	   0.000 	   1.317 TreeDead2
Tree47Poi                         	  55.000 	  41.889 	   0.000 	   0.000 	   0.000 	  -0.235 TreeDead2
Tree48Poi                         	  87.419 	  56.581 	   0.000 	   0.000 	   0.000 	   0.761 TreeDead2
Tree49Poi                         	  78.883 	  38.141 	   0.000 	   0.000 	   0.000 	   3.670 TreeDead2
Tree50Poi                         	  78.738 	  33.974 	   0.000 	   0.000 	   0.000 	  -2.671 TreeDead2
Tree51Poi                         	  82.708 	  64.404 	   0.000 	   0.000 	   0.000 	   1.166 TreeDead2
Tree52Poi                         	  76.001 	  87.333 	   0.000 	   0.000 	   0.000 	   1.096 TreeDead2
Tree53Poi                         	 101.859 	  60.646 	   0.000 	   0.000 	   0.000 	  -0.914 TreeDead2
FireWardGeneratorPoi              	  47.222 	 106.667 	   0.000 	   0.000 	   0.000 	  -0.912 
Catapult2Poi                      	  42.444 	  36.667 	   0.000 	   0.000 	   0.000 	   0.000 
Catapult3Poi                      	  43.778 	  34.889 	   0.000 	   0.000 	   0.000 	   0.000 
Catapult4Poi                      	  77.028 	  65.000 	   0.000 	   0.000 	   0.000 	   0.000 
Catapult6Poi                      	  29.667 	 108.667 	   0.000 	   0.000 	   0.000 	   0.000 
Catapult7Poi                      	  34.000 	 109.778 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk1Poi                     	  31.667 	  88.000 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk3Poi                     	  81.556 	  34.333 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk4Poi                     	  81.589 	  45.239 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk5Poi                     	  83.533 	  39.667 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk6Poi                     	  85.000 	  89.445 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk7Poi                     	  82.778 	  92.000 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk8Poi                     	  95.667 	  59.111 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk9Poi                     	  98.528 	  61.139 	   0.000 	   0.000 	   0.000 	   0.000 
EarthMonk10Poi                    	  95.333 	  60.666 	   0.000 	   0.000 	   0.000 	   0.000 
ProcessingPlantPoi                	  47.700 	 103.999 	   0.000 	   0.000 	   0.000 	  -0.067 
WagonCityPoi                      	  29.145 	  58.095 	   0.000 	   0.000 	   0.000 	   0.000 
WagonDocksPoi                     	 111.790 	  59.921 	   0.000 	   0.000 	   0.000 	   0.000 
WagonPierPoi                      	  83.111 	  44.167 	   0.000 	   0.000 	   0.000 	   0.000 
Tavern1Poi                        	  82.103 	  58.031 	   0.000 	   0.000 	   0.000 	   1.505 
Tavern2Poi                        	  86.128 	  64.099 	   0.000 	   0.000 	   0.000 	  -0.959 
Tavern3Poi                        	  26.394 	  56.723 	   0.000 	   0.000 	   0.000 	   0.000 
Tavern4Poi                        	  26.380 	  57.516 	   0.026 	   0.018 	   0.018 	   0.001 
Tavern5Poi                        	  33.610 	  53.341 	   0.000 	   0.000 	   0.000 	  -3.328 
WaterWardGeneratorPoi             	 102.874 	  56.240 	   0.000 	   0.000 	   0.000 	   0.000 
MoreTown1Poi                      	  22.135 	  57.837 	   0.000 	   0.000 	   0.000 	   0.683 
MoreTown2Poi                      	  33.691 	  56.497 	   0.000 	   0.000 	   0.000 	   0.223 
MoreTown3Poi                      	  22.219 	  55.839 	   0.000 	   0.000 	   0.000 	   0.000 
MoreTown4Poi                      	  23.385 	  56.216 	   0.000 	   0.000 	   0.000 	  -0.566 
MoreTown5Poi                      	  24.064 	  64.562 	   0.000 	   0.000 	   0.000 	  -0.196 
MidClass1Poi                      	  31.520 	  58.181 	   0.000 	   0.000 	   0.000 	   1.355 
MidClass2Poi                      	  23.398 	  53.880 	   0.000 	   0.000 	   0.000 	   4.823 
MidClass3Poi                      	  22.090 	  63.951 	   0.000 	   0.000 	   0.000 	   1.995 
MidClass4Poi                      	  22.519 	  59.289 	   0.000 	   0.000 	   0.000 	   2.155 
MidClass5Poi                      	  34.446 	  63.563 	   0.000 	   0.000 	   0.000 	   0.639 
Cave1Poi                          	  35.752 	  87.827 	  -0.140 	   0.000 	   0.029 	  -1.679 Cave
Cave2Poi                          	  36.545 	  44.046 	   0.029 	   0.000 	   0.000 	  -2.028 Cave
Cave3Poi                          	  81.586 	  32.428 	   0.092 	   0.000 	   0.087 	   3.253 Cave
Cave4Poi                          	  94.461 	  63.693 	   0.010 	   0.000 	   0.000 	  -0.378 Cave
Cave5Poi                          	  66.020 	  73.203 	  -0.027 	  -0.158 	   0.023 	   0.715 Cave
Bonanza1Poi                       	  46.223 	 105.000 	   0.000 	   0.000 	   0.000 	   0.000 
Bonanza3Poi                       	  46.555 	 102.223 	   0.000 	   0.000 	   0.000 	   0.000 
Bonanza2Poi                       	  49.334 	 104.000 	   0.000 	   0.000 	   0.000 	   0.000 
MultiWardPoi                      	  99.605 	  21.440 	   0.161 	   0.000 	   0.506 	   0.000 
MooCow_253                        	  29.750 	  87.125 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_254                        	  28.750 	  81.500 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_255                        	  27.750 	  79.125 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_256                        	  33.750 	  37.000 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_257                        	  37.875 	  34.500 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_258                        	  30.125 	  31.375 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_259                        	  28.125 	  62.625 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_260                        	  31.000 	  62.375 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_261                        	  67.125 	  71.000 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_262                        	  72.875 	  69.375 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_263                        	  75.000 	  67.250 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_264                        	  61.205 	  50.284 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_265                        	  67.875 	  49.625 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_266                        	 102.750 	  58.250 	   0.000 	   0.000 	   0.000 	   0.000 Cow
MooCow_267                        	 103.500 	  60.625 	   0.000 	   0.000 	   0.000 	   0.000 Cow
UpgradeFirePOI                    	 113.011 	 106.784 	   0.000 	   0.000 	   0.000 	   0.000 
UpgradeWaterPOI                   	 113.023 	 104.489 	   0.000 	   0.000 	   0.000 	   0.000 
UpgradeAirPOI                     	 113.216 	 101.875 	   0.000 	   0.000 	   0.000 	   0.000 
UpgradeEarthPOI                   	 113.136 	  99.670 	   0.000 	   0.000 	   0.000 	   0.000 
AdaraPoi                          	 115.568 	 103.011 	  -4.000 	   0.000 	   0.000 	   0.000 
SpriteBuildingPoi                 	  20.000 	  87.064 	   0.000 	   0.000 	   0.000 	   0.000 
Cow1Poi                           	  19.272 	  84.455 	   0.000 	   0.000 	   0.000 	   0.000 
Cow2Poi                           	  18.182 	  85.364 	   0.000 	   0.000 	   0.000 	   0.000 
Cow3Poi                           	  20.455 	  85.091 	   0.000 	   0.000 	   0.000 	   0.000 
Cow4Poi                           	  22.091 	  85.636 	   0.000 	   0.000 	   0.000 	   0.000 
Cow5Poi                           	  19.636 	  83.545 	   0.000 	   0.000 	   0.000 	   0.000 
BoulderMedB_279                   	  30.846 	 104.122 	   0.000 	   0.000 	   0.000 	   0.000 BoulderMedA
BoulderMedB_280                   	  26.822 	 104.460 	   0.000 	   0.000 	   0.000 	   0.000 DragSkull
BoulderMedB_281                   	  25.854 	 104.896 	   0.000 	   0.000 	   0.000 	   0.792 BoulderMedA
BoulderMedB_282                   	  35.050 	  97.556 	   0.000 	   0.000 	   0.000 	  -0.247 DragSkull
BoulderMedB_283                   	  32.240 	 103.684 	   0.000 	   0.000 	   0.000 	  -2.804 BoulderMedA
BoulderMedB_284                   	  30.570 	  97.403 	   0.000 	   0.000 	   0.000 	  -2.639 BoulderMedA
Sheep_284                         	  31.000 	  86.333 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
Sheep_285                         	  28.333 	  84.500 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
Sheep_286                         	  30.462 	  79.659 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
Sheep_287                         	  31.750 	  35.417 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
Sheep_288                         	  28.833 	  34.583 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
Sheep_289                         	  69.833 	  46.667 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
Sheep_290                         	  77.583 	  57.667 	   0.000 	   0.000 	   0.000 	   0.000 Sheep
BoulderMedB_285                   	  64.660 	  39.686 	   0.000 	   0.000 	   0.000 	   0.000 BoulderMedA
BoulderMedB_286                   	  65.649 	  39.671 	   0.000 	   0.000 	   0.000 	  -1.064 BoulderMedA
BoulderMedB_287                   	  57.932 	  42.637 	   0.000 	   0.000 	   0.000 	  -1.484 BoulderMedA
BoulderMedA_284                   	  45.394 	  61.390 	   0.000 	   0.000 	   0.000 	   1.847 BoulderMedA
BoulderMedA_285                   	  45.107 	  61.870 	   0.000 	   0.000 	   0.000 	   0.074 BoulderMedA
ENDOFPOIFILE

..\TECH\DATA\ARMADA\ARMADA.ICE

include "../scripts/Dtypes.ice"
include "../scripts/dlightning.ice"
include "../scripts/dBalloons.ice"

constant MAXGALLEONS = 6
constant MAXTROOPS = 30
constant GHOSTHEALTH = 50000
constant FLGHOSTHEALTH = 50000.0
constant MANDEKSHEALTH = 25000
constant DAMAGECAP = 300
constant DAMAGEWELL = 3000

create ObjHandle gModelHandle
create ObjHandle gSpriteHandle
create ObjHandle gGhostHandle
create xyz gObjectLoc
create xyz gObjectOrientation

create integer gSpriteFound
create integer gManHPcur = MANDEKSHEALTH
create integer gGhostHPcur = GHOSTHEALTH
create integer gDamageWell = 0
create float gPrcntGodHP

////////////////remove Mandek fresh super galleon model, swap it with wrecked super gallson model when it flees////////////
		// These are generic object creation variables
create integer gGalleonCount
create integer gNextWave
create integer gWave9 = FALSE
create integer gMaxFuryCharge
create integer gTroopCount = 0

make string tArrayOf6Strings[6]
make objHandle tArrayOf6ObjHandles[6]
//Dmake integer tArrayOf20Integers[20]
create integer gNextTBoat
create integer gReleaseMines
create tArrayOf6Strings[] gTBoatHeads
create tArrayOf6Strings[] gTBoatLanes
create tArrayOf6Strings[] gTBoatPads
create tArrayOf6Strings[] gTBoatTails
create tArrayOf6ObjHandles[] gTBoatHandles = ((NONE,NONE),(NONE,NONE),(NONE,NONE),(NONE,NONE),(NONE,NONE),(NONE,NONE))

make objHandle tArrayOf5ObjHandles[5]
create tArrayOf5ObjHandles[] gTowerHandles = ((NONE,NONE),(NONE,NONE),(NONE,NONE),(NONE,NONE),(NONE,NONE))

create ObjHandle gSuperGalleonHandle
create ObjHandle gShrineHandle
create ObjHandle gShrineEffectHandle
create ObjHandle gFriendlyhandle
create ObjHandle gAdaraHandle

create xyz gModelLoc
create xyz gModelOrientation
//create xyz gTempLoc
create xyz gGemLoc
create xyz gLocation
create xyz gOrientation = (0, 0, 0)


			// integer variable declarations
	create integer gAWPUWPlayer

			// bool variable declarations
	create integer gGotKeyBool //Shows whether or not the Player is carrying the Key
	create integer gShutDownBool //Shuts down the boat waves
	
	constant enum VOs 
	{
		VO_GREETINGS = 0,
		VO_OH_DEAR,
		VO_WATCH_OUT,
		VO_I_REMEMBER,
		VO_HANG_IN_THERE,
		VO_SO_ITS_TRUE,
		VO_YOUR_NOT_BEING,
		VO_AARGH_YOU_FOOLS,
		VO_THANK_YOU,
		VO_IM_SORRY_CAEL,
		FLY_INTO_THE_SPHERE
	}


	FUNCTION fVO_Player( integer vo) 
	{
		select vo
			case VO_GREETINGS
			BEGIN 
////				IceDisplay("Greetings, I'm The Great General Mandek  \n")
				VoiceOverPlay( VO_10mk001 ) 	
			END
			case VO_OH_DEAR
			BEGIN 
//				IceDisplay("Oh dear, so many Orcs in boats.   \n")
				VoiceOverPlay( VO_10ad078 ) 	
			END
			case VO_WATCH_OUT 
			BEGIN 
//				IceDisplay("Watch out, they're bringing in reinforcements.\n")
				VoiceOverPlay( VO_gnad141 ) 	
			END
			case VO_I_REMEMBER
			BEGIN 
//				IceDisplay(" I remember there being a Shrine near here.\n")
				VoiceOverPlay( VO_gnad153 ) 	
			END
			case VO_HANG_IN_THERE 
			BEGIN 
//				IceDisplay("Hang in there, this is the last attack wave!\n")
				VoiceOverPlay( VO_gnad154 ) 	
			END
			case VO_SO_ITS_TRUE
			BEGIN 
//				IceDisplay("So it's true; one puny Dragon causing this trouble\n")
				VoiceOverPlay( VO_10mk002 )
			END
			case VO_YOUR_NOT_BEING 
			BEGIN 
//				IceDisplay("You're not being nice Dragon.\n")
				VoiceOverPlay( VO_10mk002 ) 	
			END
			case VO_AARGH_YOU_FOOLS 
			BEGIN 
//				IceDisplay("Aargh!  Put that fire out, you fools!\n")
				VoiceOverPlay( VO_10mk003 ) 
			END
			case VO_THANK_YOU 
			BEGIN 
//				IceDisplay("Thank you. I was able to get free when you crippled that ship\n")
				VoiceOverPlay( VO_10rs002 ) //RANDOM SPRITE
			END
			case VO_IM_SORRY_CAEL

			BEGIN 
//				IceDisplay(" I'm sorry Cael; Mandek was just too powerful.\n")
				VoiceOverPlay( VO_10ad079) //CAELS DEATH
			END
			case FLY_INTO_THE_SPHERE
			BEGIN 
//				IceDisplay(" fly int the shere of your choice and be granted your upgrade\n")
				VoiceOverPlay( VO_GNAD151 ) //upgrades
			END
			default 
				EXIT
//			IceDisplay(" BABY DID A BAD BAD THANG")
		}
	//---------------------------------------------------
	// Function declarations  
	//---------------------------------------------------

	FUNCTION fInitModelPlacement()
	{
		create xyz tempLoc
		create xyz ori
		create ObjHandle gStrawHandle
		create ObjHandle gWoodHandle
		create ObjHandle gBrickHandle
		create integer spriteLoc

		AddObjectPOI(gModelHandle, "FishingBoat", "InitialFleet5Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtMakeMonk)
//			IceDisplay( "SHIP 1AHOY MATEY!!!!/n")
		AddObjectPOI(gModelHandle, "FishingBoat", "InitialFleet2Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtMakeMonk)
//			IceDisplay( "SHIP 2AHOY MATEY!!!!/n")
		AddObjectPOI(gModelHandle, "FishingBoat", "InitialFleet3Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtMakeMonk)
//			IceDisplay( "SHIP3 AHOY MATEY!!!!/n")

		AddObjectPOI(gStrawHandle, "FishingBoat", "InitialFleet4Poi")
//			IceDisplay( "SHIP4 AHOY MATEY!!!!/n")
		AddObjectPOI(gWoodHandle, "FishingBoat", "InitialFleet1Poi")
//			IceDisplay( "SHIP 5AHOY MATEY!!!!/n")
		AddObjectPOI(gBrickHandle, "Caravel",	  "InitialFleet6Poi")
//			IceDisplay( "SHIP6 AHOY MATEY!!!!/n")
		AddObjectPOI(gModelHandle, "FishingBoat", "InitialFleet7Poi")
//			IceDisplay( "SHIP 7 AHOY MATEY!!!!/n")

		AddObjectPOISnap(gModelHandle, "Cow", "IslandAPeasant1Poi")
		AddObjectPOISnap(gModelHandle, "Sheep", "IslandACow1Poi")
		AddObjectPOISnap(gModelHandle, "Sheep", "IslandACow2Poi")

		AddObjectPOISnap(gModelHandle, "Cow", "IslandCDefender1Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "IslandCDefender2Poi")
		AddObjectPOISnap(gModelHandle, "Sheep", "IslandCSheep1Poi")

		AddObjectPOISnap(gModelHandle, "Cow", "IslandDDefender1Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "IslandDDefender2Poi")
		AddObjectPOISnap(gModelHandle, "Sheep", "IslandDSheep1Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "Cow1_Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "Cow2_Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "Cow3_Poi")

		AddObjectPOISnap(gModelHandle, "Cow", "IslandFPeasant1Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "IslandXPeasant1Poi")
		AddObjectPOISnap(gModelHandle, "Sheep", "IslandFCow1Poi")
		AddObjectPOISnap(gModelHandle, "Sheep", "IslandFCow2Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "IslandGDefender1Poi")
		AddObjectPOISnap(gModelHandle, "Cow", "IslandGDefender2Poi")

		AddObjectPOI(gModelHandle, "Windmill", "Wind01_Poi")
			SetNeverSleepFlag(gModelHandle)
		AddObjectPOI(gModelHandle,  "Windmill", "Wind02_Poi")
			SetNeverSleepFlag(gModelHandle)
		AddObjectPOI(gModelHandle, "Windmill", "Wind03_Poi")
			SetNeverSleepFlag(gModelHandle)

		////////////setting up random sprite
		set spriteLoc = Random (3)
		select spriteLoc // i switched to a selection instead of if-elsing, too
		case 0 
		BEGIN
//			IceDisplay("option1 \n")
			SetObjIceHandler(gStrawHandle, ICEOBJHANDLER_DEATH, evtMakeSprite)
		END
		case 1 
		BEGIN
//			IceDisplay("option2 \n")
			SetObjIceHandler(gWoodHandle, ICEOBJHANDLER_DEATH, evtMakeSprite)
		END
		case 2
		BEGIN
//			IceDisplay("option3 \n")
			SetObjIceHandler(gBrickHandle, ICEOBJHANDLER_DEATH, evtMakeSprite)
		END
		default
		BEGIN
			EXIT

//			IceDisplay( "Bad select on spriteLoc in initializeScripts\n" )
		END


		/////////////////////////////////
			//GetPoiLoc("ShrinePoi", tempLoc)
		//	fDShrineCreateLoc(tempLoc)
		fDShrineCreatePoi("ShrinePoi")
		fDShrineCreatePoi("Shrine2_Poi")


				////////////Towers for Ballon bombs to come out of they need to only produce one, 
		/////////// about 10 seconds into the game.
		AddObjectPOI(gTowerHandles[0], "TowerTallWood", "Tower1_Poi")
		TriggerDelay(4*SECOND, evtTowerBalloons, gTowerHandles[0])
		AddObjectPOI(gTowerHandles[1], "TowerTallWood", "Tower2_Poi")
		TriggerDelay(6*SECOND, evtTowerBalloons, gTowerHandles[1])
		AddObjectPOI(gTowerHandles[2], "TowerTallWood", "Tower3_Poi")
		TriggerDelay(6*SECOND, evtTowerBalloons, gTowerHandles[2])
		AddObjectPOI(gTowerHandles[3], "TowerTallWood", "Tower4_Poi")
		TriggerDelay(5*SECOND, evtTowerBalloons, gTowerHandles[3])
		AddObjectPOI(gTowerHandles[4], "TowerTallWood", "Tower5_Poi")
		TriggerDelay(3*SECOND, evtTowerBalloons, gTowerHandles[4])

		set tempLoc^x = 0
		set tempLoc^y = 0
		set tempLoc^z = -50.0
		AddObjectLOC(gGhostHandle, "Silo", tempLoc, ori)
		SetInvulnerable( gGhostHandle, FALSE )
		SetHitPoints( gGhostHandle, 100 )																// set Ghost's HP to the percentage remaining value: Ghost starts at 100HP, HUDMeter starts at 100% full
		SetInvulnerable( gGhostHandle, TRUE )
	}

	//---------------------------------------------------
	// AnyOf declarations
	//---------------------------------------------------


	ONCE ANYOF( initializeScripts )
	(void void)
	{
		fInitDaryl(20, ARMADA)
//Daryl: Removed fSetUpgradeAllowance() from Dxxx.ice files
//D			fSetUpgradeAllowance (3, 3, 3, 3)

		set gNextTBoat = 0 //transport lane
		set gReleaseMines = 0
		set gGalleonCount = 0

		set gTBoatHeads[0] = "TBoat1_Poi"
		set gTBoatHeads[1] = "TBoat2_Poi"
		set gTBoatHeads[2] = "TBoat3_Poi"
		set gTBoatHeads[3] = "TBoat4_Poi"
		set gTBoatHeads[4] = "TBoat5_Poi"
		set gTBoatHeads[5] = "TBoat6_Poi"

		set gTBoatLanes[0] = "TBoat1Path"
		set gTBoatLanes[1] = "TBoat2Path"
		set gTBoatLanes[2] = "TBoat3Path"
		set gTBoatLanes[3] = "TBoat4Path"
		set gTBoatLanes[4] = "TBoat5Path"
		set gTBoatLanes[5] = "TBoat6Path"

		set gTBoatPads[0] = "TBoat1EndPad"
		set gTBoatPads[1] = "TBoat2EndPad"
		set gTBoatPads[2] = "TBoat3EndPad"
		set gTBoatPads[3] = "TBoat4EndPad"
		set gTBoatPads[4] = "TBoat5EndPad"
		set gTBoatPads[5] = "TBoat6EndPad"

		set gTBoatTails[0] = "TLand1_Poi"
		set gTBoatTails[1] = "TLand2_Poi"
		set gTBoatTails[2] = "TLand3_Poi"
		set gTBoatTails[3] = "TLand4_Poi"
		set gTBoatTails[4] = "TLand5_Poi"
		set gTBoatTails[5] = "TLand6_Poi"	
	}


	ANYOF( evtLevelBegin )
	( integer nothing integer nothing )
	{
		fInitModelPlacement()
		AddObjectPoi( gAdaraHandle, "Adara", "Dragon1_Start") // Adara Created
		TriggerPulse(500, evtSpriteFollowCael, gAdaraHandle) // Adara bops around Cael

		TriggerDelay(10*SECOND, evtWave1)
		TriggerDelay(5*SECOND, evtTBoat)
		TriggerDelay(5*SECOND, evtTBoat)
		TriggerDelay(5*SECOND, evtTBoat)
		TriggerDelay(5*SECOND, evtTBoat)
		TriggerDelay(5*SECOND, evtTBoat)
		TriggerDelay(5*SECOND, evtTBoat)
	}

	ANYOF (evtMakeMonk) (integer whoGUID)
	{
		create objhandle who
		create xyz monkLoc
		GUIDtoObjHandle(whoGUID, who)
		GetObjLocation (who, monkLoc)

		AddObjectLOC(gModelhandle, "MonkAirA", monkLoc, gOrientation)
		SetHeightAboveGround(gModelhandle, 3.0)
	}			

	//---------------------------------------------------
	// odds n ends declarations
	//---------------------------------------------------



	ANYOF( evtMakeSprite )
	(integer whoGUID )
	{
		create objhandle who
		create xyz spriteLoc
		GUIDtoObjHandle(whoGUID, who)
		GetObjLocation (who, spriteLoc)

		set spriteLoc^z = spriteLoc^z + 0.4
		AddObjectLOC(gModelhandle, "SpriteFire", spriteLoc, gOrientation)
		SetInvulnerable (gModelhandle, 1)
		SetBehaviorWander (gModelhandle, 3.0 )
		fVO_Player( VO_THANK_YOU )

		set gSpriteFound = TRUE
	}
	
	//---------------------------------------------------
	// 55 declarations
	//---------------------------------------------------

	ANYOF(evtMandekCheck)
	(void void)
	{
		create integer hpDiff
		create integer healthbar
		
		set gManHPcur = GetHitPoints( gSuperGalleonHandle )
		
		if ( gManHPcur < MANDEKSHEALTH OR gDamageWell > 0) then							// if Mandek's current health is less than the previous grab: Mandek took damage
		BEGIN
			set hpDiff = MANDEKSHEALTH - gManHPcur						// get the difference between Mandek's previous health and his current: how much damage did Mandek take
			if (hpDiff > DAMAGECAP)
			BEGIN 
				set gDamageWell = gDamageWell + (hpDiff - DAMAGECAP)
				if (gDamageWell > DAMAGEWELL) set gDamageWell = DAMAGEWELL
				set hpDiff = DAMAGECAP
//				IceDisplay ("Taking off 300 from damage\n")
			END
			else if (hpDiff = 0)
			BEGIN
				if (gDamageWell > DAMAGECAP)
				BEGIN
					set hpDiff = DAMAGECAP
					set gDamageWell = gDamageWell - DAMAGECAP
//					IceDisplay ("Taking off 300 from well\n")
				END
				else
				BEGIN
					set hpDiff = gDamageWell
					set gDamageWell = 0
//					IceDisplay("Taking off remainder of well\n")
				END
			END
			set gGhostHPcur = gGhostHPcur - hpDiff					// subtract that difference from God's current HP: offload Mandek's damage onto God...don't we wish we all could
			set gPrcntGodHP = FLOAT(gGhostHPcur) / FLGHOSTHEALTH		// get the percentage at which God's current health stands as compared to God's starting health: what percentage of health does God have left
			set healthBar = INTEGER(100.0 * gPrcntGodHP)		// set this value equal to the percentage of health remaining for God
			SetInvulnerable( gGhostHandle, FALSE )
			SetHitPoints( gGhostHandle, healthBar )					// set Ghost's HP to the percentage remaining value: Ghost starts at 100HP, HUDMeter starts at 100% full
			SetInvulnerable( gGhostHandle, TRUE )
			SetHitPoints( gSuperGalleonHandle, MANDEKSHEALTH )		// if he took damage, then give it back to him
		
			if (healthBar < 1)
			BEGIN
				RemoveObject(gSuperGalleonHandle)
				Trigger(evtMandekDeath)
			END		
		END
	}


	ANYOF(evtMandekDeath)
	{
		create xyz loc
		create xyz ori
		set ori =(0,0,1)

		DisableHudMeter()
		
		// Store Location of Mandek.
		GetObjLocation (gSuperGalleonHandle, loc)

		// Swap model for damaged one.
		AddObjectLoc (gSuperGalleonHandle,"SuperGalleonDamaged", loc, ori)
		fZapLoc(loc)
		SetInvulnerable(gSuperGalleonHandle, 1)
		
//		IceDisplay ("..................Mandek is running!!! \n")

		// Change Mandek state.
		SetDragonSight(gSuperGalleonHandle, 0)
		SetObjIceHandler(gSuperGalleonHandle, ICEOBJHANDLER_PAD, evtMandekEscape)
		SetBehaviorPatrol(gSuperGalleonHandle, "MandekEscapePath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
		SetMovementSpeed(gSuperGalleonHandle,1.5)
		ObjAttachEmitter(gSuperGalleonHandle, "EmitSmokeMandekAft")
		ObjAttachEmitter(gSuperGalleonHandle, "EmitSmokeMandekFore")

		// EXPRESSLY REMOVED FROM DVOS.ICE!!!
		VoiceOverPlay( VO_10MK003 )

		// Win..
		if ( gSpriteFound == TRUE ) AND ( fDCanDragonUpgrade() >= 0 ) then
		BEGIN
			fDUpgradeCreate()
			fVO_Player(FLY_INTO_THE_SPHERE)
		END
		else
		BEGIN
			TriggerDelay (10000, evtArmadaEnd)
		END
	}

	ANYOF (evtArmadaEnd)
	{
		StartFXSequence( P1DragonHandle, FXSEQUENCE_TYPE_WIN, 10000, 0 )
	}
	
	ANYOF(evtMandekEscape)
	(integer whoGUID string padName)
	{
		create objhandle mandek
			
		// Bail if it's not mandek's escape pad that we hit..
		if ( padName != "MandekEscapePad" ) then EXIT

		// Get mandek's handle.
		GUIDtoObjHandle(whoGUID, mandek)

		// Remove Mandek.
		RemoveObject(mandek)
		
		// Display.. Remove.
//		IceDisplay("..................Mandek is gone.. You Win!!! \n")
	}

	//---------------------------------------------------
	// transport declarations
	//---------------------------------------------------

	create integer gGemCount = 0
	
	ANYOF(evtDeadTBoat)
	(integer whoGUID integer killerGUID)
	{
	create objhandle who
	create objhandle assassin

		
		if (GUIDtoObjHandle(killerGUID, assassin) == 0) then
			exit
		else
//			IceDisplay ("..................skating Gem \n")

		GUIDtoObjHandle(whoGUID, who)

		if ( gGemCount < 5 )
		BEGIN
//			IceDisplay ("..................Creating Gem \n")
			GetObjLocation (who, gGemLoc)
			set gGemLoc^z = gGemLoc^z + 1.3
			fDGemCreateLoc(Random(3), gGemLoc)
			set gGemCount = gGemCount + 1
		END

	//respawn transport
	TriggerDelay(25*SECOND, evtTBoat)
	}

	ANYOF( evtGemDied )
	{
		set gGemCount = gGemCount - 1
	}

	ANYOF(evtTBoat)
	(void void)
	{
		create objHandle tmpHandle

//		IceDisplay ("..................Creating Transport \n")
		AddObjectPOI(tmpHandle, "TransportBoat", gTBoatHeads[gNextTBoat])
		SetMovementSpeed  (tmpHandle, 2)
		// Turn on radar marker.
	//	HudRadarEnableMarker(fDRadarObj(SECONDARY, tmpHandle), 1)

		SetObjIceHandler(tmpHandle, ICEOBJHANDLER_DEATH, evtDeadTBoat)
		SetObjIceHandler(tmpHandle, ICEOBJHANDLER_PAD, evtTBoatEscape)

	
		SetDragonSight(tmpHandle, 0)
		SetBehaviorPatrol(tmpHandle, gTBoatLanes[gNextTBoat],PATH_ONEWAY_FORWARD_NEVERSLEEP)

		set gTBoatHandles[gNextTBoat] = tmpHandle
		TriggerDelay(20*SECOND, evtCheckMineRelease, gNextTBoat)

		//increment boat ring counter
		set gNextTBoat = gNextTBoat + 1
		if (gNextTBoat >= 6) then
			set gNextTBoat = 0
		
		//set up Balloon releases
	}

	//////around the poi function
	FUNCTION AddObjectAroundPOI ( Objhandle gilligan,String name, String where )
	{
		create xyz finalLoc

		GetPoiLoc (where, finalLoc)
		set finalLoc = fPerturbXYZ( 2.0, finalLoc )
		AddObjectLocSnap( gilligan, name, finalLoc, gOrientation )
	}

	ANYOF(evtTBoatEscape)
	(integer whoGUID string where)
	{
	create integer n
	create integer rnd
	create objhandle who

		GUIDtoObjHandle(whoGUID, who)
		set n = 0

		while (n<6)	// loop through the number of tBoats that exist
		BEGIN
			if (StringsEqual(where, gTBoatPads[n]) == TRUE) then // check if this is the proper pad for this boat.
			BEGIN
				if (gTroopCount < MAXTROOPS) then // Is there room to drop off more people?
				BEGIN
//					IceDisplay ("..................Unloading troops \n")
					//spawn troops
					set rnd = Random(10)
					if (rnd < 4)
					BEGIN
						AddObjectAroundPOI(gModelHandle, "Archer", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						AddObjectAroundPOI(gModelHandle, "Archer", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						AddObjectAroundPOI(gModelHandle, "Archer", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						AddObjectAroundPOI(gModelHandle, "Cow", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						set gTroopCount = gTroopCount + 4
					
					END
					else if (rnd < 7)
					BEGIN
						AddObjectAroundPOI(gModelHandle, "Skirmisher", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						AddObjectAroundPOI(gModelHandle, "Skirmisher", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						AddObjectAroundPOI(gModelHandle, "Skirmisher", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						AddObjectAroundPOI(gModelHandle, "Cow", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						set gTroopCount = gTroopCount + 4
				
					END
					else if (rnd < 9)
					BEGIN
						AddObjectAroundPOI(gModelHandle, "MonkEarthM", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						set gTroopCount = gTroopCount + 1
					END
					else
					BEGIN
						AddObjectAroundPOI(gModelHandle, "MonkWaterM", gTBoatTails[n])
						AssignTeamID(gModelHandle, 2000)
						set gTroopCount = gTroopCount + 1
					END
				END // check for room

				KillObject(who) //sink boat
				//respawn transport
				TriggerDelay(25*SECOND, evtTBoat)
				exit
			END	// correct pad for this boat
			set n = n + 1
		END // while (n < 6)
	}

	ANYOF (evtObjDiedTeam20)
	{
		set gTroopCount = gTroopCount - 1
	}
		

	//---------------------------------------------------
	// baloon release declarations
	//---------------------------------------------------

	create integer gBalloonCount

	ANYOF (evtCheckMineRelease)
	(integer who void)
	{
	create xyz tempLoc
	create xyz tempGoalLoc					// creating a temporary goal loc because I didn't have a predefined one
	create objHandle tmpHandle
    create integer TBoatHealth

		set tmpHandle = gTBoatHandles[who]
		TriggerDelay((Random(20)+20)*SECOND, evtCheckMineRelease, who)

		if (gReleaseMines == 0 ) EXIT
		if ( gBalloonCount >= 25 ) EXIT
		if ( IsObjectAlive( tmpHandle ) == 0 ) EXIT

//		IceDisplay ("..................Releasing a MINE. \n")

		//create a Balloon.
		GetObjLocation(tmpHandle, tempLoc)
		set tempLoc^z = tempLoc^z + 0.4


		set tempGoalLoc = tempLoc				// set the Balloon's goal loc equal to the origin loc...
		set tempGoalLoc^Z = tempGoalLoc^Z + 1.0			// ...then increase the goal^Z value by 5.0 so the Balloon floats up from the wagon

		set dBalloonYaw = 3.14					// set the Balloon facing this direction
		set dBalloonRadius = 4.5					// set the length of the Balloon's leash to a radial distance of 5.0
		fDBalloonCreateLoc( MINE, tempLoc, tempGoalLoc)	// make the Balloon with all the info supplied within and set above
		SetObjIceHandler( dModelHandle, ICEOBJHANDLER_DEATH, evtBalloonDeath)
		fSandman( dModelHandle, 10*SECOND )
		set gBalloonCount = gBalloonCount + 1
	}

	ANYOF( evtBalloonDeath )
	{
		set gBalloonCount = gBalloonCount - 1
	}

	ANYOF (evtTowerBalloons)
	(objHandle who void)
	{
	create xyz tempLoc
	create xyz tempGoalLoc					// creating a temporary goal loc because I didn't have a predefined one
		
//		IceDisplay ("..................Releasing a BOMB. \n")

		//create a Balloon.
		GetObjLocation(who, tempLoc)
		set tempLoc^z = tempLoc^z + 1.6
		set tempLoc^x = tempLoc^x - 3.0


		set tempGoalLoc = tempLoc				// set the Balloon's goal loc equal to the origin loc...
		set tempGoalLoc^Z = tempGoalLoc^Z + 1.9			// ...then increase the goal^Z value by 5.0 so the Balloon floats up from the wagon

		set dBalloonYaw = 3.14					// set the Balloon facing this direction
		set dBalloonRadius = 5.0					// set the length of the Balloon's leash to a radial distance of 5.0
		fDBalloonCreateLoc( BOMB, tempLoc, tempGoalLoc)	// make the Balloon with all the info supplied within and set above
		fSandman( dModelHandle, 10*SECOND )
	}

	//---------------------------------------------------
	// other ship declarations ???
	//---------------------------------------------------

	FUNCTION fMakeAGalleon(string PoiName, string PathName)
	{
		AddObjectPOI( gModelHandle, "Galleon", PoiName )
			SetBehaviorPatrol( gModelHandle, PathName, PATH_ONEWAY_FORWARD_NEVERSLEEP )
			fZap( PoiName )
//D			fPrimaryRadar( gModelHandle) // Turn on radar marker.
			fDRadarObj( PRIMARY, gModelHandle )
			AssignTeamID( gModelHandle, 3000 )
			SetDragonSight( gModelHandle, 0 )

		set gGalleonCount = gGalleonCount + 1
//		Debug(gGalleonCount)
	}
	
	FUNCTION fMakeACaravel(string PoiName, string PathName)
	{
		AddObjectPOI(gModelHandle, "Caravel", PoiName)
			fZap( PoiName )
			SetBehaviorPatrol(gModelHandle, PathName, PATH_ONEWAY_FORWARD_NEVERSLEEP)
			SetDragonSight(gModelHandle, 0)
	}

	FUNCTION fMakeAZeppelin(string PoiName, string PathName)
	{
		AddObjectPOI(gModelHandle, "Zeppelin", PoiName)
		fZap( PoiName )
			SetBehaviorPatrol(gModelHandle, PathName, PATH_ONEWAY_FORWARD_NEVERSLEEP)
			SetDragonSight(gModelHandle, 0)
			SetHeightAboveGround(gModelHandle, 7.0)
	}

	ANYOF (evtObjDiedTeam30) (integer unitID)
	{
 		set gGalleonCount = gGalleonCount - 1
	}
	
	ONCE ANYOF(evtWave1)
	{ 
		
//		IceDisplay ("..................Wave1 \n")
		fMakeACaravel("WestBoatSpawnEPoi", "WestPath")
		fZap( "WestBoatSpawnEPoi" )
		TriggerDelay(2*SECOND, evtWave1B)
	}
		
	ANYOF(evtWave1B)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 1B in a sec...\n")
			TriggerDelay (1*SECOND, evtWave1B)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthBoatSpawnEPoi", "NorthPath")
			fZap( "NorthBoatSpawnEPoi" )
			TriggerDelay(4*SECOND, evtWave2)
//			IceDisplay ("1st Galleon\n")
		END
	}
 
	ONCE ANYOF(evtWave2)
	{


//		IceDisplay ("..................Wave2 \n")
		fMakeACaravel("NorthWestBoatSpawnAPoi", "NorthWestPath")
		fZap( "NorthWestBoatSpawnAPoi" )
		TriggerDelay(7*SECOND, evtWave2B)
	}
	
	ONCE ANYOF(evtWave2B)
	{
		fMakeACaravel("EastBoatSpawnPoi", "EastshipPath")
		fZap("EastBoatSpawnPoi" )
		TriggerDelay(6*SECOND, evtWave2C)
	}

	ANYOF(evtWave2C)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 2C in a sec...\n")
			TriggerDelay (1*SECOND, evtWave2C)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthWestBoatSpawnBPoi", "NorthWestPathC")
			fZap("NorthWestBoatSpawnBPoi" )
			TriggerDelay(6*SECOND, evtWave2D)
//			IceDisplay ("2nd Galleon\n")
		END
	}

	ANYOF(evtWave2D)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 2D in a sec...\n")
			TriggerDelay (1*SECOND, evtWave2D)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthWestBoatSpawnEPoi", "NorthWestPath")
			fZap("NorthWestBoatSpawnEPoi" )
			TriggerDelay(5*SECOND, evtWave3)
//			IceDisplay ("3rd Galleon\n")
		END
	}

	ONCE ANYOF(evtWave3)
	{
//		IceDisplay ("..................Wave3 \n")
		fMakeACaravel("NorthBoatSpawnAPoi", "NorthPath")
		fZap("NorthBoatSpawnAPoi")
		TriggerDelay(2*SECOND, evtWave3B)
	}

	ONCE ANYOF(evtWave3B)
	{
		fMakeACaravel("NorthBoatSpawnDPoi", "NorthPath")
		fZap("NorthBoatSpawnDPoi")
		TriggerDelay(4*SECOND, evtWave3C)
	}
	
	ONCE ANYOF(evtWave3C)
	{
		fVO_Player(VO_I_REMEMBER) 
 		fMakeACaravel("NorthBoatSpawnEPoi", "NorthPath")
		fZap("NorthBoatSpawnEPoi")
		TriggerDelay(4*SECOND, evtWave3D)
	}

	ANYOF(evtWave3D)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 3D in a sec...\n")
			TriggerDelay (1*SECOND, evtWave3D)
		END
		
		else
		BEGIN
			fMakeAGalleon ("EastBoatSpawnPoi", "EastshipPath")
			fZap("EastBoatSpawnPoi")
			TriggerDelay(5*SECOND, evtWave4)
//			IceDisplay ("4th Galleon\n")
		END
	}

	ONCE ANYOF(evtWave4)
	{
//		IceDisplay ("..................Wave4 \n")
 		fMakeACaravel("WestBoatSpawnDPoi", "WestPath")
		fZap("WestBoatSpawnDPoi")
		TriggerDelay(6*SECOND, evtWave4B)
	}
		
	ONCE ANYOF(evtWave4B)
	{
 		fMakeACaravel("WestBoatSpawnEPoi", "WestPath")
		fZap("WestBoatSpawnEPoi")
		TriggerDelay(6*SECOND, evtWave4C)

	}
		
	ONCE ANYOF(evtWave4C)
	{
 		fMakeACaravel("WestBoatSpawnAPoi", "WestPath")
		fZap("WestBoatSpawnAPoi")
		TriggerDelay(14*SECOND, evtWave4D)
	}
		
	ANYOF(evtWave4D)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 4D in a sec...\n")
			TriggerDelay (1*SECOND, evtWave4D)
		END
		
		else
		BEGIN
			fMakeAGalleon ("WestBoatSpawnCPoi", "WestPath")
			fZap("WestBoatSpawnCPoi")
			TriggerDelay(5*SECOND, evtWave5)
//			IceDisplay ("5th Galleon\n")
		END
	}

	ONCE ANYOF(evtWave5)
	{
//		IceDisplay ("..................Wave5 \n")
 		fMakeACaravel("NorthWestBoatSpawnAPoi", "NorthWestPath")
		fZap("NorthWestBoatSpawnAPoi")
		TriggerDelay(6*SECOND, evtWave5B)
	}
		
	ONCE ANYOF(evtWave5B)
	{
 		fMakeACaravel("NorthWestBoatSpawnBPoi", "NorthWestPath")
		fZap("NorthWestBoatSpawnBPoi")
		TriggerDelay(9*SECOND, evtWave5C)
	}
			
	ANYOF(evtWave5B)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 5D in a sec...\n")
			TriggerDelay (1*SECOND, evtWave5B)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthWestBoatSpawnEPoi", "NorthWestPath")
			fZap("NorthWestBoatSpawnEPoi")
			TriggerDelay(5*SECOND, evtWave6)
//			IceDisplay ("6th Galleon\n")
		END
	}

	ONCE ANYOF(evtWave6)
	{
//		IceDisplay ("..................Wave6 \n")
 		fMakeACaravel("EastBoatSpawnPoi", "EastshipPath")
		fZap("EastBoatSpawnPoi")
		TriggerDelay(6*SECOND, evtWave6B)
	}

	ONCE ANYOF(evtWave6B)
	{
//			IceDisplay ("**********8MINES TURNED OFF ***************MINES TURNED OFF!!!******** \n")
			set gReleaseMines = 0
		fMakeAZeppelin("EastBoatSpawnPoi", "EastshipPath") 
		fZap("EastBoatSpawnPoi")
		SetBehaviorPatrol(gModelHandle, "EastshipPath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			ActAsLeader( gModelHandle, X_FORMATION, DONT_TRANSMIT_LEADERSHIP, 1.0 )

			AddObjectPoi(gFriendlyhandle, "MonkWaterA","LilFriendly1_Poi" )
			fZap("LilFriendly1_Poi")
			SetHeightAboveGround(gFriendlyhandle, 1.6)
			SetBehaviorFollow( gFriendlyhandle, gModelHandle )
		TriggerDelay(6*SECOND, evtWave6C)
	}

	ANYOF(evtWave6C)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 6C in a sec...\n")
			TriggerDelay (1*SECOND, evtWave6C)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthBoatSpawnEPoi", "NorthPath")
			fZap("NorthBoatSpawnEPoi")
			TriggerDelay(6*SECOND, evtWave6D)
//			IceDisplay ("7th Galleon\n")
		END
	}

	ANYOF(evtWave6D)
	{	
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 6D in a sec...\n")
			TriggerDelay (1*SECOND, evtWave6D)
		END
		
		else
		BEGIN
			fMakeAGalleon ("EastBoatSpawnPoi", "EastshipPath")
			fZap("EastBoatSpawnPoi")
			TriggerDelay(5*SECOND, evtWave7)
		END
	}

	ONCE ANYOF(evtWave7)
	{
		set gReleaseMines = 1
//		IceDisplay ("..................Wave7 \n")
 		fMakeAZeppelin("WestBoatSpawnBPoi", "WestPath") 
		fZap("WestBoatSpawnBPoi")
		TriggerDelay(2*SECOND, evtWave7B)
	}

	ANYOF(evtWave7B)
	{

		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 7B in a sec...\n")
			TriggerDelay (1*SECOND, evtWave7B)
		END
		
		else
		BEGIN
			fVO_Player( VO_WATCH_OUT)
			fMakeAGalleon ("WestBoatSpawnAPoi", "WestPath")
			fZap("WestBoatSpawnAPoi")
			TriggerDelay(6*SECOND, evtWave7C)
//			IceDisplay ("8th Galleon\n")
		END
	}

	ANYOF(evtWave7C)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 7C in a sec...\n")
			TriggerDelay (1*SECOND, evtWave7C)
		END
		
		else
		BEGIN
			fMakeAGalleon ("WestBoatSpawnEPoi", "WestPath")
			fZap("WestBoatSpawnEPoi")
			TriggerDelay(7*SECOND, evtWave8)
//			IceDisplay ("9th Galleon\n")
		END
	}

	ONCE ANYOF(evtWave8)
	{
//		IceDisplay ("..................Wave8 \n")
 		fMakeAZeppelin("NorthWestBoatSpawnAPoi", "NorthWestPath")
		fZap("NorthWestBoatSpawnAPoi")
		TriggerDelay(10*SECOND, evtWave8B)
	}

	ANYOF(evtWave8B)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 8B in a sec...\n")
			TriggerDelay (1*SECOND, evtWave8B)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthWestBoatSpawnBPoi", "NorthWestPath")
			fZap("NorthWestBoatSpawnBPoi")
			TriggerDelay(9*SECOND, evtWave8C)
//			IceDisplay ("10th Galleon\n")
		END
	}

	ANYOF(evtWave8C)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 8C in a sec...\n")
			TriggerDelay (1*SECOND, evtWave8C)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthWestBoatSpawnCPoi", "NorthWestPath")
			fZap("NorthWestBoatSpawnCPoi")
			TriggerDelay(8*SECOND, evtWave9)
//			IceDisplay ("11th Galleon\n")
		END
	}

	ONCE ANYOF(evtWave9)
	{
//		IceDisplay ("..................Wave9 \n")
 		fMakeACaravel("NorthBoatSpawnBPoi", "NorthPath")
		fZap("NorthBoatSpawnBPoi")
		TriggerDelay(3*SECOND, evtWave9B)
	}

	ONCE ANYOF(evtWave9B)
	{
 		fMakeACaravel("NorthBoatSpawnDPoi", "NorthPath")
		fZap("NorthBoatSpawnDPoi")
		TriggerDelay(3*SECOND, evtWave9C)
	}
		
	ANYOF(evtWave9C)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 9C in a sec...\n")
			TriggerDelay (1*SECOND, evtWave9C)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthBoatSpawnEPoi", "NorthPath")
			fZap("NorthBoatSpawnEPoi")
			TriggerDelay(6*SECOND, evtWave9D)
//			IceDisplay ("12th Galleon\n")
		END
	}
	
	ANYOF(evtWave9D)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 9D in a sec...\n")
			TriggerDelay (1*SECOND, evtWave9D)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthBoatSpawnAPoi", "NorthPath")
			fZap("NorthBoatSpawnAPoi")
			TriggerDelay(5*SECOND, evtWave9E)
//			IceDisplay ("13th Galleon\n")
		END
	}
		
	ANYOF(evtWave9E)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 9E in a sec...\n")
			TriggerDelay (1*SECOND, evtWave9E)
		END
		
		else
		BEGIN
			set gWave9 = TRUE
			fMakeAGalleon ("NorthBoatSpawnCPoi", "NorthPath")
			fZap("NorthBoatSpawnCPoi")
			TriggerDelay(8*SECOND, evtWave10)
//			IceDisplay ("14th Galleon\n")
		END
	}

	ONCE ANYOF(evtWave10)
	{
		fVO_Player(VO_HANG_IN_THERE)
//		IceDisplay ("..................Wave10 \n")
 		fMakeACaravel("NorthWestBoatSpawnAPoi", "NorthWestPath")
		fZap("NorthWestBoatSpawnAPoi")
		TriggerDelay(8*SECOND, evtWave10B)
	}
	
	ONCE ANYOF(evtWave10B)
	{
 		fMakeACaravel("NorthWestBoatSpawnCPoi", "NorthWestPathC")
		fZap("NorthWestBoatSpawnCPoi")
		TriggerDelay(8*SECOND, evtWave10C)
	}

	ANYOF(evtWave10C)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 10C in a sec...\n")
			TriggerDelay (1*SECOND, evtWave10C)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthWestBoatSpawnDPoi", "NorthWestPath")
			fZap("NorthWestBoatSpawnDPoi")
			TriggerDelay(6*SECOND, evtWave10D)
//			IceDisplay ("15th Galleon\n")
		END
	}

	ANYOF(evtWave10D)
	{
		if (gGalleonCount > MAXGALLEONS)
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 10D in a sec...\n")
			TriggerDelay (1*SECOND, evtWave10D)
		END
		
		else
		BEGIN
			fMakeAGalleon ("NorthWestBoatSpawnBPoi", "NorthWestPathC")
			fZap("NorthWestBoatSpawnBPoi")
			TriggerDelay(1*SECOND, evtWave11)
		END
	}

	ANYOF(evtWave11)
	(void void)
	{
		create integer i

		if ( gGalleonCount != 0 )
		BEGIN
//			IceDisplay ("TOO MANY GALLEONS, will try 11 in two secs...\n")
			TriggerDelay ( 2*SECOND, evtWave11 )
		END
		
		else
		BEGIN
//			IceDisplay ("..................SUPER GALLEON!!! \n")

			AddObjectPOI(gSuperGalleonHandle, "SuperGalleon", "Mandek_Poi")//"SuperGalleon"
			fZap("Mandek_Poi")
				SetMovementSpeed  (gSuperGalleonHandle, 2.3)
				SetFireRate (gSuperGalleonHandle, 0.5 )
				SetBehaviorPatrol(gSuperGalleonHandle, "MandekPath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
				ActAsLeader( gSuperGalleonHandle, X_FORMATION, DONT_TRANSMIT_LEADERSHIP, 2.5 )
				SetObjIceHandler (gSuperGalleonHandle, ICEOBJHANDLER_UPDATE, evtMandekCheck)				
			
			fVO_Player(VO_SO_ITS_TRUE)

			// Clear all primary markers.
//D			fPrimaryRadarClearAll()
			while i < 20
			BEGIN
				HudRadarDisableMarker( i, DRAGON1 )
				set i = i + 1
			END
			// Turn on radar marker.
			fDRadarObj( PRIMARY, gSuperGalleonHandle )
			
			EnableHudHealthMeter (gGhostHandle)
			SetHudMeterCaption ( "Mandek's Flagship" )
			
			
			AddObjectPoi(gFriendlyhandle, "MonkFireA","LilFriendly2_Poi" )
			fZap("LilFriendly2_Poi")
				SetBehaviorFollow( gFriendlyhandle, gSuperGalleonHandle )
				SetMovementSpeed  (gFriendlyhandle, 2.1)
				SetHeightAboveGround(gFriendlyhandle, 3.7)
			
			AddObjectPoi(gFriendlyhandle, "MonkFireA","LilFriendly2_Poi" )
			fZap("LilFriendly2_Poi")
				SetBehaviorFollow( gFriendlyhandle, gSuperGalleonHandle )
				SetMovementSpeed  (gFriendlyhandle, 2.1)
				SetHeightAboveGround(gFriendlyhandle, 2.5)
		END
	}

..\TECH\DATA\ARMADA\ARMADA.CML

<CASTLE version="1" >
</CASTLE>

..\TECH\DATA\ARMADA\ARMADA.PMF

<?xml version="1.0" encoding="UTF-8"?>
<PADS VER="1">
	<PAD NAME="TBoat5EndPad"  X="103" Y="18" DX="7" DY="5" />
	<PAD NAME="TBoat6EndPad"  X="78" Y="28" DX="5" DY="6" />
	<PAD NAME="TBoat2EndPad"  X="97" Y="51" DX="5" DY="6" />
	<PAD NAME="TBoat3EndPad"  X="58" Y="12" DX="6" DY="5" />
	<PAD NAME="TBoat4EndPad"  X="95" Y="85" DX="6" DY="7" />
	<PAD NAME="TBoat1EndPad"  X="60" Y="47" DX="4" DY="5" />
	<PAD NAME="MandekEscapePad"  X="38" Y="116" DX="9" DY="7" />
</PADS>

..\TECH\DATA\ARMADA\ARMADA.POI

IslandAPeasant1Poi                	  59.000 	  22.200 	   0.000 	   0.000 	   0.000 	  -0.053 
IslandGDefender2Poi               	  97.749 	  81.207 	   0.000 	   0.000 	   0.000 	  -0.034 
IslandGDefender1Poi               	  55.971 	  20.840 	   0.000 	   0.000 	   0.000 	  -0.991 
IslandDDefender2Poi               	  58.247 	  42.172 	   0.000 	   0.000 	   0.000 	   0.024 
IslandDDefender1Poi               	  65.143 	  48.491 	   0.000 	   0.000 	   0.000 	  -1.337 
IslandCDefender2Poi               	  82.370 	  29.608 	   0.000 	   0.000 	   0.000 	  -1.318 
IslandCDefender1Poi               	  78.535 	  26.543 	   0.000 	   0.000 	   0.000 	   0.130 
IslandCSheep1Poi                  	  56.215 	  19.184 	   0.000 	   0.000 	   0.000 	  -0.030 
IslandACow2Poi                    	  58.527 	  12.987 	   0.000 	   0.000 	   0.000 	   0.002 
IslandACow1Poi                    	  57.600 	  20.800 	   0.000 	   0.000 	   0.000 	  -1.057 
IslandFCow2Poi                    	 106.419 	  19.243 	   0.000 	   0.000 	   0.000 	   0.761 
IslandFPeasant2Poi                	  97.125 	  41.400 	   0.000 	   0.000 	   0.000 	   0.000 
IslandFCow1Poi                    	  85.625 	  40.700 	   0.000 	   0.000 	   0.000 	   0.000 
IslandFPeasant1Poi                	  96.275 	  49.198 	   0.000 	   0.000 	   0.000 	  -1.081 
Dragon1_Start                     	 115.089 	  10.011 	   8.619 	  -0.346 	   0.268 	   0.064 
TBoat1_Poi                        	  24.400 	 124.400 	  -1.237 	   0.000 	   0.000 	  -3.119 
WestBoatSpawnCPoi                 	   2.200 	  66.600 	  -1.237 	   0.000 	   0.000 	  -1.679 
NorthWestBoatSpawnCPoi            	   6.000 	 118.600 	  -1.237 	   0.000 	   0.000 	  -1.679 
NorthBoatSpawnCPoi                	  52.400 	 127.000 	  -1.237 	   0.000 	   0.000 	  -3.119 
InitialFleet1Poi                  	  28.200 	  38.000 	   0.000 	   0.000 	   0.000 	   0.000 
InitialFleet3Poi                  	  56.200 	  99.000 	   0.000 	   0.000 	   0.000 	   0.000 
InitialFleet5Poi                  	 106.200 	  30.200 	   0.000 	   0.000 	   0.000 	   0.000 
InitialFleet7Poi                  	  25.200 	  62.800 	   0.000 	   0.000 	   0.000 	   0.000 
InitialFleet6Poi                  	  42.400 	  43.000 	   0.000 	   0.000 	   0.000 	   0.000 
IslandDSheep1Poi                  	  64.079 	  42.245 	   0.000 	   0.000 	   0.000 	   0.000 
InitialFleet2Poi                  	  36.800 	  80.600 	   0.000 	   0.000 	   0.000 	   0.000 
IslandGDefender3Poi               	  96.409 	  82.385 	   0.000 	   0.000 	   0.000 	  -1.157 
ShrinePoi                         	  87.202 	  88.031 	   0.460 	   0.000 	   0.000 	  -1.838 
NorthBoatSpawnAPoi                	  33.867 	 125.800 	  -1.237 	   0.000 	   0.000 	  -3.119 
NorthBoatSpawnBPoi                	  42.600 	 126.600 	  -1.237 	   0.000 	   0.000 	  -3.119 
NorthBoatSpawnDPoi                	  53.200 	 125.600 	  -1.237 	   0.000 	   0.000 	  -3.119 
NorthBoatSpawnEPoi                	  53.800 	 124.200 	   0.000 	   0.000 	   0.000 	  -3.119 
NorthWestBoatSpawnAPoi            	  12.400 	 125.200 	  -1.237 	   0.000 	   0.000 	  -1.679 
NorthWestBoatSpawnBPoi            	   6.000 	 124.000 	  -1.237 	   0.000 	   0.000 	  -1.679 
NorthWestBoatSpawnDPoi            	   3.200 	 111.000 	  -1.237 	   0.000 	   0.000 	  -1.679 
NorthWestBoatSpawnEPoi            	   3.000 	 102.133 	  -1.237 	   0.000 	   0.000 	  -1.679 
WestBoatSpawnAPoi                 	   6.800 	  74.600 	  -1.237 	   0.000 	   0.000 	  -1.679 
WestBoatSpawnBPoi                 	   3.200 	  71.000 	  -1.237 	   0.000 	   0.000 	  -1.679 
WestBoatSpawnDPoi                 	   1.000 	  61.600 	  -1.237 	   0.000 	   0.000 	  -1.679 
WestBoatSpawnEPoi                 	   2.600 	  55.000 	  -1.237 	   0.000 	   0.000 	  -1.237 
Farmhouse_045                     	 100.216 	  44.122 	  -0.004 	   0.000 	   0.000 	  -0.566 Farmhouse
Farmhouse_046                     	  99.563 	  48.061 	  -0.034 	   0.242 	   0.002 	  -2.669 Farmhouse
Farmhouse_048                     	  80.942 	  27.903 	  -0.012 	   0.000 	   0.000 	  -1.173 Farmhouse
Farmhouse_049                     	  59.406 	  21.249 	  -0.035 	   0.000 	   0.000 	  -4.441 Farmhouse
Silo_049                          	 101.344 	  43.990 	  -0.064 	  -0.095 	   0.000 	   3.917 Silo
Silo_050                          	  55.970 	  15.570 	  -0.076 	   0.000 	   0.000 	  -1.832 Silo
Wind02_Poi                        	  85.456 	  42.264 	  -0.076 	  -0.075 	   0.000 	  -5.125 
Wind01_Poi                        	 108.363 	  18.624 	  -0.119 	   0.008 	  -0.025 	   0.821 
TreeEvergreen_052                 	  56.778 	  16.944 	   0.000 	   0.000 	   0.000 	  -4.087 TreeEvergreen
TreeEvergreen_053                 	  60.695 	  22.651 	   0.000 	   0.000 	   0.000 	  -2.422 TreeEvergreen
TreeEvergreen_054                 	  57.125 	  21.625 	   0.000 	   0.000 	   0.000 	  -1.021 TreeEvergreen
TreeEvergreen_055                 	  57.359 	  22.730 	   0.000 	   0.000 	   0.000 	  -1.960 TreeEvergreen
TreeEvergreen_056                 	  56.477 	  17.318 	   0.000 	   0.000 	   0.000 	  -2.336 TreeEvergreen
TreeEvergreen_057                 	  55.255 	  16.358 	   0.000 	   0.000 	   0.000 	  -0.680 TreeEvergreen
TreeEvergreen_058                 	  78.102 	  28.445 	   0.000 	   0.000 	   0.000 	  -2.180 TreeEvergreen
TreeEvergreen_059                 	  76.746 	  24.779 	   0.000 	   0.000 	   0.000 	  -1.385 TreeEvergreen
TreeEvergreen_060                 	  79.953 	  28.443 	   0.000 	   0.000 	   0.000 	  -1.067 TreeEvergreen
TreeEvergreen_061                 	  80.572 	  28.977 	   0.000 	   0.000 	   0.000 	  -2.914 TreeEvergreen
TreeEvergreen_062                 	  83.572 	  28.404 	   0.000 	   0.000 	   0.000 	  -0.443 TreeEvergreen
TreeEvergreen_063                 	  84.069 	  29.378 	   0.000 	   0.000 	   0.000 	  -0.534 TreeEvergreen
TreeEvergreen_064                 	  90.694 	  27.407 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_065                 	 105.828 	  18.764 	   0.000 	   0.000 	   0.000 	  -2.258 TreeEvergreen
TreeEvergreen_066                 	  90.977 	  25.050 	   0.000 	   0.000 	   0.000 	  -2.563 TreeEvergreen
TreeEvergreen_067                 	  99.293 	  43.009 	   0.000 	   0.000 	   0.000 	  -1.592 TreeEvergreen
TreeEvergreen_068                 	 100.875 	  42.750 	   0.000 	   0.000 	   0.000 	  -2.240 TreeEvergreen
TreeEvergreen_069                 	 101.592 	  45.126 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_070                 	 101.371 	  45.931 	   0.000 	   0.000 	   0.000 	  -4.888 TreeEvergreen
TreeEvergreen_071                 	  98.082 	  51.733 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_072                 	  82.934 	  41.553 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_073                 	  84.082 	  41.248 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_074                 	  78.245 	  29.615 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_075                 	  97.873 	  50.623 	   0.000 	   0.000 	   0.000 	  -1.188 TreeEvergreen
TreeEvergreen_076                 	  96.751 	  53.885 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_077                 	  99.102 	  49.047 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_078                 	  99.712 	  75.169 	   0.000 	   0.000 	   0.000 	   0.005 TreeEvergreen
TreeEvergreen_079                 	  95.971 	  79.249 	   0.000 	   0.000 	   0.000 	   0.000 TreeEvergreen
TreeEvergreen_085                 	  84.411 	  42.267 	   0.000 	   0.000 	   0.000 	  -1.389 TreeEvergreen
TreeEvergreen_090                 	 105.718 	  20.025 	   0.000 	   0.000 	   0.000 	  -0.915 TreeEvergreen
TBoat4_Poi                        	  92.800 	 123.800 	  -1.237 	   0.000 	   0.000 	  -3.119 
TBoat5_Poi                        	  11.133 	  37.333 	  -1.237 	   0.000 	   0.000 	  -1.679 
TBoat6_Poi                        	 103.800 	 118.333 	  -1.237 	   0.000 	   0.000 	  -3.119 
TBoat2_Poi                        	  10.400 	  69.600 	  -1.237 	   0.000 	   0.000 	  -1.679 
TBoat3_Poi                        	  12.400 	  15.600 	  -1.237 	   0.000 	   0.000 	  -1.679 
Tower1_Poi                        	  97.179 	  79.888 	   0.105 	   0.000 	   0.039 	  -4.010 
Tower2_Poi                        	  61.593 	  20.962 	   0.000 	   0.000 	   0.000 	   0.476 
Tower4_Poi                        	  87.626 	  28.569 	   0.122 	   0.000 	   0.014 	  -2.145 
Bomb01_Poi                        	  95.227 	  77.312 	   0.000 	   0.000 	   0.000 	  -1.679 
Bomb02_Poi                        	 101.653 	  49.094 	   0.000 	   0.000 	   0.000 	  -0.875 
Tower5_Poi                        	  77.125 	  22.528 	   0.061 	  -0.067 	   0.000 	   1.300 
Bomb03_Poi                        	  81.535 	  30.102 	   0.000 	   0.000 	   0.000 	  -0.699 
Bomb04_Poi                        	  61.000 	  17.543 	   0.000 	   0.000 	   0.000 	  -1.349 
Bomb05_Poi                        	  59.600 	  46.800 	   0.000 	   0.000 	   0.000 	   0.757 
InitialFleet4Poi                  	  70.800 	  88.000 	   0.000 	   0.000 	   0.000 	   0.000 
Tower3_Poi                        	  74.600 	  48.800 	   0.000 	   0.000 	   0.000 	   0.000 
Stone1_Poi                        	  85.900 	  83.433 	   0.000 	   5.238 	  -0.209 	  -4.565 StandingStoneTall
Stone2_Poi                        	  88.833 	  89.644 	   0.000 	   0.201 	   0.000 	  -2.861 StandingStoneTall
Stone3_Poi                        	  87.733 	  83.800 	   0.000 	  -0.366 	   0.000 	  -2.736 StandingStoneTall
Stone4_Poi                        	  91.700 	  89.167 	   0.000 	  -0.488 	   0.000 	   0.610 StandingStoneTall
Stone5_Poi                        	  84.100 	  88.600 	   0.000 	  -0.315 	   0.000 	   0.000 
Stone6_Poi                        	  91.267 	  86.533 	   0.000 	  -0.481 	   0.000 	  -2.235 StandingStoneTall
Wreck1_Poi                        	  90.542 	  76.488 	   0.161 	   0.321 	   0.236 	  -3.119 RuinsWreckedGalleon
UpgradeFirePoi                    	  62.925 	  25.893 	   2.184 	   0.000 	   0.000 	   0.018 
UpgradeEarthPOI                   	  69.122 	  49.220 	   2.007 	   0.000 	   0.219 	   0.075 
UpgradeWaterPOI                   	  75.251 	  54.925 	   2.741 	   0.000 	   0.000 	   0.454 
UpgradeAirPOI                     	  72.304 	  40.825 	   3.708 	   1.142 	   0.681 	  -0.221 
UpgradeFirePOI                    	  80.336 	  47.420 	   2.263 	   0.000 	  -0.647 	  -1.176 
Wind03_Poi                        	  95.150 	  84.278 	  -0.103 	  -0.084 	   0.002 	  -2.759 
POI_114                           	  53.308 	  32.710 	   0.257 	   0.000 	   0.000 	   1.728 GuardTurretAirT
POI_116                           	  90.040 	  84.394 	  -0.002 	  -0.587 	   0.050 	  -1.427 RuinsStoneTower
POI_117                           	  83.568 	  89.152 	   0.227 	   0.118 	  -0.265 	  -1.688 RuinsStoneTower
POI_118                           	  84.139 	  82.999 	  -0.243 	  -0.655 	   0.044 	  -0.089 RuinsStoneTower
POI_120                           	  53.201 	  37.512 	  -0.960 	   0.597 	   0.319 	   5.535 RuinsWreckedGalleon
Mandek_Poi                        	 125.634 	  59.267 	  -1.237 	   0.000 	   0.000 	   1.300 
EastBoatSpawnPoi                  	 124.400 	 102.800 	  -1.237 	   0.000 	   0.000 	  -3.119 
Shrine2_Poi                       	  44.333 	  20.000 	   0.000 	   0.000 	   0.000 	   0.000 
Cow1_Poi                          	  57.388 	  19.446 	   0.000 	   0.000 	   0.000 	  -1.130 
Cow2_Poi                          	  61.502 	  40.917 	   0.000 	   0.000 	   0.000 	   0.692 
Cow3_Poi                          	  95.100 	  80.634 	   0.000 	   0.000 	   0.000 	  -0.159 
IslandXPeasant1Poi                	  97.333 	  51.396 	   0.000 	   0.000 	   0.000 	  -0.053 
TLand2_Poi                        	  98.667 	  45.833 	   0.000 	   0.000 	   0.000 	   0.000 
TLand4_Poi                        	  96.167 	  80.933 	   0.000 	   0.000 	   0.000 	   0.000 
TLand1_Poi                        	  61.833 	  45.833 	   0.000 	   0.000 	   0.000 	   0.000 
TLand6_Poi                        	  82.500 	  27.500 	   0.000 	   0.000 	   0.000 	   0.000 
TLand5_Poi                        	 108.500 	  19.500 	   0.000 	   0.000 	   0.000 	   0.000 
TLand3_Poi                        	  56.667 	  14.500 	   0.000 	   0.000 	   0.000 	   0.000 
LilFriendly1_Poi                  	 122.200 	 103.200 	  -1.237 	   0.000 	   0.000 	   0.000 
LilFriendly2_Poi                  	 123.400 	  57.000 	  -1.237 	   0.000 	   0.000 	   0.000 
ENDOFPOIFILE

..\TECH\DATA\COLLSON\BEND.TXT

SUBSPHERE
0.0f, 0.0f, 0.0f, 5.25f
0.0f, -3.0f, 0.0f, 1.5f
0.0f, -3.0f, 1.0f, 1.5f
0.0f, -3.0f, 2.0f, 1.5f
0.0f, -3.0f, 3.0f, 1.5f
0.0f, -2.0f, 3.0f, 0.75f
0.0f, -0.8f, 2.7f, 1.0f
0.0f,  0.0f, 2.3f, 0.75f
0.0f,  1.0f, 1.9f, 0.75f
0.0f,  2.0f, 1.3f, 0.75f
0.0f,  3.0f, 0.8f, 0.75f
0.0f,  4.0f, 0.0f, 0.75f

..\TECH\DATA\COLLSON\BSPAN.TXT

SUBSPHERE
0.0f, 0.0f, 0.0f, 6.5f
0.0f, 0.0f, 0.1f, 1.1f
0.0f, 1.0f, 0.0f, 0.8f
0.0f, 2.0f, -0.25f, 0.7f
0.0f, 3.0f, -0.25f, 0.85f
0.0f, 4.4f, -0.7f, 0.8f
0.0f, 5.4f, -0.7f, 0.75f
0.0f, -1.0f, 0.0f, 0.8f
0.0f, -2.0f, -0.25f, 0.7f
0.0f, -3.0f, -0.25f, 0.85f
0.0f, -4.4f, -0.7f, 0.8f
0.0f, -5.4f, -0.7f, 0.75f

..\TECH\DATA\COLLSON\CAPN.TXT

SUBSPHERE
0.0f  0.0f  0.6f    0.6f  

..\TECH\DATA\COLLSON\COLLSON.INI

BEGIN_COLLISION_FILES_LIST
2 dragon.txt
100 walker.txt
2 windmill.txt
2 galvilla.txt
2 trikeep.txt
2 zfactory.txt
2 grthall.txt
2 mine.txt
2 zepp.txt
2 bspan.txt
2 bend.txt
2 capn.txt
10 roar.txt
1 pier.txt
1 incbator.txt
END_COLLISION_FILES_LIST

BEGIN_LEVEL_CUSTOMIZE demoa
END_LEVEL_CUSTOMIZE

BEGIN_LEVEL_CUSTOMIZE dwalpineb
END_LEVEL_CUSTOMIZE


BEGIN_LEVEL_CUSTOMIZE tom
END_LEVEL_CUSTOMIZE

BEGIN_LEVEL_CUSTOMIZE dragon1
END_LEVEL_CUSTOMIZE


BEGIN_LEVEL_CUSTOMIZE escape
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE scramble
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE homeland
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE defend
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE revenge
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE training
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE payback
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE trap
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE rescue
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE armada
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE cove
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE gold
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE ambush
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE war
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE rampage
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE tower
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE egg1
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE egg2
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE feed1
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE feed2
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE duel1
END_LEVEL_CUSTOMIZE
	

BEGIN_LEVEL_CUSTOMIZE duel2
END_LEVEL_CUSTOMIZE

..\TECH\DATA\COLLSON\DRAGON.TXT

SUBSPHERE
0.0f, 0.0f, 0.0f, 0.35f,
0.0f, 0.0f, 0.0f, 0.125f,
0.20f, 0.0f, 0.0f, 0.08f,
-0.20f, 0.0f, 0.0f, 0.08f

..\TECH\DATA\COLLSON\GALVILLA.TXT

SUBSPHERE
0.00f, 0.00f, 0.00f, 7.00f,
-3.00f, -1.00f, -0.30f, 4.00f,
3.00f, -1.00f, -0.30f, 4.00f,
-0.70f, 1.50f, 1.00f, 2.50f,
-0.70f, 1.50f, 3.30f, 2.50f,

..\TECH\DATA\COLLSON\GRTHALL.TXT

SUBSPHERE
0.00f, 0.00f, 0.00f, 7.00f,
-3.00f, -1.00f, -0.30f, 4.00f,
3.00f, -1.00f, -0.30f, 4.00f,
-0.70f, 1.50f, 1.00f, 2.50f,
-0.70f, 1.50f, 3.30f, 2.50f,

..\TECH\DATA\COLLSON\INCBATOR.TXT

SUBSPHERE
0.0f, 0.0f, 0.0f, 2.75f,
0.0f, 0.0f, 0.5f, 1.75f,
2.0f, 0.0f, 0.3f, 0.5f,
0.0f, -2.0f, 0.3f, 0.75f,

..\TECH\DATA\COLLSON\MINE.TXT

CYLINDER
1.5f  2.5f  1.0f      

..\TECH\DATA\COLLSON\PIER.TXT

SUBSPHERE
0.0f, 0.0f, 0.0f, 5.5f
0.0f, 0.0f, 0.5f, 1.75f
0.0f, 1.5f, 0.5f, 1.75f
0.0f, 3.25f, 0.5f, 1.0f
0.0f, -1.5f, 0.5f, 1.75f
0.0f, -3.0f, 0.5f, 2.0f
0.5f, 0.5f, 2.5f, 0.5f

..\TECH\DATA\COLLSON\ROAR.TXT

SUBSPHERE
0.0f, 0.0f, 0.0f, 0.3f

..\TECH\DATA\COLLSON\TRIKEEP.TXT

SUBSPHERE
0.00f, 0.00f, 1.00f, 3.00f,
0.00f, 1.00f, 0.0f, 1.30f,
0.95f, -1.10f, 0.00f, 1.30f,
-0.95f, -0.40f, 0.00f, 1.30f,
-1.00f, -0.45f, 1.51f, 0.60f,

..\TECH\DATA\COLLSON\WALKER.TXT

SUBSPHERE
0.0f  0.0f  0.2f    0.2f  

..\TECH\DATA\COLLSON\WINDMILL.TXT

CYLINDER
1.0f  2.0f  1.0

..\TECH\DATA\COLLSON\ZEPP.TXT

SUBSPHERE
0.0f  0.0f  -0.7f    2.8f  

..\TECH\DATA\COLLSON\ZFACTORY.TXT

SUBSPHERE
0.0f, 0.0f, 0.0f, 5.0f
0.0f, 0.0f, 2.0f, 2.0f
0.0f, 0.0f, 0.0f, 2.5f
3.0f, 0.0f, -0.5f, 2.0f
-3.0f, 0.0f, -0.5f, 2.0f

..\TECH\DATA\COVE\COVE.ICE

include "../scripts/dtypes.ice"
include "../scripts/dballoons.ice"

create ObjHandle gModelHandle
create xyz gObjectLoc
create xyz gObjectOrientation

constant NUM_BOMB_BALLOONS = 8

constant enum VOICE_OVERS
{
	VO_ADARAINTRO,
	VO_DARKKEYCLUE,
	VO_AIRGEMCLUE,
	VO_RESCUEDSPRITE,
	VO_GOTDARKKEY,
	VO_MANDEKTAUNT,
	VO_COVEDESTROYED,
	VO_LEVELLOSE,
	VO_LEVELWIN
}	

constant TEAM_TBOAT = 5400

make integer IntArray10[10]
make string stringArrayBomb[NUM_BOMB_BALLOONS]
make string stringArrayTwentyOne[21]

	create IntArray10[] gTBoatGemFlag

	//POIs
	create stringArrayBomb[] gBomberPOIArray = (
		"BombBalloon1Poi", "BombBalloon2Poi", "BombBalloon3Poi", "BombBalloon4Poi", 
		"BombBalloon5Poi", "BombBalloon6Poi", "BombBalloon7Poi", "BombBalloon8Poi"
	)

	create stringArrayTwentyOne[] gMinePOIArray = (
		"MineBalloon1Poi", "MineBalloon2Poi", "MineBalloon3Poi", "MineBalloon4Poi", 
		"MineBalloon5Poi", "MineBalloon6Poi", "MineBalloon7Poi", "MineBalloon8Poi",
		"MineBalloon9Poi", "MineBalloon10Poi", "MineBalloon11Poi", "MineBalloon12Poi", 
		"MineBalloon13Poi", "MineBalloon14Poi", "MineBalloon15Poi", "MineBalloon16Poi",
		"MineBalloon17Poi", "MineBalloon18Poi", "MineBalloon19Poi", "MineBalloon20Poi",
		"MineBalloon21Poi"
	)


//	fVO_Player( VO_LEVELLOSE)

	create integer gCoveMarker
	create integer gBaseCount = 3 //Counting destroyed buildings at the zeppelin base
	create integer gCoveCount = 3 //Counting destroyed buildings in the Cove
	create integer gMaxFuryCharge
	create integer gAirVO = FALSE
	create integer gDarkVO = FALSE
	create integer gTauntVO = FALSE
	create integer gZBaseDead = FALSE
	create integer gNextBoat = FALSE
	create integer gTBoatCount
	create integer gGemCount
	create ObjHandle gDarkKeyHandle
	create ObjHandle gDarkWardHandle
	create ObjHandle gDarkWardGeneratorHandle
	create ObjHandle gZeppelinBaseHandle
	create ObjHandle gCoveBaseHandle
	create ObjHandle gMandekHandle
	create ObjHandle gSprite1Handle
	create ObjHandle gSprite2Handle
	create ObjHandle gAdaraHandle
	create xyz gPoiLoc
	create xyz gTempLoc
	create xyz gGemLoc
	create xyz gLocation
	create xyz gOrientation = (0.0, 0.0, 0.0)
	create float gDragonDistance

	create integer gGotKeyBool //Shows whether or not the Player is carrying the Key
	create integer gGotGemBool
	create integer gFoundKeyBool //so as not to play the "find the key" VO if already found
	create integer gGotUpgrade = FALSE

	create ObjHandle gPatrolAHandle
	create ObjHandle gPatrolBHandle
	create ObjHandle gPatrolCHandle
	create ObjHandle gPatrolDHandle
	create ObjHandle gPatrolEHandle

	create ObjHandle gCoveDefender1Handle
	create ObjHandle gCoveDefender2Handle
	create ObjHandle gCoveDefender3Handle
	create ObjHandle gCoveDefender4Handle
	create ObjHandle gCoveDefender5Handle
	create ObjHandle gCoveDefender6Handle
	create ObjHandle gCoveDefender7Handle
	create ObjHandle gCoveDefender8Handle
	create ObjHandle gFireTurret1Handle
	create ObjHandle gFireTurret2Handle
	create ObjHandle gFireTurret3Handle
	create ObjHandle gFireTurret4Handle
	create ObjHandle gFireTurret5Handle
	create ObjHandle gFireTurret6Handle
	create ObjHandle gFireTurret7Handle
	create ObjHandle gFireTurret8Handle
	create ObjHandle gFireTower1Handle
	create ObjHandle gFireTower2Handle
	create ObjHandle gFireTower3Handle
	create ObjHandle gBarnHandle

	create ObjHandle gCoveBase1Handle
	create ObjHandle gCoveBase2Handle
	create ObjHandle gCoveBase3Handle


	//---------------------------------------------------
	// Function declarations
	//---------------------------------------------------

	
	////////////////////////////////////////////////////////////////////////////////
	// ZAP MODULE
	////////////////////////////////////////////////////////////////////////////////

	// fPerturbFloat
	FUNCTION fPerturbFloat RETURN float( integer radius float myFloat)
	{
		RETURN myFloat - FLOAT( radius) + FLOAT( Random( 1+2*radius))
	}

	FUNCTION fPerturbXYZ RETURN xyz( integer radius xyz myLoc)
	{
		create xyz tempLoc

		set tempLoc = (0.0, 0.0, 0.0)
		set tempLoc^x = fPerturbFloat( radius, myLoc^x)
		set tempLoc^y = fPerturbFloat( radius, myLoc^y)
 		set tempLoc^z = myLoc^z

		RETURN tempLoc
	}

	// fZapLoc
	FUNCTION fZapLoc( xyz zapLoc )
	{
		create xyz effectLoc
		create xyz skyLoc

		set effectLoc = fPerturbXYZ(2, zapLoc)
		set effectLoc^z = effectLoc^z+4.0
		//set skyLoc = fPerturbXYZ(20, (64.0, 64.0, 30.0))
		set skyLoc = zapLoc
		set skyLoc^z = skyLoc^z + 15.0


		//bolt comes down from sky
		//branches comes up from poi
		//fade out bolt for immediate effect
		//grow in branches for delayed effect 

			// bolt from sky
		CreateLightning( skyLoc, zapLoc, ELIGHTNING_EFFECT_OPTION_THICK+ELIGHTNING_EFFECT_OPTION_SHAFT+ELIGHTNING_EFFECT_OPTION_COOL+ELIGHTNING_EFFECT_OPTION_END_SPOT+ELIGHTNING_EFFECT_OPTION_FADE+ELIGHTNING_EFFECT_OPTION_SOUNDFX, 0.5 )
			//branch from ground
		CreateLightning( zapLoc, effectLoc, ELIGHTNING_EFFECT_OPTION_THIN+ELIGHTNING_EFFECT_OPTION_BRANCH+ELIGHTNING_EFFECT_OPTION_COLD+ELIGHTNING_EFFECT_OPTION_GROW, 0.6 )
	}


	// fZap
	FUNCTION fZap ( string poi)
	{
		create xyz zapLoc

		GetPoiLoc( poi, zapLoc )
		fZapLoc( zapLoc )
	}



	FUNCTION fInitModelPlacement()
	{
		// Dark Ward
		fDWardCreatePOI(DARK, "DarkWardGeneratorPoi", 7.0, 16.0)
		set gDarkWardGeneratorHandle = dModelHandle

		//  Shrine
		GetPoiLoc("ShrinePoi", gTempLoc)
		fDShrineCreateLoc(gTempLoc)
		GetPoiLoc("Shrine2Poi", gTempLoc)
		fDShrineCreateLoc(gTempLoc)

		// Air Ward at base
		fDWardCreatePOI(AIR, "AirWardGeneratorPoi", 10.0, 15.0)
		AddObjectPOI(gZeppelinBaseHandle, "GreatHall", "WarehousePoi")
		SetObjIceHandler(gZeppelinBaseHandle, ICEOBJHANDLER_DEATH, evtMakeDarkKey)
		AddObjectPOI(gModelHandle, "KeepOctStone", "SpriteBuildingPoi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtBonusSprite)
		AddObjectPOI(gModelHandle, "BombBalloon", "GroundBalloon1Poi")
		DisableWeapon (gModelHandle)
		SetDragonSight(gModelHandle, 0)
		AddObjectPOI(gModelHandle, "BombBalloon", "GroundBalloon2Poi")
		DisableWeapon (gModelHandle)
		SetDragonSight(gModelHandle, 0)
		AddObjectPOI(gModelHandle, "BombBalloon", "GroundBalloon3Poi")
		DisableWeapon (gModelHandle)
		SetDragonSight(gModelHandle, 0)
		AddObjectPOI(gModelHandle, "HouseMiddleClassB", "GemBuilding1Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtGemBuilding)
		AddObjectPOI(gModelHandle, "HouseMiddleClassB", "GemBuilding2Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtGemBuilding)


		//Cove
		AddObjectPOI(gCoveBase1Handle, "KeepTriStone", "CoveBuilding3Poi")
		SetObjIceHandler(gCoveBase1Handle, ICEOBJHANDLER_DEATH, evtCoveBase)
		AddObjectPOI(gCoveBase2Handle, "KeepOctStone", "CoveBuilding7Poi")
		SetObjIceHandler(gCoveBase2Handle, ICEOBJHANDLER_DEATH, evtCoveBase)
		AddObjectPOI(gCoveBase3Handle, "KeepTriStone", "CoveBuilding10Poi")
		SetObjIceHandler(gCoveBase3Handle, ICEOBJHANDLER_DEATH, evtCoveBase)
		AddObjectPOISnap(gCoveDefender1Handle, "MonkFireM", "CoveDefender1Poi")
		DisableWeapon (gCoveDefender1Handle)
		AddObjectPOISnap(gCoveDefender2Handle, "MonkFireM", "CoveDefender2Poi")
		DisableWeapon (gCoveDefender2Handle)
		AddObjectPOISnap(gCoveDefender3Handle, "MonkFireM", "CoveDefender3Poi")
		DisableWeapon (gCoveDefender3Handle)
		AddObjectPOISnap(gCoveDefender4Handle, "MonkFireM", "CoveDefender4Poi")
		DisableWeapon (gCoveDefender4Handle)
		AddObjectPOISnap(gCoveDefender5Handle, "MonkFireM", "CoveDefender5Poi")
		DisableWeapon (gCoveDefender5Handle)
		AddObjectPOISnap(gCoveDefender6Handle, "MonkFireM", "CoveDefender6Poi")
		DisableWeapon (gCoveDefender6Handle)
		AddObjectPOISnap(gCoveDefender7Handle, "MonkFireM", "CoveDefender7Poi")
		DisableWeapon (gCoveDefender7Handle)
		AddObjectPOISnap(gCoveDefender8Handle, "MonkFireM", "CoveDefender8Poi")
		DisableWeapon (gCoveDefender8Handle)
		AddObjectPOI(gFireTurret1Handle, "AssaultTurretFireT", "FireTurret1Poi")
		DisableWeapon (gFireTurret1Handle)
		AddObjectPOI(gFireTurret2Handle, "AssaultTurretFireT", "FireTurret2Poi")
		DisableWeapon (gFireTurret2Handle)
		AddObjectPOI(gFireTurret3Handle, "AssaultTurretFireT", "FireTurret3Poi")
		DisableWeapon (gFireTurret3Handle)
		AddObjectPOI(gFireTurret4Handle, "AssaultTurretFireT", "FireTurret4Poi")
		DisableWeapon (gFireTurret4Handle)
		AddObjectPOI(gFireTurret5Handle, "AssaultTurretFireT", "FireTurret5Poi")
		DisableWeapon (gFireTurret5Handle)
		AddObjectPOI(gFireTurret6Handle, "AssaultTurretFireT", "FireTurret6Poi")
		DisableWeapon (gFireTurret6Handle)
		AddObjectPOI(gFireTurret7Handle, "AssaultTurretFireT", "FireTurret7Poi")
		DisableWeapon (gFireTurret7Handle)
		AddObjectPOI(gFireTurret8Handle, "AssaultTurretFireT", "FireTurret8Poi")
		DisableWeapon (gFireTurret8Handle)
		AddObjectPOI(gMandekHandle, "SuperGalleonDamaged", "MandekPoi")
		SetObjIceHandler(gMandekHandle, ICEOBJHANDLER_PAD, evtMandekEscape)
		SetInvulnerable (gMandekHandle, 1)
		//SetDragonSight(gMandekHandle, 0)
		//DisableWeapon(gMandekHandle)
		SetMovementSpeed(gMandekHandle, 1.4)
		AddObjectPOI(gModelHandle, "HouseLowerClassB", "GemBuilding3Poi")
		SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtGemBuilding)

		//Patrol 1
		AddObjectPOI(gPatrolAHandle, "Zeppelin", "Patrol1ASpawnPoi")
		SetHeightAboveGround(gPatrolAHandle, 8.0)
		SetDragonSight(gPatrolAHandle, 0)
		SetMovementSpeed(gPatrolAHandle, 1.3)
		ActAsLeader (gPatrolAHandle, RING_FORMATION, TRANSMIT_LEADERSHIP, 4.5)
		SetBehaviorPatrol(gPatrolAHandle, "PatrolPath1", PATH_LOOPING_FORWARD_NEVERSLEEP)	
		AddObjectPOI(gModelHandle, "Zeppelin", "Patrol1BSpawnPoi")
		SetHeightAboveGround(gModelHandle, 6.0)
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolAHandle)
		AddObjectPOI(gModelHandle, "Zeppelin", "Patrol1CSpawnPoi")
		SetHeightAboveGround(gModelHandle, 7.0)
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolAHandle)

		//Patrol 2
		AddObjectPOI(gPatrolBHandle, "Galleon", "Patrol2ASpawnPoi")
		SetDragonSight(gPatrolBHandle, 0)
		SetMovementSpeed(gPatrolBHandle, 1.3)
		ActAsLeader (gPatrolBHandle, RING_FORMATION, TRANSMIT_LEADERSHIP, 2.5)
		SetBehaviorPatrol(gPatrolBHandle, "PatrolPath2", PATH_LOOPING_FORWARD_NEVERSLEEP)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol2BSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolBHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol2CSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolBHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol2DSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolBHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol2ESpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolBHandle)
   
		//Patrol 3
		AddObjectPOI(gPatrolCHandle, "Galleon", "Patrol3ASpawnPoi")
		SetDragonSight(gPatrolCHandle, 0)
		SetMovementSpeed(gPatrolCHandle, 1.3)
		ActAsLeader (gPatrolCHandle, RING_FORMATION, TRANSMIT_LEADERSHIP, 2.5)
		SetBehaviorPatrol(gPatrolCHandle, "PatrolPath3", PATH_LOOPING_FORWARD_NEVERSLEEP)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol3BSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolCHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol3CSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolCHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol3DSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolCHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol3ESpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolCHandle)

		// patrol 4
		AddObjectPOI(gPatrolDHandle, "Galleon", "Patrol4ASpawnPoi")
		SetDragonSight(gPatrolDHandle, 0)
		SetMovementSpeed(gPatrolDHandle, 1.3)
		ActAsLeader (gPatrolDHandle, RING_FORMATION, TRANSMIT_LEADERSHIP, 2.5)
		SetBehaviorPatrol(gPatrolDHandle, "PatrolPath4", PATH_LOOPING_FORWARD_NEVERSLEEP)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol4BSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolDHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol4CSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolDHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol4DSpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolDHandle)
		AddObjectPOI(gModelHandle, "Caravel", "Patrol4ESpawnPoi")
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolDHandle)

		// patrol 5
		AddObjectPOI(gPatrolEHandle, "Zeppelin", "Patrol5ASpawnPoi")
		SetHeightAboveGround(gPatrolEHandle, 8.0)
		SetDragonSight(gPatrolEHandle, 0)
		SetMovementSpeed(gPatrolEHandle, 1.3)
		ActAsLeader (gPatrolEHandle, RING_FORMATION, TRANSMIT_LEADERSHIP, 4.5)
		SetBehaviorPatrol(gPatrolEHandle, "PatrolPath5", PATH_LOOPING_FORWARD_NEVERSLEEP)
		AddObjectPOI(gModelHandle, "Zeppelin", "Patrol5BSpawnPoi")
		SetHeightAboveGround(gModelHandle, 7.0)
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolEHandle)
		AddObjectPOI(gModelHandle, "Zeppelin", "Patrol5CSpawnPoi")
		SetHeightAboveGround(gModelHandle, 6.0)
		SetMovementSpeed(gModelHandle, 1.3)
		SetBehaviorFollow (gModelHandle, gPatrolEHandle)
	}

	FUNCTION fVO_Player (integer whichVO)
	{
		select whichVO
			case VO_ADARAINTRO
			BEGIN
				VoiceOverPlay ( VO_11AD080 )
////				IceDisplay( "Time to get moving.  Destroy the island fortress near here and you'll scatter their navy.  No more navy, no more transporting Dragon eggs or Zeenium. \n")
			END
			case VO_DARKKEYCLUE
			BEGIN
				VoiceOverPlay ( VO_11AD081 )
//				IceDisplay( "There's another base near here.  That must be where they're hiding the Dark Key. \n")
			END
			case VO_AIRGEMCLUE
			BEGIN
				VoiceOverPlay ( VO_11AD082 )
//				IceDisplay( "That's an Air Ward.  There must be an Air Gem around here somewhere. \n")
			END
			case VO_RESCUEDSPRITE
			BEGIN
				VoiceOverPlay ( VO_grs005 )
//				IceDisplay( "Thank you for rescuing me. \n")
			END
			case VO_GOTDARKKEY
			BEGIN
				VoiceOverPlay ( VO_11AD083 )
//				IceDisplay( "Now let's find that Orc base. \n")
			END
			case VO_MANDEKTAUNT
			BEGIN
				VoiceOverPlay ( VO_11MK004 )
//				IceDisplay( "Ha, welcome to your death.  A pity I can't stay and watch, but I have other matters to attend to. \n")
			END
			case VO_COVEDESTROYED
			BEGIN
				VoiceOverPlay ( VO_GNAD150 )
//				IceDisplay( "Fly into the glowing sphere... \n")
			END
			case VO_LEVELLOSE
			BEGIN
				VoiceOverPlay ( VO_11MK005 )
//				IceDisplay( "Spiced Dragon blood for all! Save the head; it will look good hanging from my wall. \n")
			END
			case VO_LEVELWIN
			BEGIN
				VoiceOverPlay ( VO_11AD085 )
//				IceDisplay( "Very nice!  I wonder where Mandek went off to in such a hurry. \n")
			END
			default
			BEGIN
				EXIT
//				IceDisplay( "Why am I here?  What is the meaning of Ice? \n")
			END

		EXIT
	}

	ONCE ANYOF(initializeScripts) 
	(void void)
	{
		create AnimalGenerator rFarmInfo

		fInitDaryl(10, COVE)

		fInitModelPlacement() 

		set rFarmInfo = 
		(
			POIStart:		"BarnPoi",
			POIGoTo:		"AnimalGotoPoi",
			Cap:			3,
			minRate:		4000,
			maxRate: 		8000,
			chanceCow:		25,
			chancePig:		0,
			chanceSheep:	75	
		)

		AddObjectPOI(gBarnHandle, "Barn", "BarnPoi")

		fStartAnimalGen( rFarmInfo, gBarnHandle )

		set gCoveMarker = fDRadarObj(PRIMARY, gDarkWardGeneratorHandle)

		Trigger(evtMakeBalloons)
		Trigger(evtTBoat)
		TriggerPulse(40*SECOND, evtTBoat) 
	}
	
	ONCE ANYOF( evtLevelBegin )
	{
		AddObjectPoi( gAdaraHandle, "Adara", "Dragon1_Start") // Adara Created
		TriggerPulse(500, evtSpriteFollowCael, gAdaraHandle)
	}


	ONCE ANYOF(evtMakeBalloons) 
	(void void)
	{
		create integer loopValue
		create xyz originLoc
		create xyz goalLoc
		set dBalloonYaw = 3.14	
		set dBalloonRadius = 2.0

		set loopValue = 0
		while loopValue < NUM_BOMB_BALLOONS
		BEGIN
			GetPoiLoc( gBomberPOIArray[loopValue], originLoc)
			set goalLoc = originLoc
			fDBalloonCreateLoc( BOMB, originLoc, goalLoc)

			set loopValue = loopValue + 1
		END

		set loopValue = 0
		while loopValue < 21
		BEGIN
			GetPoiLoc( gMinePOIArray[loopValue], originLoc)
			set goalLoc = originLoc
			fDBalloonCreateLoc( MINE, originLoc, goalLoc)

			set loopValue = loopValue + 1
		END
	}

	ONCE ANYOF(evtBonusSprite) 
	(integer whoGUID integer killerGUID)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		GetObjLocation (who, gGemLoc)
		AddObjectLOC(gSprite1Handle, "SpriteFire", gGemLoc, gOrientation)
		TriggerPulse( 1000, evtSpriteFlutter, gSprite1Handle )
		TriggerDelay(15*SECOND, evtKillSprites)

//		IceDisplay ("............Thank you for freeing me!!! \n")
		fVO_Player( VO_RESCUEDSPRITE)
		if (fDCanDragonUpgrade() >= 0) then
		BEGIN
//			IceDisplay ("............Upgrades!!! \n")
			set gGotUpgrade = TRUE
		END
	}

	ANYOF( evtSpriteFlutter )
	( ObjHandle who )
	{
		create xyz newLoc

		set newLoc^x = gGemLoc^x + float(Random(5)) - float(Random(5))
		set newLoc^y = gGemLoc^y + float(Random(5)) - float(Random(5))
		set newLoc^z = gGemLoc^z + float(Random(5)) - float(Random(5))

		SetBehaviorGoTo( who, newLoc )
	}

	ONCE ANYOF(evtKillSprites)
	(void void)
	{
		RemoveObject(gSprite1Handle)
	}

	ANYOF(evtGemBuilding)
	(integer whoGUID integer killerGUID)
	{
		create objhandle who
		create integer temp
		create integer i

		GUIDtoObjHandle(whoGUID, who)
		GetObjLocation (who, gTempLoc)
		set gTempLoc^z = gTempLoc^z + 0.7

//		IceDisplay( "..................... Gem!!! \n")

		fDGemCreateLoc(Random(3), gTempLoc)
		set gGemCount = gGemCount + 1
	}

	ANYOF(evtTBoat)
	(void void)
	{
		if (gTBoatCount < 4) then
		BEGIN
			AddObjectPOI(gModelHandle, "TransportBoat", "TBoatSpawnPoi")
			SetMovementSpeed(gModelHandle, 1.0)
			SetObjIceHandler(gModelHandle, ICEOBJHANDLER_DEATH, evtDeadTBoat)
			SetObjIceHandler(gModelHandle, ICEOBJHANDLER_PAD, evtTBoatPad)
			SetDragonSight(gModelHandle, 0)
			SetBehaviorPatrol(gModelHandle, "TBoatPath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
			AssignTeamID( gModelHandle, TEAM_TBOAT+gNextBoat)

			fZap( "TBoatSpawnPoi")

			set gNextBoat = gNextBoat + 1
			if (gNextBoat = 10) then
			BEGIN
				set gNextBoat = 0
			END
			set gTBoatCount = gTBoatCount + 1
		END
	}

	ANYOF(evtDeadTBoat)
	(integer whoGUID integer killerGUID)
	{
		create integer temp
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		set temp = GetTeamMemberNumber(who)
		
		if (gTBoatGemFlag[temp] == TRUE) then
		BEGIN
			GetObjLocation (who, gTempLoc)
			set gTempLoc^z = gTempLoc^z + 2.0
			if ((gZBaseDead == FALSE) AND (gAirVO = TRUE)) then
			BEGIN
//				IceDisplay ("..................Creating AirGem \n")
				fDGemCreateLoc(Air, gTempLoc)
				set gAirVO = TRUE
			END
			ELSE
			BEGIN
//				IceDisplay ("..................Random GEM!! \n")
				if (gGemCount < 20) then
				BEGIN
					fDGemCreateLoc(Random(3), gTempLoc)
					set gGemCount = gGemCount + 1
				END
			END
			set gTBoatGemFlag[temp] = FALSE
		END
		set gTBoatCount = gTBoatCount - 1
	}

	ANYOF(evtGemDied)
	(void void)
	{
		set gGemCount = gGemCount - 1
	}

	ANYOF( evtTBoatPad)
	(integer whoGUID string padName)
	{
		create integer temp
		create ObjHandle who

		GUIDtoObjHandle( whoGUID, who)

		set temp = GetTeamMemberNumber(who)

		if (StringsEqual(padName,"TBoatEndPad") == TRUE) then  //edge of map
		BEGIN
			RemoveObject(who)
			set gTBoatCount = gTBoatCount - 1
			fZap( "TBoatEndPoi")
		END
		ELSE if (StringsEqual(padName,"Border1Pad") == TRUE) then  //beyond the Dragon turn around zone
		BEGIN
//			IceDisplay ("..................TBoat is in range!!!! \n")
			set gTBoatGemFlag[temp] = TRUE
		END
		ELSE if (StringsEqual(padName,"Border2Pad") == TRUE) then  //back into the Dragon turn around zone
		BEGIN
//			IceDisplay ("..................TBoat is out of range!!!! \n")
			set gTBoatGemFlag[temp] = FALSE
		END
	}

	ANYOF(evtMandekEscape)
	(integer whoGUID string padName)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		if (StringsEqual(padName,"MandekExitPad") == TRUE) then 
		BEGIN
			RemoveObject(who)
		END
	}

	ANYOF(evtDragonPad)
	(integer whoGUID string padName)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		if (StringsEqual(padName,"AirWardVOPad") == TRUE) AND (gAirVO == FALSE) then
		BEGIN
			fVO_Player( VO_AIRGEMCLUE )
			//fAdaraVO( VO_AIRGEMCLUE, 8000 )
			set gAirVO = TRUE
		END
		ELSE if (StringsEqual(padName,"DarkWardVOPad") == TRUE) AND (gDarkVO == FALSE) then
		BEGIN
			if (gZBaseDead == FALSE) then
			BEGIN
				fVO_Player( VO_DARKKEYCLUE )
				//fAdaraVO( VO_DARKKEYCLUE, 10000 )
				fDRadarObj (PRIMARY, gZeppelinBaseHandle)
				set gCoveMarker = fDRadarObj(SECONDARY, gDarkWardGeneratorHandle)
			END
			set gDarkVO = TRUE
		END
	}

	ONCE ANYOF (evtItemReleased) 
	(integer playerNum integer itemType)
	{
		fVO_Player( VO_MANDEKTAUNT)
		set gTauntVO = TRUE
//		IceDisplay("The Dark Ward Is Down \n")
		//HudRadarDisableMarker( gCoveMarker, DRAGON1)
		fDRadarObj (PRIMARY, gCoveBase1Handle)
		fDRadarObj (PRIMARY, gCoveBase2Handle)
		fDRadarObj (PRIMARY, gCoveBase3Handle)
		EnableWeapon(gCoveDefender1Handle)
		EnableWeapon(gCoveDefender2Handle)
		EnableWeapon(gCoveDefender3Handle)
		EnableWeapon(gCoveDefender4Handle)
		EnableWeapon(gCoveDefender5Handle)
		EnableWeapon(gFireTurret1Handle)
		EnableWeapon(gFireTurret2Handle)
		EnableWeapon(gFireTurret3Handle)
		EnableWeapon(gFireTurret4Handle)
		EnableWeapon(gFireTurret5Handle)
		EnableWeapon(gFireTurret6Handle)
		EnableWeapon(gFireTurret7Handle)
		EnableWeapon(gFireTurret8Handle)
		SetBehaviorPatrol(gMandekHandle, "MandekPath", PATH_ONEWAY_FORWARD_NEVERSLEEP)
	}

	ONCE ANYOF(evtMakeDarkKey)
	(integer whoGUID integer killerGUID)
	{
		create objhandle who
		GUIDtoObjHandle(whoGUID, who)

		GetObjLocation (who, gGemLoc)
		set gGemLoc^z = gGemLoc^z + 1.4
		AddObjectLOC(gDarkKeyHandle, "DarkKey", gGemLoc, gOrientation)
		fDRadarObj (PRIMARY, gDarkKeyHandle)
		MakeWardKey(gDarkKeyHandle)
		set gZBaseDead = TRUE
		//set gCoveMarker = fDRadarObj(SECONDARY, gDarkWardGeneratorHandle)
	}

	ANYOF(evtCoveBase)
	(void void)
	{
		set gBaseCount = gBaseCount - 1
		if (gBaseCount == 0) then
		BEGIN
			KillObject(gCoveDefender1Handle)
			KillObject(gCoveDefender2Handle)
			KillObject(gCoveDefender3Handle)
			KillObject(gCoveDefender4Handle)
			KillObject(gCoveDefender5Handle)
			KillObject(gCoveDefender6Handle)
			KillObject(gCoveDefender7Handle)
			KillObject(gCoveDefender8Handle)
			KillObject(gFireTurret1Handle)
			KillObject(gFireTurret2Handle)
			KillObject(gFireTurret3Handle)
			KillObject(gFireTurret4Handle)
			KillObject(gFireTurret5Handle)
			KillObject(gFireTurret6Handle)
			KillObject(gFireTurret7Handle)
			KillObject(gFireTurret8Handle)
			AddObjectPoi(gSprite2Handle, "SpriteWater", "SpritePoi")
			GetPoiLoc( "SpritePoi", gGemLoc )
			TriggerPulse( 1000, evtSpriteFlutter, gSprite2Handle )
			if (gGotUpgrade == TRUE) then
			BEGIN
				fVO_Player( VO_COVEDESTROYED )
				//fAdaraVO( VO_COVEDESTROYED, 5000 )
//				IceDisplay ("..................Upgrades!!!! \n")
				fDUpgradeCreate()
			END
			ELSE
			BEGIN
				fAltEnd(WIN)
//D				TriggerDelay (2*SECOND, evtDEnd)
			END
		END
	}

	ONCE ANYOF (evtItemAquired) 
	(integer playerNum integer itemType)
	{
		set gCoveMarker = fDRadarObj(PRIMARY, gDarkWardGeneratorHandle)
		fVO_Player( VO_GOTDARKKEY )
		//fAdaraVO( VO_GOTDARKKEY, 5000 )
	}