| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- <?xml version="1.0" encoding="utf-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="uri:ea.com:eala:asset" xmlns:at="uri:ea.com:eala:asset:type" xmlns:xas="uri:ea.com:eala:asset:schema" targetNamespace="uri:ea.com:eala:asset" elementFormDefault="qualified" xmlns:XmlEdit="http://tempuri.org/XmlEdit.xsd">
- <!-- Base of all the music script condition nuggets -->
- <xs:complexType name="MusicScriptConditionNuggetBase" abstract="true" >
- <xs:complexContent>
- <xs:extension base="BaseAssetType" />
- </xs:complexContent>
- </xs:complexType>
- <xs:simpleType name="MusicScriptConditionRef"
- xas:isRef="true"
- xas:refType="MusicScriptConditionNuggetBase">
- <xs:restriction base="AssetReference" />
- </xs:simpleType>
- <xs:simpleType name="MusicScriptTrackRef"
- xas:isRef="true"
- xas:refType="MusicScriptTrack">
- <xs:restriction base="AssetReference" />
- </xs:simpleType>
- <xs:simpleType name="MusicScriptTrackWeakRef"
- xas:isRef="true"
- xas:refType="MusicScriptTrack">
- <xs:restriction base="WeakReference" />
- </xs:simpleType>
- <!-- For the nuggets whose conditions are expensive to compute, this nugget says "recompute the
- conditions truth only once every n seconds. Between checks, just return the previous value" -->
- <xs:complexType name="MusicScriptConditionExpensiveNuggetBase" abstract="true" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- <xs:attribute name="TimeBetweenConditionChecks" type="Time" default="5s" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- All the condition nuggets -->
- <!-- True if the local player is an observer, post-commentator, etc -->
- <xs:complexType name="MusicScriptConditionNugget_LocalPlayerIsObserver" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- <xs:attribute name="CountDeadPlayersAsObservers" type="SageBool" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if enough units are far enough away from some player's home base-->
- <xs:complexType name="MusicScriptConditionNugget_UnitsFarFromBase" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionExpensiveNuggetBase" >
- <xs:sequence />
- <xs:attribute name="MinUnitsToPass" type="SageInt" use="required" />
- <xs:attribute name="MinDistanceFromBase" type="SageReal" use="required" />
- <xs:attribute name="Relationship" type="ObjectFilterRelationshipBitMask" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if enough time has passed-->
- <xs:complexType name="MusicScriptConditionNugget_TimeFromStartOfLevel" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- <xs:attribute name="Timeout" type="Time" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if a track has played enough times -->
- <xs:complexType name="MusicScriptConditionNugget_TrackPlayedCount" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- <xs:attribute name="Track" type="MusicScriptTrackWeakRef" use="required" />
- <xs:attribute name="Count" type="SageInt" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if a specific track is playing -->
- <xs:complexType name="MusicScriptConditionNugget_SpecificTrackTypePlaying" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- <xs:attribute name="TrackType" type="StringHash" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if any track is playing -->
- <xs:complexType name="MusicScriptConditionNugget_AnyTrackPlaying" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if at least some number of objects which pass the given filter and have the given model conditions exist on the map.
- (Filter's players are relative to the local player) -->
- <xs:complexType name="MusicScriptConditionNugget_ObjectsOfTypeExist" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionExpensiveNuggetBase" >
- <xs:sequence >
- <xs:element name="Filter" type="ObjectFilter" minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- <xs:attribute name="Count" type="SageInt" default="1" />
- <xs:attribute name="RequiredModelConditions" type="ModelConditionBitFlags" default="" />
- <xs:attribute name="ExcludedModelConditions" type="ModelConditionBitFlags" default="" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if a certain Eva event has played within the last n seconds -->
- <xs:complexType name="MusicScriptConditionNugget_EvaEventPlayedRecently" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- <xs:attribute name="EvaEvent" type="EvaEventIDType" use="required" />
- <xs:attribute name="Timeout" type="Time" default="1s" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if at least some number of objects which pass the given filter are within some distance of an Eva event's
- last-played location -->
- <xs:complexType name="MusicScriptConditionNugget_ObjectsNearEvaEvent" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionExpensiveNuggetBase" >
- <xs:sequence >
- <xs:element name="Filter" type="ObjectFilter" minOccurs="0" maxOccurs="1" />
- </xs:sequence>
- <xs:attribute name="EvaEvent" type="EvaEventIDType" use="required" />
- <xs:attribute name="Count" type="SageInt" default="1" />
- <xs:attribute name="Distance" type="SageReal" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if the given number of objects which pass the filter were killed by the player within the given period of time -->
- <xs:complexType name="MusicScriptConditionNugget_ScoredKillCount" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence />
- <xs:attribute name="Count" type="SageInt" use="required" />
- <xs:attribute name="Time" type="Time" use="required" />
- <xs:attribute name="CountOnlyKillsAgainstTheLocalPlayer" type="SageBool" use="required" />
- <xs:attribute name="CountOnlyKillsByTheLocalPlayer" type="SageBool" use="required" />
- <xs:attribute name="Filter" type="ObjectFilterAssetRef" use="optional" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if its subcondition is false -->
- <xs:complexType name="MusicScriptConditionNugget_Not" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence >
- <xs:element name="Condition" type="MusicScriptConditionRef" minOccurs="1" maxOccurs="1" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if one or more subconditions is true. Ordering is important - put cheapest / most likely to return true
- conditions first for optimization -->
- <xs:complexType name="MusicScriptConditionNugget_Or" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence >
- <xs:element name="Condition" type="MusicScriptConditionRef" minOccurs="2" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- True if all the subconditions are true. Ordering is important - put cheapest / most likely to return false
- conditions first for optimization -->
- <xs:complexType name="MusicScriptConditionNugget_And" >
- <xs:complexContent>
- <xs:extension base="MusicScriptConditionNuggetBase" >
- <xs:sequence >
- <xs:element name="Condition" type="MusicScriptConditionRef" minOccurs="2" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="MusicScriptTimeoutSpecifier" >
- <xs:sequence/>
- <xs:attribute name="Weight" type="SageInt" default="1000" />
- <xs:attribute name="Duration" type="Time" use="required" />
- </xs:complexType>
-
- <!-- A music track that can play, and all the data about when & how it plays-->
- <xs:complexType name="MusicScriptTrack" >
- <xs:complexContent>
- <xs:extension base="BaseAssetType">
- <xs:sequence>
- <xs:element name="Timeout" type="MusicScriptTimeoutSpecifier" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="TrackTypeKey" type="StringHash" default="" />
- <xs:attribute name="Level" type="SageInt" use="required" />
- <xs:attribute name="Priority" type="SageInt" use="required" />
- <xs:attribute name="Condition" type="MusicScriptConditionRef" use="optional" />
- <!-- If ConditionsAreLatch is true, the conditions are only checked until they become true, at which point the
- music tracks plays every time the timeout expires. If false, conditions are checked before each playback -->
- <xs:attribute name="ConditionsAreLatch" type="SageBool" default="false" />
- <xs:attribute name="Track" type="AudioEventInfoRef" use="required" />
- <xs:attribute name="FadeInTrack" type="SageBool" default="false" />
- <xs:attribute name="FadeOutLowerLevelTrack" type="SageBool" default="true" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- Top-level type. We are running exactly one of these at a time. Normally, only one is linked to a map.
- Selecting one of these selects all the lower-level music controls under it -->
- <xs:complexType name="MusicPalette" >
- <xs:complexContent>
- <xs:extension base="BaseAssetType">
- <xs:sequence>
- <xs:element name="Track" type="MusicScriptTrackRef" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="IsDefaultForNewMap" type="SageBool" default="false" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:schema>
|