<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Chris Newstead (Disney Interactive Victoria) -->
<!--(c) 2002 Copyright Disney Interactive
All rights are reserved.-->
<xs:schema targetNamespace="http://www.inlightentertainment.com/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:core="http://www.inlightentertainment.com/core" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="coreData">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="core:core" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="version" type="xs:float" use="required"/>
			<xs:attribute name="lastModified" type="xs:date" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="core">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="physicalProperties" type="core:physicalPropertiesType"/>
				<xs:element name="modifiableProperties" type="core:modifiablePropertiesType"/>
				<xs:element name="spawn" type="core:spawnType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="effect" type="core:effectType" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:ID" use="required"/>
			<xs:attribute name="type" use="required">
				<xs:annotation>
					<xs:documentation>0 = player,
1 = player projectile,
2 = enemy projectile,
3 = border,
4 = enemy,
5 = spot,
6 = other</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:integer">
						<xs:minInclusive value="0"/>
						<xs:maxInclusive value="6"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="jadeID" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="physicalPropertiesType">
		<xs:sequence>
			<xs:element name="mass" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:double">
						<xs:minExclusive value="0"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="elasticity" minOccurs="0">
				<xs:simpleType>
					<xs:restriction base="xs:double">
						<xs:minInclusive value="0"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="shape" minOccurs="0">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="core:bodyType">
							<xs:attribute name="onscreenRadius" type="xs:double" use="optional"/>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="invulnerable" type="xs:boolean" default="false" minOccurs="0"/>
			<xs:element name="stationary" type="xs:boolean" default="false" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="type" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="radial"/>
					<xs:enumeration value="polygon"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="resolveCollisions" type="xs:boolean" use="optional" default="true"/>
	</xs:complexType>
	<xs:complexType name="effectType">
		<xs:sequence>
			<xs:element name="affectable" minOccurs="0">
				<xs:annotation>
					<xs:documentation>These are the circumstances for when and how an Effect will affect the GameEntity. A GameEntity, by default,  will be affected by it's effects at the beginning of it's mainentance on every maintenance.  If the GameEntity is the Originator of the effect it will not be affected.  [Note: the Orignator is the GameEntity that brings the Effect into the game; the one the XML specified Effect is attatched to in the .xml files]</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="whenCollisionOccurs" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>the Effect will only be affectable when the Game Entity has collided with another GameEntity</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="whenDamaged" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>the Effect will only take effect on the occurance of that GameEntity has recieved damage</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="whenTriggered" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>A GameEntity can be set to a state of "EffectTriggered". This effect will only take effect when the GameEntity is in this state.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="whenDead" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>This Effect will only take effect when the GameEnities life is less than zero. It is recommended to have this Affectable AtTheEndOfMaintenance (see below) as depending on the order of Effects lethal damage could be dealt by another Effect after this one is checked and the GameEntitiy would expire before this Effect is checked again.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="atTheEndOfMaintenance" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>the Effect will take effect as the last step in a GameEntities Maintenance. Typically this is used if the Effect is affecting a property that other aspects of the GameEntity may be altering in their maintenance and the Effect needs to take into account those changes.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="toOriginator" minOccurs="0">
							<xs:annotation>
								<xs:documentation>The Originator is the GameEntity who first held this effect when the game started.  This flag cancels the Orignators defaulted immunity to this Effect.</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:boolean">
										<xs:attribute name="persistant" type="xs:boolean" use="optional" default="false"/>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="contractable" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Effects are contracted by a GameEntity from another GameEntity. How it's contracted is determined here. By default an Effect is NOT contractable.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="whenCollisionOccurs" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>When the GameEntity(A) collides with another GameEntity(B), that GameEntity(B) will contract this Effect.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="whenSent" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>a GameEntity can send a  effects to another GameEntity. This could be done through an AI for example. All Effects that are "Contracted whenSent" will be transmitted to the specified GameEntity.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="asACopy" type="xs:boolean" minOccurs="0">
							<xs:annotation>
								<xs:documentation>If this Effect is contracted a copy of the Effect is made to give out. In this way the GameEntity with the Effect keeps it.  Similar to being contageous rather than passing from one to another.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="timeOfEffectiveness" type="xs:float" minOccurs="0">
				<xs:annotation>
					<xs:documentation>A specifed time (in seconds) that an Effect can be effective until it terminated. A time of "0" will cause the Effect to only Maintenance once.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="damage"/>
					<xs:enumeration value="damageOnce"/>
					<xs:enumeration value="knowledge"/>
					<xs:enumeration value="knowledgeOnce"/>
					<xs:enumeration value="gameKnowledge"/>
					<xs:enumeration value="gameKnowledgeOnce"/>
					<xs:enumeration value="speedBoost"/>
					<xs:enumeration value="force"/>
					<xs:enumeration value="broadcastEffects"/>
					<xs:enumeration value="shield"/>
					<xs:enumeration value="flipBinaryGate"/>
					<xs:enumeration value="cycleJump"/>
					<xs:enumeration value="setCollisionFlag"/>
					<xs:enumeration value="sendJadeFlag"/>
					<xs:enumeration value="suppressPowerup"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="stringData" type="xs:string" use="optional"/>
		<xs:attribute name="numericData" type="xs:double" use="optional"/>
	</xs:complexType>
	<xs:complexType name="spawnType">
		<xs:attribute name="core" type="xs:string" use="required"/>
		<xs:attribute name="type" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string"/>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="additiveVelocity" type="xs:boolean" use="optional" default="true"/>
	</xs:complexType>
	<xs:complexType name="bodyType">
		<xs:sequence>
			<xs:element name="polygon" type="core:polygonType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="radius" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:double">
					<xs:minExclusive value="0"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="pointType">
		<xs:attribute name="x" type="xs:double" use="required"/>
		<xs:attribute name="y" type="xs:double" use="required"/>
	</xs:complexType>
	<xs:complexType name="polygonType">
		<xs:sequence>
			<xs:element name="point" type="core:pointType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:attributeGroup name="collisionFlags">
		<xs:attribute name="player" type="xs:boolean" use="optional" default="true">
			<xs:annotation>
				<xs:documentation source="defaults in BAM to true"/>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="playerProjectile" type="xs:boolean" use="optional" default="true"/>
		<xs:attribute name="border" type="xs:boolean" use="optional" default="true"/>
		<xs:attribute name="enemy" type="xs:boolean" use="optional" default="true"/>
		<xs:attribute name="enemyProjectile" type="xs:boolean" use="optional" default="true"/>
		<xs:attribute name="spot" type="xs:boolean" use="optional" default="true"/>
		<xs:attribute name="other" type="xs:boolean" use="optional" default="true"/>
	</xs:attributeGroup>
	<xs:complexType name="linearrayType">
		<xs:sequence>
			<xs:element name="line" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="ax" type="xs:double" use="required"/>
					<xs:attribute name="ay" type="xs:double" use="required"/>
					<xs:attribute name="bx" type="xs:double" use="required"/>
					<xs:attribute name="by" type="xs:double" use="required"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="modifiablePropertiesType">
		<xs:annotation>
			<xs:documentation>These properties are set in the core but can be modified for each instance of a GameEntity in the seed. Each element specifies the type of modification the seed value does to the core value.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="pointValue" minOccurs="0">
				<xs:annotation>
					<xs:documentation>[additive modification] [default: "0" ]</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:double">
						<xs:minInclusive value="0"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="life" minOccurs="0">
				<xs:annotation>
					<xs:documentation>[scalar modification]</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="maximum" minOccurs="0">
							<xs:simpleType>
								<xs:restriction base="xs:float">
									<xs:minExclusive value="0"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="current" minOccurs="0">
							<xs:simpleType>
								<xs:restriction base="xs:double">
									<xs:minExclusive value="0"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="decay" minOccurs="0">
							<xs:simpleType>
								<xs:restriction base="xs:float">
									<xs:minInclusive value="0"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="limits" minOccurs="0">
				<xs:annotation>
					<xs:documentation>[scalar modification] [default for all: "0"]</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="acceleration" minOccurs="0">
							<xs:annotation>
								<xs:documentation>[default: 0]</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:double">
									<xs:minInclusive value="0"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="rotation" minOccurs="0">
							<xs:annotation>
								<xs:documentation>[default: 0]</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:double">
									<xs:minInclusive value="0"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="damping" minOccurs="0">
							<xs:annotation>
								<xs:documentation>[default: 0]</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:double">
									<xs:minInclusive value="0"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="velocity" minOccurs="0">
							<xs:annotation>
								<xs:documentation>[default: 0]</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:double">
									<xs:minInclusive value="0"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="collisionFlags" minOccurs="0">
				<xs:annotation>
					<xs:documentation>[overwrite modification] [default for all: "true"]</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:attributeGroup ref="core:collisionFlags"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
