1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2025-12-06 07:32:46 +00:00
Files
l2jserver2/data/templates/npc.xsd
Rogiel 08adecd6a0 Add XML validation for templates
This commit adds an XSD file for each template type to that validation
can take place. If there is any error in XML files, it can be easily
detected by reading the error in the validation log.
2011-09-19 00:22:23 -03:00

309 lines
10 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="npc" xmlns:npc="npc"
xmlns:actor="actor" xmlns:template="template" xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:import namespace="template" schemaLocation="template.xsd" />
<xs:import namespace="actor" schemaLocation="actor.xsd" />
<xs:complexType name="npcTemplate">
<xs:complexContent>
<xs:extension base="actor:actorTemplate">
<xs:sequence>
<xs:element name="info" type="npc:npcInformationMetadata"
minOccurs="1" maxOccurs="1" />
<xs:element name="ai" type="npc:aiMetadata" minOccurs="0"
maxOccurs="1" />
<xs:element name="teleporter" type="npc:teleporterMetadata"
minOccurs="0" maxOccurs="1" />
<xs:element name="talk" type="npc:talkMetadata"
minOccurs="0" maxOccurs="1" />
<xs:element name="droplist" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="item"
type="npc:dropItemMetadata" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="skills" minOccurs="0"
maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="skill" minOccurs="1"
maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" />
<xs:attribute name="level" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="xs:string" />
<xs:attribute name="controller" type="xs:string"></xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="npcInformationMetadata">
<xs:sequence>
<xs:element name="name" type="npc:npcNameMetadata"
minOccurs="0" />
<xs:element name="title" type="npc:npcTitleMetadata"
minOccurs="0" />
<xs:element name="level" type="xs:int" />
<xs:element name="race" type="npc:npcRace" />
<xs:element name="sex" type="actor:actorSex" minOccurs="0" />
<xs:element name="stats" type="npc:npcStatsMetadata"
minOccurs="0" />
<xs:element name="experience" type="xs:long" />
<xs:element name="sp" type="xs:int" />
<xs:element name="item" type="npc:itemMetadata" minOccurs="0" />
<xs:element name="collision" type="npc:collisionMetadata"
minOccurs="0" />
</xs:sequence>
<xs:attribute name="attackable" type="xs:boolean" />
<xs:attribute name="targetable" type="xs:boolean" />
<xs:attribute name="aggressive" type="xs:boolean" />
</xs:complexType>
<xs:complexType name="npcNameMetadata">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="send" type="xs:boolean" />
<xs:attribute name="display" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="npcTitleMetadata">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="send" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="npcStatsMetadata">
<xs:sequence>
<xs:element name="hp" type="npc:stat" minOccurs="0" />
<xs:element name="mp" type="npc:stat" minOccurs="0" />
<xs:element name="attack" type="npc:attackMetadata"
minOccurs="0" />
<xs:element name="defense" type="npc:defenseMetadata"
minOccurs="0" />
<xs:element name="move" type="npc:moveMetadata" minOccurs="0" />
<xs:element name="base" type="npc:baseMetadata" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="stat">
<xs:sequence />
<xs:attribute name="max" type="xs:double" use="required" />
<xs:attribute name="regen" type="xs:double" use="required" />
</xs:complexType>
<xs:complexType name="attackMetadata">
<xs:sequence>
<xs:element name="physical" type="npc:attackValueMetadata"
minOccurs="0" />
<xs:element name="magical" type="npc:attackValueMetadata"
minOccurs="0" />
</xs:sequence>
<xs:attribute name="range" type="xs:int" use="required" />
<xs:attribute name="evasion" type="xs:int" use="required" />
<xs:attribute name="critical" type="xs:int" use="required" />
</xs:complexType>
<xs:complexType name="attackValueMetadata">
<xs:sequence />
<xs:attribute name="damage" type="xs:double" use="required" />
<xs:attribute name="speed" type="xs:double" use="required" />
</xs:complexType>
<xs:complexType name="defenseMetadata">
<xs:sequence>
<xs:element name="physical" type="npc:defenseValueMetadata"
minOccurs="0" />
<xs:element name="magical" type="npc:defenseValueMetadata"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="defenseValueMetadata">
<xs:sequence />
<xs:attribute name="value" type="xs:double" use="required" />
</xs:complexType>
<xs:complexType name="moveMetadata">
<xs:sequence />
<xs:attribute name="run" type="xs:double" use="required" />
<xs:attribute name="walk" type="xs:double" use="required" />
</xs:complexType>
<xs:complexType name="baseMetadata">
<xs:sequence />
<xs:attribute name="int" type="xs:int" use="required" />
<xs:attribute name="str" type="xs:int" use="required" />
<xs:attribute name="con" type="xs:int" use="required" />
<xs:attribute name="men" type="xs:int" use="required" />
<xs:attribute name="dex" type="xs:int" use="required" />
<xs:attribute name="wit" type="xs:int" use="required" />
</xs:complexType>
<xs:complexType name="itemMetadata">
<xs:sequence />
<xs:attribute name="righthand" type="xs:int" />
<xs:attribute name="lefthand" type="xs:int" />
</xs:complexType>
<xs:complexType name="collisionMetadata">
<xs:sequence />
<xs:attribute name="radius" type="xs:double" use="required" />
<xs:attribute name="heigth" type="xs:double" use="required" />
</xs:complexType>
<xs:complexType name="aiMetadata">
<xs:sequence />
<xs:attribute name="script" type="xs:string" />
</xs:complexType>
<xs:complexType name="teleporterMetadata">
<xs:sequence>
<xs:element name="teleport" type="npc:teleporterTeleportMetadata"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="default" type="xs:string" />
</xs:complexType>
<xs:complexType name="teleporterTeleportMetadata">
<xs:sequence>
<xs:element name="region" type="npc:teleportRegion"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
<xs:complexType name="teleportRegion">
<xs:sequence />
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="price" type="xs:int" use="required" />
<xs:attribute name="item" type="xs:int" />
</xs:complexType>
<xs:complexType name="talkMetadata">
<xs:sequence>
<xs:element name="chat" type="npc:chat" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="default" type="xs:string" />
</xs:complexType>
<xs:complexType name="chat">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="dropItemMetadata">
<xs:sequence />
<xs:attribute name="id" type="xs:int" />
<xs:attribute name="min" type="xs:int" use="required" />
<xs:attribute name="max" type="xs:int" use="required" />
<xs:attribute name="category" type="npc:dropCategory" />
<xs:attribute name="chance" type="xs:int" use="required" />
</xs:complexType>
<xs:simpleType name="npcRace">
<xs:restriction base="xs:string">
<xs:enumeration value="HUMAN" />
<xs:enumeration value="ELVEN" />
<xs:enumeration value="DARKELVEN" />
<xs:enumeration value="ORC" />
<xs:enumeration value="DWARVEN" />
<xs:enumeration value="KAMAEL" />
<xs:enumeration value="UNDEAD" />
<xs:enumeration value="MAGIC_CREATURE" />
<xs:enumeration value="BEAST" />
<xs:enumeration value="ANIMAL" />
<xs:enumeration value="PLANT" />
<xs:enumeration value="HUMANOID" />
<xs:enumeration value="SPIRIT" />
<xs:enumeration value="ANGEL" />
<xs:enumeration value="DEMON" />
<xs:enumeration value="DRAGON" />
<xs:enumeration value="GIANT" />
<xs:enumeration value="BUG" />
<xs:enumeration value="FAIRIE" />
<xs:enumeration value="OTHER" />
<xs:enumeration value="NON_LIVING" />
<xs:enumeration value="SIEGE_WEAPON" />
<xs:enumeration value="DEFENDING_ARMY" />
<xs:enumeration value="MERCENARIE" />
<xs:enumeration value="UNKNOWN" />
<xs:enumeration value="NONE" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="dropCategory">
<xs:restriction base="xs:string">
<xs:enumeration value="DROP" />
<xs:enumeration value="SPOIL" />
<xs:enumeration value="UNK_1" />
<xs:enumeration value="UNK_2" />
<xs:enumeration value="UNK_3" />
<xs:enumeration value="UNK_4" />
<xs:enumeration value="UNK_5" />
<xs:enumeration value="UNK_6" />
<xs:enumeration value="UNK_7" />
<xs:enumeration value="UNK_8" />
<xs:enumeration value="UNK_9" />
<xs:enumeration value="UNK_10" />
<xs:enumeration value="UNK_11" />
<xs:enumeration value="UNK_12" />
<xs:enumeration value="UNK_13" />
<xs:enumeration value="UNK_14" />
<xs:enumeration value="UNK_15" />
<xs:enumeration value="UNK_16" />
<xs:enumeration value="UNK_17" />
<xs:enumeration value="UNK_18" />
<xs:enumeration value="UNK_19" />
<xs:enumeration value="UNK_20" />
<xs:enumeration value="UNK_21" />
<xs:enumeration value="UNK_22" />
<xs:enumeration value="UNK_23" />
<xs:enumeration value="UNK_24" />
<xs:enumeration value="UNK_25" />
<xs:enumeration value="UNK_26" />
<xs:enumeration value="UNK_27" />
<xs:enumeration value="UNK_28" />
<xs:enumeration value="UNK_29" />
<xs:enumeration value="UNK_30" />
<xs:enumeration value="UNK_31" />
<xs:enumeration value="UNK_32" />
<xs:enumeration value="UNK_33" />
<xs:enumeration value="UNK_34" />
<xs:enumeration value="UNK_35" />
<xs:enumeration value="UNK_36" />
<xs:enumeration value="UNK_100" />
<xs:enumeration value="UNK_101" />
<xs:enumeration value="UNK_102" />
<xs:enumeration value="UNK_200" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="teleportRestriction">
<xs:restriction base="xs:string">
<xs:enumeration value="NOBLE" />
</xs:restriction>
</xs:simpleType>
<xs:element name="npc" type="npc:npcTemplate"></xs:element>
</xs:schema>