//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.5-b10 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2012.03.25 at 10:36:48 AM BRT 
//


package com.l2jserver.model.template;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.l2jserver.model.id.template.ItemTemplateID;
import com.l2jserver.model.template.item.ArmorType;
import com.l2jserver.model.template.item.ItemMaterial;
import com.l2jserver.model.template.item.ItemType;
import com.l2jserver.model.template.item.WeaponType;
import com.l2jserver.util.jaxb.ArmorTypeAdapter;
import com.l2jserver.util.jaxb.ItemMaterialAdapter;
import com.l2jserver.util.jaxb.ItemTemplateIDAdapter;
import com.l2jserver.util.jaxb.ItemTypeAdapter;
import com.l2jserver.util.jaxb.WeaponTypeAdapter;


/**
 * <p>Java class for item element declaration.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;element name="item">
 *   &lt;complexType>
 *     &lt;complexContent>
 *       &lt;extension base="{}AbstractTemplate">
 *         &lt;sequence>
 *           &lt;element name="attributes">
 *             &lt;complexType>
 *               &lt;complexContent>
 *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                   &lt;sequence>
 *                     &lt;element name="cost">
 *                       &lt;complexType>
 *                         &lt;complexContent>
 *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                             &lt;attribute name="adena" type="{http://www.w3.org/2001/XMLSchema}int" />
 *                           &lt;/restriction>
 *                         &lt;/complexContent>
 *                       &lt;/complexType>
 *                     &lt;/element>
 *                   &lt;/sequence>
 *                   &lt;attribute name="weigth" type="{http://www.w3.org/2001/XMLSchema}int" />
 *                   &lt;attribute name="material" type="{http://schemas.l2jserver2.com/item}ItemMaterial" />
 *                 &lt;/restriction>
 *               &lt;/complexContent>
 *             &lt;/complexType>
 *           &lt;/element>
 *           &lt;element name="controller">
 *             &lt;complexType>
 *               &lt;complexContent>
 *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                   &lt;attribute name="defaultAction" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
 *                 &lt;/restriction>
 *               &lt;/complexContent>
 *             &lt;/complexType>
 *           &lt;/element>
 *           &lt;element name="effect">
 *             &lt;complexType>
 *               &lt;complexContent>
 *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                   &lt;attribute name="type">
 *                     &lt;simpleType>
 *                       &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *                         &lt;enumeration value="IMMEDIATE"/>
 *                       &lt;/restriction>
 *                     &lt;/simpleType>
 *                   &lt;/attribute>
 *                 &lt;/restriction>
 *               &lt;/complexContent>
 *             &lt;/complexType>
 *           &lt;/element>
 *           &lt;choice minOccurs="0">
 *             &lt;element name="etcItem">
 *               &lt;complexType>
 *                 &lt;complexContent>
 *                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                     &lt;attribute name="type" type="{http://schemas.l2jserver2.com/item}ItemType" />
 *                   &lt;/restriction>
 *                 &lt;/complexContent>
 *               &lt;/complexType>
 *             &lt;/element>
 *             &lt;element name="weapon">
 *               &lt;complexType>
 *                 &lt;complexContent>
 *                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                     &lt;sequence>
 *                       &lt;element name="physicalDamage" type="{}CalculatorFunction"/>
 *                       &lt;element name="magicalDamage" type="{}CalculatorFunction"/>
 *                       &lt;element name="criticalChance" type="{}CalculatorFunction"/>
 *                       &lt;element name="physicalAttackSpeed" type="{}CalculatorFunction"/>
 *                     &lt;/sequence>
 *                     &lt;attribute name="part" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
 *                     &lt;attribute name="type" type="{http://schemas.l2jserver2.com/item}WeaponType" />
 *                   &lt;/restriction>
 *                 &lt;/complexContent>
 *               &lt;/complexType>
 *             &lt;/element>
 *             &lt;element name="armor">
 *               &lt;complexType>
 *                 &lt;complexContent>
 *                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                     &lt;sequence>
 *                       &lt;element name="cost">
 *                         &lt;complexType>
 *                           &lt;complexContent>
 *                             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                               &lt;attribute name="adena" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
 *                             &lt;/restriction>
 *                           &lt;/complexContent>
 *                         &lt;/complexType>
 *                       &lt;/element>
 *                       &lt;element name="equipment">
 *                         &lt;complexType>
 *                           &lt;complexContent>
 *                             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                               &lt;attribute name="part" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
 *                             &lt;/restriction>
 *                           &lt;/complexContent>
 *                         &lt;/complexType>
 *                       &lt;/element>
 *                     &lt;/sequence>
 *                     &lt;attribute name="weigth" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
 *                     &lt;attribute name="type" type="{http://schemas.l2jserver2.com/item}ArmorType" />
 *                   &lt;/restriction>
 *                 &lt;/complexContent>
 *               &lt;/complexType>
 *             &lt;/element>
 *           &lt;/choice>
 *         &lt;/sequence>
 *         &lt;attribute name="id" use="required" type="{http://schemas.l2jserver2.com/item}ItemTemplateID" />
 *         &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
 *         &lt;attribute name="icon" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;/extension>
 *     &lt;/complexContent>
 *   &lt;/complexType>
 * &lt;/element>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "attributes",
    "controller",
    "effect",
    "etcItem",
    "weapon",
    "armor"
})
@XmlRootElement(name = "item", namespace = "http://schemas.l2jserver2.com/item")
public class ItemTemplate
    extends AbstractTemplate
{

    @XmlElement(required = true)
    protected ItemTemplate.Attributes attributes;
    @XmlElement(required = true)
    protected ItemTemplate.Controller controller;
    @XmlElement(required = true)
    protected ItemTemplate.Effect effect;
    protected ItemTemplate.EtcItem etcItem;
    protected ItemTemplate.Weapon weapon;
    protected ItemTemplate.Armor armor;
    @XmlAttribute(name = "id", required = true)
    @XmlJavaTypeAdapter(ItemTemplateIDAdapter.class)
    protected ItemTemplateID id;
    @XmlAttribute(name = "name", required = true)
    protected String name;
    @XmlAttribute(name = "icon")
    protected String icon;

    /**
     * Gets the value of the attributes property.
     * 
     * @return
     *     possible object is
     *     {@link ItemTemplate.Attributes }
     *     
     */
    public ItemTemplate.Attributes getAttributes() {
        return attributes;
    }

    /**
     * Sets the value of the attributes property.
     * 
     * @param value
     *     allowed object is
     *     {@link ItemTemplate.Attributes }
     *     
     */
    public void setAttributes(ItemTemplate.Attributes value) {
        this.attributes = value;
    }

    /**
     * Gets the value of the controller property.
     * 
     * @return
     *     possible object is
     *     {@link ItemTemplate.Controller }
     *     
     */
    public ItemTemplate.Controller getController() {
        return controller;
    }

    /**
     * Sets the value of the controller property.
     * 
     * @param value
     *     allowed object is
     *     {@link ItemTemplate.Controller }
     *     
     */
    public void setController(ItemTemplate.Controller value) {
        this.controller = value;
    }

    /**
     * Gets the value of the effect property.
     * 
     * @return
     *     possible object is
     *     {@link ItemTemplate.Effect }
     *     
     */
    public ItemTemplate.Effect getEffect() {
        return effect;
    }

    /**
     * Sets the value of the effect property.
     * 
     * @param value
     *     allowed object is
     *     {@link ItemTemplate.Effect }
     *     
     */
    public void setEffect(ItemTemplate.Effect value) {
        this.effect = value;
    }

    /**
     * Gets the value of the etcItem property.
     * 
     * @return
     *     possible object is
     *     {@link ItemTemplate.EtcItem }
     *     
     */
    public ItemTemplate.EtcItem getEtcItem() {
        return etcItem;
    }

    /**
     * Sets the value of the etcItem property.
     * 
     * @param value
     *     allowed object is
     *     {@link ItemTemplate.EtcItem }
     *     
     */
    public void setEtcItem(ItemTemplate.EtcItem value) {
        this.etcItem = value;
    }

    /**
     * Gets the value of the weapon property.
     * 
     * @return
     *     possible object is
     *     {@link ItemTemplate.Weapon }
     *     
     */
    public ItemTemplate.Weapon getWeapon() {
        return weapon;
    }

    /**
     * Sets the value of the weapon property.
     * 
     * @param value
     *     allowed object is
     *     {@link ItemTemplate.Weapon }
     *     
     */
    public void setWeapon(ItemTemplate.Weapon value) {
        this.weapon = value;
    }

    /**
     * Gets the value of the armor property.
     * 
     * @return
     *     possible object is
     *     {@link ItemTemplate.Armor }
     *     
     */
    public ItemTemplate.Armor getArmor() {
        return armor;
    }

    /**
     * Sets the value of the armor property.
     * 
     * @param value
     *     allowed object is
     *     {@link ItemTemplate.Armor }
     *     
     */
    public void setArmor(ItemTemplate.Armor value) {
        this.armor = value;
    }

    /**
     * Gets the value of the id property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public ItemTemplateID getID() {
        return id;
    }

    /**
     * Sets the value of the id property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setID(ItemTemplateID value) {
        this.id = value;
    }

    /**
     * Gets the value of the name property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getName() {
        return name;
    }

    /**
     * Sets the value of the name property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setName(String value) {
        this.name = value;
    }

    /**
     * Gets the value of the icon property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getIcon() {
        return icon;
    }

    /**
     * Sets the value of the icon property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setIcon(String value) {
        this.icon = value;
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="cost">
     *           &lt;complexType>
     *             &lt;complexContent>
     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                 &lt;attribute name="adena" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
     *               &lt;/restriction>
     *             &lt;/complexContent>
     *           &lt;/complexType>
     *         &lt;/element>
     *         &lt;element name="equipment">
     *           &lt;complexType>
     *             &lt;complexContent>
     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                 &lt;attribute name="part" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
     *               &lt;/restriction>
     *             &lt;/complexContent>
     *           &lt;/complexType>
     *         &lt;/element>
     *       &lt;/sequence>
     *       &lt;attribute name="weigth" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
     *       &lt;attribute name="type" type="{http://schemas.l2jserver2.com/item}ArmorType" />
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "cost",
        "equipment"
    })
    public static class Armor {

        @XmlElement(required = true)
        protected ItemTemplate.Armor.Cost cost;
        @XmlElement(required = true)
        protected ItemTemplate.Armor.Equipment equipment;
        @XmlAttribute(name = "weigth")
        @XmlSchemaType(name = "anySimpleType")
        protected String weigth;
        @XmlAttribute(name = "type")
        @XmlJavaTypeAdapter(ArmorTypeAdapter.class)
        protected ArmorType type;

        /**
         * Gets the value of the cost property.
         * 
         * @return
         *     possible object is
         *     {@link ItemTemplate.Armor.Cost }
         *     
         */
        public ItemTemplate.Armor.Cost getCost() {
            return cost;
        }

        /**
         * Sets the value of the cost property.
         * 
         * @param value
         *     allowed object is
         *     {@link ItemTemplate.Armor.Cost }
         *     
         */
        public void setCost(ItemTemplate.Armor.Cost value) {
            this.cost = value;
        }

        /**
         * Gets the value of the equipment property.
         * 
         * @return
         *     possible object is
         *     {@link ItemTemplate.Armor.Equipment }
         *     
         */
        public ItemTemplate.Armor.Equipment getEquipment() {
            return equipment;
        }

        /**
         * Sets the value of the equipment property.
         * 
         * @param value
         *     allowed object is
         *     {@link ItemTemplate.Armor.Equipment }
         *     
         */
        public void setEquipment(ItemTemplate.Armor.Equipment value) {
            this.equipment = value;
        }

        /**
         * Gets the value of the weigth property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getWeigth() {
            return weigth;
        }

        /**
         * Sets the value of the weigth property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setWeigth(String value) {
            this.weigth = value;
        }

        /**
         * Gets the value of the type property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public ArmorType getType() {
            return type;
        }

        /**
         * Sets the value of the type property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setType(ArmorType value) {
            this.type = value;
        }


        /**
         * <p>Java class for anonymous complex type.
         * 
         * <p>The following schema fragment specifies the expected content contained within this class.
         * 
         * <pre>
         * &lt;complexType>
         *   &lt;complexContent>
         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
         *       &lt;attribute name="adena" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
         *     &lt;/restriction>
         *   &lt;/complexContent>
         * &lt;/complexType>
         * </pre>
         * 
         * 
         */
        @XmlAccessorType(XmlAccessType.FIELD)
        @XmlType(name = "")
        public static class Cost {

            @XmlAttribute(name = "adena")
            @XmlSchemaType(name = "anySimpleType")
            protected String adena;

            /**
             * Gets the value of the adena property.
             * 
             * @return
             *     possible object is
             *     {@link String }
             *     
             */
            public String getAdena() {
                return adena;
            }

            /**
             * Sets the value of the adena property.
             * 
             * @param value
             *     allowed object is
             *     {@link String }
             *     
             */
            public void setAdena(String value) {
                this.adena = value;
            }

        }


        /**
         * <p>Java class for anonymous complex type.
         * 
         * <p>The following schema fragment specifies the expected content contained within this class.
         * 
         * <pre>
         * &lt;complexType>
         *   &lt;complexContent>
         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
         *       &lt;attribute name="part" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
         *     &lt;/restriction>
         *   &lt;/complexContent>
         * &lt;/complexType>
         * </pre>
         * 
         * 
         */
        @XmlAccessorType(XmlAccessType.FIELD)
        @XmlType(name = "")
        public static class Equipment {

            @XmlAttribute(name = "part")
            @XmlSchemaType(name = "anySimpleType")
            protected String part;

            /**
             * Gets the value of the part property.
             * 
             * @return
             *     possible object is
             *     {@link String }
             *     
             */
            public String getPart() {
                return part;
            }

            /**
             * Sets the value of the part property.
             * 
             * @param value
             *     allowed object is
             *     {@link String }
             *     
             */
            public void setPart(String value) {
                this.part = value;
            }

        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="cost">
     *           &lt;complexType>
     *             &lt;complexContent>
     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *                 &lt;attribute name="adena" type="{http://www.w3.org/2001/XMLSchema}int" />
     *               &lt;/restriction>
     *             &lt;/complexContent>
     *           &lt;/complexType>
     *         &lt;/element>
     *       &lt;/sequence>
     *       &lt;attribute name="weigth" type="{http://www.w3.org/2001/XMLSchema}int" />
     *       &lt;attribute name="material" type="{http://schemas.l2jserver2.com/item}ItemMaterial" />
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "cost"
    })
    public static class Attributes {

        @XmlElement(required = true)
        protected ItemTemplate.Attributes.Cost cost;
        @XmlAttribute(name = "weigth")
        protected Integer weigth;
        @XmlAttribute(name = "material")
        @XmlJavaTypeAdapter(ItemMaterialAdapter.class)
        protected ItemMaterial material;

        /**
         * Gets the value of the cost property.
         * 
         * @return
         *     possible object is
         *     {@link ItemTemplate.Attributes.Cost }
         *     
         */
        public ItemTemplate.Attributes.Cost getCost() {
            return cost;
        }

        /**
         * Sets the value of the cost property.
         * 
         * @param value
         *     allowed object is
         *     {@link ItemTemplate.Attributes.Cost }
         *     
         */
        public void setCost(ItemTemplate.Attributes.Cost value) {
            this.cost = value;
        }

        /**
         * Gets the value of the weigth property.
         * 
         * @return
         *     possible object is
         *     {@link Integer }
         *     
         */
        public Integer getWeigth() {
            return weigth;
        }

        /**
         * Sets the value of the weigth property.
         * 
         * @param value
         *     allowed object is
         *     {@link Integer }
         *     
         */
        public void setWeigth(Integer value) {
            this.weigth = value;
        }

        /**
         * Gets the value of the material property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public ItemMaterial getMaterial() {
            return material;
        }

        /**
         * Sets the value of the material property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setMaterial(ItemMaterial value) {
            this.material = value;
        }


        /**
         * <p>Java class for anonymous complex type.
         * 
         * <p>The following schema fragment specifies the expected content contained within this class.
         * 
         * <pre>
         * &lt;complexType>
         *   &lt;complexContent>
         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
         *       &lt;attribute name="adena" type="{http://www.w3.org/2001/XMLSchema}int" />
         *     &lt;/restriction>
         *   &lt;/complexContent>
         * &lt;/complexType>
         * </pre>
         * 
         * 
         */
        @XmlAccessorType(XmlAccessType.FIELD)
        @XmlType(name = "")
        public static class Cost {

            @XmlAttribute(name = "adena")
            protected Integer adena;

            /**
             * Gets the value of the adena property.
             * 
             * @return
             *     possible object is
             *     {@link Integer }
             *     
             */
            public Integer getAdena() {
                return adena;
            }

            /**
             * Sets the value of the adena property.
             * 
             * @param value
             *     allowed object is
             *     {@link Integer }
             *     
             */
            public void setAdena(Integer value) {
                this.adena = value;
            }

        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;attribute name="defaultAction" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class Controller {

        @XmlAttribute(name = "defaultAction")
        @XmlSchemaType(name = "anySimpleType")
        protected String defaultAction;

        /**
         * Gets the value of the defaultAction property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getDefaultAction() {
            return defaultAction;
        }

        /**
         * Sets the value of the defaultAction property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setDefaultAction(String value) {
            this.defaultAction = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;attribute name="type">
     *         &lt;simpleType>
     *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *             &lt;enumeration value="IMMEDIATE"/>
     *           &lt;/restriction>
     *         &lt;/simpleType>
     *       &lt;/attribute>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class Effect {

        @XmlAttribute(name = "type")
        protected String type;

        /**
         * Gets the value of the type property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getType() {
            return type;
        }

        /**
         * Sets the value of the type property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setType(String value) {
            this.type = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;attribute name="type" type="{http://schemas.l2jserver2.com/item}ItemType" />
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class EtcItem {

        @XmlAttribute(name = "type")
        @XmlJavaTypeAdapter(ItemTypeAdapter.class)
        protected ItemType type;

        /**
         * Gets the value of the type property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public ItemType getType() {
            return type;
        }

        /**
         * Sets the value of the type property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setType(ItemType value) {
            this.type = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;sequence>
     *         &lt;element name="physicalDamage" type="{}CalculatorFunction"/>
     *         &lt;element name="magicalDamage" type="{}CalculatorFunction"/>
     *         &lt;element name="criticalChance" type="{}CalculatorFunction"/>
     *         &lt;element name="physicalAttackSpeed" type="{}CalculatorFunction"/>
     *       &lt;/sequence>
     *       &lt;attribute name="part" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
     *       &lt;attribute name="type" type="{http://schemas.l2jserver2.com/item}WeaponType" />
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "physicalDamage",
        "magicalDamage",
        "criticalChance",
        "physicalAttackSpeed"
    })
    public static class Weapon {

        @XmlElement(required = true)
        protected CalculatorFunction physicalDamage;
        @XmlElement(required = true)
        protected CalculatorFunction magicalDamage;
        @XmlElement(required = true)
        protected CalculatorFunction criticalChance;
        @XmlElement(required = true)
        protected CalculatorFunction physicalAttackSpeed;
        @XmlAttribute(name = "part")
        @XmlSchemaType(name = "anySimpleType")
        protected String part;
        @XmlAttribute(name = "type")
        @XmlJavaTypeAdapter(WeaponTypeAdapter.class)
        protected WeaponType type;

        /**
         * Gets the value of the physicalDamage property.
         * 
         * @return
         *     possible object is
         *     {@link CalculatorFunction }
         *     
         */
        public CalculatorFunction getPhysicalDamage() {
            return physicalDamage;
        }

        /**
         * Sets the value of the physicalDamage property.
         * 
         * @param value
         *     allowed object is
         *     {@link CalculatorFunction }
         *     
         */
        public void setPhysicalDamage(CalculatorFunction value) {
            this.physicalDamage = value;
        }

        /**
         * Gets the value of the magicalDamage property.
         * 
         * @return
         *     possible object is
         *     {@link CalculatorFunction }
         *     
         */
        public CalculatorFunction getMagicalDamage() {
            return magicalDamage;
        }

        /**
         * Sets the value of the magicalDamage property.
         * 
         * @param value
         *     allowed object is
         *     {@link CalculatorFunction }
         *     
         */
        public void setMagicalDamage(CalculatorFunction value) {
            this.magicalDamage = value;
        }

        /**
         * Gets the value of the criticalChance property.
         * 
         * @return
         *     possible object is
         *     {@link CalculatorFunction }
         *     
         */
        public CalculatorFunction getCriticalChance() {
            return criticalChance;
        }

        /**
         * Sets the value of the criticalChance property.
         * 
         * @param value
         *     allowed object is
         *     {@link CalculatorFunction }
         *     
         */
        public void setCriticalChance(CalculatorFunction value) {
            this.criticalChance = value;
        }

        /**
         * Gets the value of the physicalAttackSpeed property.
         * 
         * @return
         *     possible object is
         *     {@link CalculatorFunction }
         *     
         */
        public CalculatorFunction getPhysicalAttackSpeed() {
            return physicalAttackSpeed;
        }

        /**
         * Sets the value of the physicalAttackSpeed property.
         * 
         * @param value
         *     allowed object is
         *     {@link CalculatorFunction }
         *     
         */
        public void setPhysicalAttackSpeed(CalculatorFunction value) {
            this.physicalAttackSpeed = value;
        }

        /**
         * Gets the value of the part property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getPart() {
            return part;
        }

        /**
         * Sets the value of the part property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setPart(String value) {
            this.part = value;
        }

        /**
         * Gets the value of the type property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public WeaponType getType() {
            return type;
        }

        /**
         * Sets the value of the type property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setType(WeaponType value) {
            this.type = value;
        }

    }

}
