
            /**
            IMPORTANT !!!
       
            DO NOT EDIT THIS FILE. IT IS GENERATED FROM approriate xml file in xmlresources/gbinfomessages BY
            THE JavaClassesGenerator.xslt. MODIFY THESE FILES INSTEAD OF THIS ONE.
       
            IMPORTANT END !!!
            */
            package
            cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
	    		import java.util.*;    
    import javax.vecmath.*;    
    import cz.cuni.amis.pogamut.base.communication.messages.*;    
    import cz.cuni.amis.pogamut.base.agent.worldview.*;    
    import cz.cuni.amis.pogamut.base.agent.worldview.objects.*;    
    import cz.cuni.amis.pogamut.base.communication.translator.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType.Category;    
    import cz.cuni.amis.pogamut.base.exceptions.*;    
    import cz.cuni.amis.pogamut.base3d.worldview.objects.*;    
    import cz.cuni.amis.pogamut.ut2004.communication.messages.*;    
    import cz.cuni.amis.pogamut.ut2004.agent.worldview.objects.*;    
                
            
            /**
              
		Synchronous/asynchronous message. Holds all attributes of item category.
		There are many item categories in UT2004. This class holds attributes for all of them.
		When some item category is exported just appropriate attributes are exported with it.
	
                          Corresponding GameBots message is 
                          ITC.
                      
             */
            
            public class
            ItemCategory
                    extends GBObjectUpdate
                
	            	implements IGBWorldObjectEvent, IWorldObject, ItemTyped
                        
            {
            
            
            
    	/** Example how the message looks like - used during parser tests. */
    	public static final String PROTOTYPE = 
    		"ITC {InventoryType text} {PickupType xWeapons.FlakCannonPickup} {ItemCategory null} {Melee False} {Sniping False} {UsesAltAmmo False} {PriFireModeType text} {PriSplashDamage False} {PriSplashJump False} {PriRecomSplashDamage False} {PriTossed False} {PriLeadTarget False} {PriInstantHit False} {PriFireOnRelease False} {PriWaitForRelease False} {PriModeExclusive False} {PriFireRate 0} {PriBotRefireRate 0} {PriAmmoPerFire 0} {PriAmmoClipSize 0} {PriAimError 0} {PriSpread 0} {PriSpreadStyle 0} {PriFireCount 0} {PriDamageAtten 0} {PriAmmoType text} {PriInitialAmount 0} {PriMaxAmount 0} {PriMaxRange 0} {PriDamageType text} {PriArmorStops False} {PriAlwaysGibs False} {PriSpecial False} {PriDetonatesGoop False} {PriSuperWeapon False} {PriExtraMomZ False} {PriProjType text} {PriDamage 0} {PriDamageMax 0} {PriDamageMin 0} {PriSpeed 0} {PriMaxSpeed 0} {PriLifeSpan 0} {PriDamageRadius 0} {PriTossZ 0} {PriMaxEffectDistance 0} {SecFireModeType text} {SecSplashDamage False} {SecSplashJump False} {SecRecomSplashDamage False} {SecTossed False} {SecLeadTarget False} {SecInstantHit False} {SecFireOnRelease False} {SecWaitForRelease False} {SecModeExclusive False} {SecFireRate 0} {SecBotRefireRate 0} {SecAmmoPerFire 0} {SecAmmoClipSize 0} {SecAimError 0} {SecSpread 0} {SecSpreadStyle 0} {SecFireCount 0} {SecDamageAtten 0} {SecAmmoType text} {SecInitialAmount 0} {SecMaxAmount 0} {SecMaxRange 0} {SecDamageType text} {SecArmorStops False} {SecAlwaysGibs False} {SecSpecial False} {SecDetonatesGoop False} {SecSuperWeapon False} {SecExtraMomZ False} {SecProjType text} {SecDamage 0} {SecDamageMax 0} {SecDamageMin 0} {SecSpeed 0} {SecMaxSpeed 0} {SecLifeSpan 0} {SecDamageRadius 0} {SecTossZ 0} {SecMaxEffectDistance 0} {Amount 0} {SuperHeal False}";
    
            
            /////// Properties BEGIN
            
        /**
        
			By this class the item is represented in inventory. This is inventory type class.
		 */
        protected
         String InventoryType = 
        	null;
        
        
        /**
        
			By this class the item is represented in inventory. This is inventory type class.
		 */
        public
        String getInventoryType() {
            return
         InventoryType;
        }
        

        
        /**
        
			By this class the item is represented in the map. This is pickup type class.
		 */
        protected
         ItemType PickupType = 
        	null;
        
        
        /**
        
			By this class the item is represented in the map. This is pickup type class.
		 */
        public
        ItemType getPickupType() {
            return
         PickupType;
        }
        

        
        /**
        
			Category of the item. Can be "Weapon", "Adrenaline", "Ammo", "Armor", "Shield", "Health" or "Other".
		 */
        protected
         Category ItemCategory = 
        	null;
        
        
        /**
        
			Category of the item. Can be "Weapon", "Adrenaline", "Ammo", "Armor", "Shield", "Health" or "Other".
		 */
        public
        Category getItemCategory() {
            return
         ItemCategory;
        }
        

        
        /**
        
		For Weapon. True if the weapon is melee weapon (close range).
		 */
        protected
         boolean Melee = 
        	false;
        
        
        /**
        
		For Weapon. True if the weapon is melee weapon (close range).
		 */
        public
        boolean isMelee() {
            return
         Melee;
        }
        

        
        /**
        
		For Weapon. True if the weapon is sniping weapon (long range).
		 */
        protected
         boolean Sniping = 
        	false;
        
        
        /**
        
		For Weapon. True if the weapon is sniping weapon (long range).
		 */
        public
        boolean isSniping() {
            return
         Sniping;
        }
        

        
        /**
        
		For Weapon. True if the weapon uses two separate ammos for primary and secondary firing mode.
		 */
        protected
         boolean UsesAltAmmo = 
        	false;
        
        
        /**
        
		For Weapon. True if the weapon uses two separate ammos for primary and secondary firing mode.
		 */
        public
        boolean isUsesAltAmmo() {
            return
         UsesAltAmmo;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Type of the firing mode. If none, the weapon does not have this fireing mode.
		 */
        protected
         String PriFireModeType = 
        	null;
        
        
        /**
        
			For Weapon, primary firing mode. Type of the firing mode. If none, the weapon does not have this fireing mode.
		 */
        public
        String getPriFireModeType() {
            return
         PriFireModeType;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If this mode does splash damage.
		 */
        protected
         boolean PriSplashDamage = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If this mode does splash damage.
		 */
        public
        boolean isPriSplashDamage() {
            return
         PriSplashDamage;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If the splash damage of this firing mode can be used for increasing jump height.
		 */
        protected
         boolean PriSplashJump = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If the splash damage of this firing mode can be used for increasing jump height.
		 */
        public
        boolean isPriSplashJump() {
            return
         PriSplashJump;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If the engine recommends to use this splash damage. TODO
		 */
        protected
         boolean PriRecomSplashDamage = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If the engine recommends to use this splash damage. TODO
		 */
        public
        boolean isPriRecomSplashDamage() {
            return
         PriRecomSplashDamage;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If the this mode is tossing something (projectile) out.
		 */
        protected
         boolean PriTossed = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If the this mode is tossing something (projectile) out.
		 */
        public
        boolean isPriTossed() {
            return
         PriTossed;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If this mode can lead the target. TODO
		 */
        protected
         boolean PriLeadTarget = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If this mode can lead the target. TODO
		 */
        public
        boolean isPriLeadTarget() {
            return
         PriLeadTarget;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If this mode does instant hits - weapon hits instantly - no flying time for bullets.
		 */
        protected
         boolean PriInstantHit = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If this mode does instant hits - weapon hits instantly - no flying time for bullets.
		 */
        public
        boolean isPriInstantHit() {
            return
         PriInstantHit;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If to fire this mode you need to press shooting button (start shooting) and then release it (stop shooting). Usually for charging weapons.
		 */
        protected
         boolean PriFireOnRelease = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If to fire this mode you need to press shooting button (start shooting) and then release it (stop shooting). Usually for charging weapons.
		 */
        public
        boolean isPriFireOnRelease() {
            return
         PriFireOnRelease;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If to fire this mode you need to stop pressing shooting button between two shots to shoot. You will fire once when pressing the button, then you need to press it again to fire again.
		 */
        protected
         boolean PriWaitForRelease = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If to fire this mode you need to stop pressing shooting button between two shots to shoot. You will fire once when pressing the button, then you need to press it again to fire again.
		 */
        public
        boolean isPriWaitForRelease() {
            return
         PriWaitForRelease;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If this firing mode cannot be used at the same time with other firing mode of the weapon.
		 */
        protected
         boolean PriModeExclusive = 
        	false;
        
        
        /**
        
			For Weapon, primary firing mode. If this firing mode cannot be used at the same time with other firing mode of the weapon.
		 */
        public
        boolean isPriModeExclusive() {
            return
         PriModeExclusive;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Fire rate in seconds. How fast the weapon fires if we are firing continuosly.
		 */
        protected
         double PriFireRate = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. Fire rate in seconds. How fast the weapon fires if we are firing continuosly.
		 */
        public
        double getPriFireRate() {
            return
         PriFireRate;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Refire rate for bots in seconds. When we stop firing how long does it take to resume firing again.
		 */
        protected
         double PriBotRefireRate = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. Refire rate for bots in seconds. When we stop firing how long does it take to resume firing again.
		 */
        public
        double getPriBotRefireRate() {
            return
         PriBotRefireRate;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Needed amount of ammo to fire this weapon mode once.
		 */
        protected
         int PriAmmoPerFire = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. Needed amount of ammo to fire this weapon mode once.
		 */
        public
        int getPriAmmoPerFire() {
            return
         PriAmmoPerFire;
        }
        

        
        /**
        
			For Weapon, primary firing mode. If the weapon mode has clips, their size. TODO
		 */
        protected
         int PriAmmoClipSize = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. If the weapon mode has clips, their size. TODO
		 */
        public
        int getPriAmmoClipSize() {
            return
         PriAmmoClipSize;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Aiming error of the weapon. 0 none, 1000 quite a bit.
		 */
        protected
         double PriAimError = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. Aiming error of the weapon. 0 none, 1000 quite a bit.
		 */
        public
        double getPriAimError() {
            return
         PriAimError;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Double, rotator units. No relation to aim error.
		 */
        protected
         double PriSpread = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. Double, rotator units. No relation to aim error.
		 */
        public
        double getPriSpread() {
            return
         PriSpread;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Type of spreading. TODO
		 */
        protected
         int PriSpreadStyle = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. Type of spreading. TODO
		 */
        public
        int getPriSpreadStyle() {
            return
         PriSpreadStyle;
        }
        

        
        /**
        
			For Weapon, primary firing mode. TODO
		 */
        protected
         int PriFireCount = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. TODO
		 */
        public
        int getPriFireCount() {
            return
         PriFireCount;
        }
        

        
        /**
        
			For Weapon, primary firing mode. Attenuate instant-hit/projectile damage by this multiplier.
		 */
        protected
         double PriDamageAtten = 
        	0;
        
        
        /**
        
			For Weapon, primary firing mode. Attenuate instant-hit/projectile damage by this multiplier.
		 */
        public
        double getPriDamageAtten() {
            return
         PriDamageAtten;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Class of the ammo.
		 */
        protected
         String PriAmmoType = 
        	null;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Class of the ammo.
		 */
        public
        String getPriAmmoType() {
            return
         PriAmmoType;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Amount of ammo we get if we pick up the item (weapon or ammo) for the first time.
		 */
        protected
         int PriInitialAmount = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Amount of ammo we get if we pick up the item (weapon or ammo) for the first time.
		 */
        public
        int getPriInitialAmount() {
            return
         PriInitialAmount;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Max amount of ammo of this type we can have in our inventory.
		 */
        protected
         int PriMaxAmount = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Max amount of ammo of this type we can have in our inventory.
		 */
        public
        int getPriMaxAmount() {
            return
         PriMaxAmount;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. TODO
		 */
        protected
         double PriMaxRange = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. TODO
		 */
        public
        double getPriMaxRange() {
            return
         PriMaxRange;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Type of the damage. Maybe the same string for all damage.
		 */
        protected
         String PriDamageType = 
        	null;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Type of the damage. Maybe the same string for all damage.
		 */
        public
        String getPriDamageType() {
            return
         PriDamageType;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If the armor is effective against this damage type.
		 */
        protected
         boolean PriArmorStops = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If the armor is effective against this damage type.
		 */
        public
        boolean isPriArmorStops() {
            return
         PriArmorStops;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage kills instantly.
		 */
        protected
         boolean PriAlwaysGibs = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage kills instantly.
		 */
        public
        boolean isPriAlwaysGibs() {
            return
         PriAlwaysGibs;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage is special. TODO
		 */
        protected
         boolean PriSpecial = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage is special. TODO
		 */
        public
        boolean isPriSpecial() {
            return
         PriSpecial;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage detonates goops. TODO
		 */
        protected
         boolean PriDetonatesGoop = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage detonates goops. TODO
		 */
        public
        boolean isPriDetonatesGoop() {
            return
         PriDetonatesGoop;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage is super weapon damage. Kills everyone even teammates.
		 */
        protected
         boolean PriSuperWeapon = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage is super weapon damage. Kills everyone even teammates.
		 */
        public
        boolean isPriSuperWeapon() {
            return
         PriSuperWeapon;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage adds something to Panws momentum. TODO
		 */
        protected
         boolean PriExtraMomZ = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If this damage adds something to Panws momentum. TODO
		 */
        public
        boolean isPriExtraMomZ() {
            return
         PriExtraMomZ;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Class of the projectile this ammo, weapon spawns. 
		 */
        protected
         String PriProjType = 
        	null;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Class of the projectile this ammo, weapon spawns. 
		 */
        public
        String getPriProjType() {
            return
         PriProjType;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. How much damage this projectile does.
		 */
        protected
         double PriDamage = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. How much damage this projectile does.
		 */
        public
        double getPriDamage() {
            return
         PriDamage;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. How much maximum damage this projectile does.
		 */
        protected
         double PriDamageMax = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. How much maximum damage this projectile does.
		 */
        public
        double getPriDamageMax() {
            return
         PriDamageMax;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. How much minimum damage this projectile does.
		 */
        protected
         double PriDamageMin = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. How much minimum damage this projectile does.
		 */
        public
        double getPriDamageMin() {
            return
         PriDamageMin;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Default projectile speed.
		 */
        protected
         double PriSpeed = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Default projectile speed.
		 */
        public
        double getPriSpeed() {
            return
         PriSpeed;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Maximum projectile speed.
		 */
        protected
         double PriMaxSpeed = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Maximum projectile speed.
		 */
        public
        double getPriMaxSpeed() {
            return
         PriMaxSpeed;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Maximum amount of time in seconds this projectile can survive in the environment.
		 */
        protected
         double PriLifeSpan = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Maximum amount of time in seconds this projectile can survive in the environment.
		 */
        public
        double getPriLifeSpan() {
            return
         PriLifeSpan;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If the projectile does splash damage, here is radius in ut units of the splash.
		 */
        protected
         double PriDamageRadius = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If the projectile does splash damage, here is radius in ut units of the splash.
		 */
        public
        double getPriDamageRadius() {
            return
         PriDamageRadius;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. If the projectile is tossed, here is velocity in Z direction of the toss. TODO
		 */
        protected
         double PriTossZ = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. If the projectile is tossed, here is velocity in Z direction of the toss. TODO
		 */
        public
        double getPriTossZ() {
            return
         PriTossZ;
        }
        

        
        /**
        
			For Ammo or for Weapon, primary firing mode. Maximum effective distance. TODO
		 */
        protected
         double PriMaxEffectDistance = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, primary firing mode. Maximum effective distance. TODO
		 */
        public
        double getPriMaxEffectDistance() {
            return
         PriMaxEffectDistance;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Type of the firing mode. If none, the weapon does not have this fireing mode.
		 */
        protected
         String SecFireModeType = 
        	null;
        
        
        /**
        
			For Weapon, secondary firing mode. Type of the firing mode. If none, the weapon does not have this fireing mode.
		 */
        public
        String getSecFireModeType() {
            return
         SecFireModeType;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If this mode does splash damage.
		 */
        protected
         boolean SecSplashDamage = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If this mode does splash damage.
		 */
        public
        boolean isSecSplashDamage() {
            return
         SecSplashDamage;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If the splash damage of this firing mode can be used for increasing jump height.
		 */
        protected
         boolean SecSplashJump = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If the splash damage of this firing mode can be used for increasing jump height.
		 */
        public
        boolean isSecSplashJump() {
            return
         SecSplashJump;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If the engine recommends to use this splash damage. TODO
		 */
        protected
         boolean SecRecomSplashDamage = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If the engine recommends to use this splash damage. TODO
		 */
        public
        boolean isSecRecomSplashDamage() {
            return
         SecRecomSplashDamage;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If the this mode is tossing something (projectile) out.
		 */
        protected
         boolean SecTossed = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If the this mode is tossing something (projectile) out.
		 */
        public
        boolean isSecTossed() {
            return
         SecTossed;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If this mode can lead the target. TODO
		 */
        protected
         boolean SecLeadTarget = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If this mode can lead the target. TODO
		 */
        public
        boolean isSecLeadTarget() {
            return
         SecLeadTarget;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If this mode does instant hits - weapon hits instantly - no flying time for bullets.
		 */
        protected
         boolean SecInstantHit = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If this mode does instant hits - weapon hits instantly - no flying time for bullets.
		 */
        public
        boolean isSecInstantHit() {
            return
         SecInstantHit;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If to fire this mode you need to press shooting button (start shooting) and then release it (stop shooting). Usually for charging weapons.
		 */
        protected
         boolean SecFireOnRelease = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If to fire this mode you need to press shooting button (start shooting) and then release it (stop shooting). Usually for charging weapons.
		 */
        public
        boolean isSecFireOnRelease() {
            return
         SecFireOnRelease;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If to fire this mode you need to stop pressing shooting button between two shots to shoot. You will fire once when pressing the button, then you need to press it again to fire again.
		 */
        protected
         boolean SecWaitForRelease = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If to fire this mode you need to stop pressing shooting button between two shots to shoot. You will fire once when pressing the button, then you need to press it again to fire again.
		 */
        public
        boolean isSecWaitForRelease() {
            return
         SecWaitForRelease;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If this firing mode cannot be used at the same time with other firing mode of the weapon.
		 */
        protected
         boolean SecModeExclusive = 
        	false;
        
        
        /**
        
			For Weapon, secondary firing mode. If this firing mode cannot be used at the same time with other firing mode of the weapon.
		 */
        public
        boolean isSecModeExclusive() {
            return
         SecModeExclusive;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Fire rate in seconds.
		 */
        protected
         double SecFireRate = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. Fire rate in seconds.
		 */
        public
        double getSecFireRate() {
            return
         SecFireRate;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Refire rate for bots in seconds. TODO
		 */
        protected
         double SecBotRefireRate = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. Refire rate for bots in seconds. TODO
		 */
        public
        double getSecBotRefireRate() {
            return
         SecBotRefireRate;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Needed amount of ammo to fire this weapon mode once.
		 */
        protected
         int SecAmmoPerFire = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. Needed amount of ammo to fire this weapon mode once.
		 */
        public
        int getSecAmmoPerFire() {
            return
         SecAmmoPerFire;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. If the weapon mode has clips, their size. TODO
		 */
        protected
         int SecAmmoClipSize = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. If the weapon mode has clips, their size. TODO
		 */
        public
        int getSecAmmoClipSize() {
            return
         SecAmmoClipSize;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Aiming error of the weapon. 0 none, 1000 quite a bit.
		 */
        protected
         double SecAimError = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. Aiming error of the weapon. 0 none, 1000 quite a bit.
		 */
        public
        double getSecAimError() {
            return
         SecAimError;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Double, rotator units. No relation to aim error.
		 */
        protected
         double SecSpread = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. Double, rotator units. No relation to aim error.
		 */
        public
        double getSecSpread() {
            return
         SecSpread;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Type of spreading. TODO
		 */
        protected
         int SecSpreadStyle = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. Type of spreading. TODO
		 */
        public
        int getSecSpreadStyle() {
            return
         SecSpreadStyle;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. TODO
		 */
        protected
         int SecFireCount = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. TODO
		 */
        public
        int getSecFireCount() {
            return
         SecFireCount;
        }
        

        
        /**
        
			For Weapon, secondary firing mode. Attenuate instant-hit/projectile damage by this multiplier.
		 */
        protected
         double SecDamageAtten = 
        	0;
        
        
        /**
        
			For Weapon, secondary firing mode. Attenuate instant-hit/projectile damage by this multiplier.
		 */
        public
        double getSecDamageAtten() {
            return
         SecDamageAtten;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Class of the ammo.
		 */
        protected
         String SecAmmoType = 
        	null;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Class of the ammo.
		 */
        public
        String getSecAmmoType() {
            return
         SecAmmoType;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Amount of ammo we get if we pick up the item (weapon or ammo) for the first time.
		 */
        protected
         int SecInitialAmount = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Amount of ammo we get if we pick up the item (weapon or ammo) for the first time.
		 */
        public
        int getSecInitialAmount() {
            return
         SecInitialAmount;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Max amount of ammo of this type we can have in our inventory.
		 */
        protected
         int SecMaxAmount = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Max amount of ammo of this type we can have in our inventory.
		 */
        public
        int getSecMaxAmount() {
            return
         SecMaxAmount;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. TODO
		 */
        protected
         double SecMaxRange = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. TODO
		 */
        public
        double getSecMaxRange() {
            return
         SecMaxRange;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Type of the damage. Maybe the same string for all damage.
		 */
        protected
         String SecDamageType = 
        	null;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Type of the damage. Maybe the same string for all damage.
		 */
        public
        String getSecDamageType() {
            return
         SecDamageType;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If the armor is effective against this damage type.
		 */
        protected
         boolean SecArmorStops = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If the armor is effective against this damage type.
		 */
        public
        boolean isSecArmorStops() {
            return
         SecArmorStops;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage kills instantly.
		 */
        protected
         boolean SecAlwaysGibs = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage kills instantly.
		 */
        public
        boolean isSecAlwaysGibs() {
            return
         SecAlwaysGibs;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage is special. TODO
		 */
        protected
         boolean SecSpecial = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage is special. TODO
		 */
        public
        boolean isSecSpecial() {
            return
         SecSpecial;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage detonates goops. TODO
		 */
        protected
         boolean SecDetonatesGoop = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage detonates goops. TODO
		 */
        public
        boolean isSecDetonatesGoop() {
            return
         SecDetonatesGoop;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage is super weapon damage. Kills everyone even teammates.
		 */
        protected
         boolean SecSuperWeapon = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage is super weapon damage. Kills everyone even teammates.
		 */
        public
        boolean isSecSuperWeapon() {
            return
         SecSuperWeapon;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage adds something to Panws momentum. TODO
		 */
        protected
         boolean SecExtraMomZ = 
        	false;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If this damage adds something to Panws momentum. TODO
		 */
        public
        boolean isSecExtraMomZ() {
            return
         SecExtraMomZ;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Class of the projectile this ammo, weapon spawns. 
		 */
        protected
         String SecProjType = 
        	null;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Class of the projectile this ammo, weapon spawns. 
		 */
        public
        String getSecProjType() {
            return
         SecProjType;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. How much damage this projectile does.
		 */
        protected
         double SecDamage = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. How much damage this projectile does.
		 */
        public
        double getSecDamage() {
            return
         SecDamage;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. How much maximum damage this projectile does.
		 */
        protected
         double SecDamageMax = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. How much maximum damage this projectile does.
		 */
        public
        double getSecDamageMax() {
            return
         SecDamageMax;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. How much minimum damage this projectile does.
		 */
        protected
         double SecDamageMin = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. How much minimum damage this projectile does.
		 */
        public
        double getSecDamageMin() {
            return
         SecDamageMin;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Default projectile speed.
		 */
        protected
         double SecSpeed = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Default projectile speed.
		 */
        public
        double getSecSpeed() {
            return
         SecSpeed;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Maximum projectile speed.
		 */
        protected
         double SecMaxSpeed = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Maximum projectile speed.
		 */
        public
        double getSecMaxSpeed() {
            return
         SecMaxSpeed;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Maximum amount of time in seconds this projectile can survive in the environment.
		 */
        protected
         double SecLifeSpan = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Maximum amount of time in seconds this projectile can survive in the environment.
		 */
        public
        double getSecLifeSpan() {
            return
         SecLifeSpan;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If the projectile does splash damage, here is radius in ut units of the splash.
		 */
        protected
         double SecDamageRadius = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If the projectile does splash damage, here is radius in ut units of the splash.
		 */
        public
        double getSecDamageRadius() {
            return
         SecDamageRadius;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If the projectile is tossed, here is velocity in Z direction of the toss. TODO
		 */
        protected
         double SecTossZ = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. If the projectile is tossed, here is velocity in Z direction of the toss. TODO
		 */
        public
        double getSecTossZ() {
            return
         SecTossZ;
        }
        

        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Maximum effective distance. TODO
		 */
        protected
         double SecMaxEffectDistance = 
        	0;
        
        
        /**
        
			For Ammo or for Weapon, secondary firing mode. Maximum effective distance. TODO
		 */
        public
        double getSecMaxEffectDistance() {
            return
         SecMaxEffectDistance;
        }
        

        
        /**
        
			If this item is some ammo or health pack, here we can find
			out how much of the attribute this item will add.
		 */
        protected
         int Amount = 
        	0;
        
        
        /**
        
			If this item is some ammo or health pack, here we can find
			out how much of the attribute this item will add.
		 */
        public
        int getAmount() {
            return
         Amount;
        }
        

        
        /**
        
			If this item is health. True if super health.
		 */
        protected
         boolean SuperHeal = 
        	false;
        
        
        /**
        
			If this item is health. True if super health.
		 */
        public
        boolean isSuperHeal() {
            return
         SuperHeal;
        }
        

        
            /////// Properties END
            
            /////// Extra Java code BEGIN
                        	
            	/////// Additional code from xslt BEGIN            	 
            		
            					public static final StringId ItemCategoryId = new StringId("ItemCategoryId");
            					
            					public StringId getId() {
            						return ItemCategoryId;
            					}
            				
       							protected double Time = 0;
       							
       							protected double getTime() {
       								return Time;
       							}
       							
       							protected void setTime(double time) {
       								this.Time = time;
       							}
       						
       							public double getLastSeenTime() {
       								return Time;
       							}
       						
       					
       					public boolean equals(Object obj) {
	                      if (!(obj instanceof ItemCategory)) return false;
	                      ItemCategory cast = (ItemCategory)obj;
	                      if (this.getId() != null) return this.getId().equals(cast.getId());
	                      else return cast.getId() == null;
	                    }
	                    
	                    public int hashCode() {
	                      if (getId() != null) return getId().hashCode();
	                      return 0;
	                    }
            			
            			
            		
            		
            	/////// Additional code from xslt END            
				                    
	            /////// Extra Java from XML BEGIN
            		
				public ItemType getType() {
					return getPickupType();
				}
			
            	/////// Extra Java from XML END
            	    
            /////// Extra Java code END
            
            
            
            /**
              * Cloning constructor.
              */
             public ItemCategory(ItemCategory original) {
                
                     this.InventoryType=original.InventoryType;
                
                     this.PickupType=original.PickupType;
                
                     this.ItemCategory=original.ItemCategory;
                
                     this.Melee=original.Melee;
                
                     this.Sniping=original.Sniping;
                
                     this.UsesAltAmmo=original.UsesAltAmmo;
                
                     this.PriFireModeType=original.PriFireModeType;
                
                     this.PriSplashDamage=original.PriSplashDamage;
                
                     this.PriSplashJump=original.PriSplashJump;
                
                     this.PriRecomSplashDamage=original.PriRecomSplashDamage;
                
                     this.PriTossed=original.PriTossed;
                
                     this.PriLeadTarget=original.PriLeadTarget;
                
                     this.PriInstantHit=original.PriInstantHit;
                
                     this.PriFireOnRelease=original.PriFireOnRelease;
                
                     this.PriWaitForRelease=original.PriWaitForRelease;
                
                     this.PriModeExclusive=original.PriModeExclusive;
                
                     this.PriFireRate=original.PriFireRate;
                
                     this.PriBotRefireRate=original.PriBotRefireRate;
                
                     this.PriAmmoPerFire=original.PriAmmoPerFire;
                
                     this.PriAmmoClipSize=original.PriAmmoClipSize;
                
                     this.PriAimError=original.PriAimError;
                
                     this.PriSpread=original.PriSpread;
                
                     this.PriSpreadStyle=original.PriSpreadStyle;
                
                     this.PriFireCount=original.PriFireCount;
                
                     this.PriDamageAtten=original.PriDamageAtten;
                
                     this.PriAmmoType=original.PriAmmoType;
                
                     this.PriInitialAmount=original.PriInitialAmount;
                
                     this.PriMaxAmount=original.PriMaxAmount;
                
                     this.PriMaxRange=original.PriMaxRange;
                
                     this.PriDamageType=original.PriDamageType;
                
                     this.PriArmorStops=original.PriArmorStops;
                
                     this.PriAlwaysGibs=original.PriAlwaysGibs;
                
                     this.PriSpecial=original.PriSpecial;
                
                     this.PriDetonatesGoop=original.PriDetonatesGoop;
                
                     this.PriSuperWeapon=original.PriSuperWeapon;
                
                     this.PriExtraMomZ=original.PriExtraMomZ;
                
                     this.PriProjType=original.PriProjType;
                
                     this.PriDamage=original.PriDamage;
                
                     this.PriDamageMax=original.PriDamageMax;
                
                     this.PriDamageMin=original.PriDamageMin;
                
                     this.PriSpeed=original.PriSpeed;
                
                     this.PriMaxSpeed=original.PriMaxSpeed;
                
                     this.PriLifeSpan=original.PriLifeSpan;
                
                     this.PriDamageRadius=original.PriDamageRadius;
                
                     this.PriTossZ=original.PriTossZ;
                
                     this.PriMaxEffectDistance=original.PriMaxEffectDistance;
                
                     this.SecFireModeType=original.SecFireModeType;
                
                     this.SecSplashDamage=original.SecSplashDamage;
                
                     this.SecSplashJump=original.SecSplashJump;
                
                     this.SecRecomSplashDamage=original.SecRecomSplashDamage;
                
                     this.SecTossed=original.SecTossed;
                
                     this.SecLeadTarget=original.SecLeadTarget;
                
                     this.SecInstantHit=original.SecInstantHit;
                
                     this.SecFireOnRelease=original.SecFireOnRelease;
                
                     this.SecWaitForRelease=original.SecWaitForRelease;
                
                     this.SecModeExclusive=original.SecModeExclusive;
                
                     this.SecFireRate=original.SecFireRate;
                
                     this.SecBotRefireRate=original.SecBotRefireRate;
                
                     this.SecAmmoPerFire=original.SecAmmoPerFire;
                
                     this.SecAmmoClipSize=original.SecAmmoClipSize;
                
                     this.SecAimError=original.SecAimError;
                
                     this.SecSpread=original.SecSpread;
                
                     this.SecSpreadStyle=original.SecSpreadStyle;
                
                     this.SecFireCount=original.SecFireCount;
                
                     this.SecDamageAtten=original.SecDamageAtten;
                
                     this.SecAmmoType=original.SecAmmoType;
                
                     this.SecInitialAmount=original.SecInitialAmount;
                
                     this.SecMaxAmount=original.SecMaxAmount;
                
                     this.SecMaxRange=original.SecMaxRange;
                
                     this.SecDamageType=original.SecDamageType;
                
                     this.SecArmorStops=original.SecArmorStops;
                
                     this.SecAlwaysGibs=original.SecAlwaysGibs;
                
                     this.SecSpecial=original.SecSpecial;
                
                     this.SecDetonatesGoop=original.SecDetonatesGoop;
                
                     this.SecSuperWeapon=original.SecSuperWeapon;
                
                     this.SecExtraMomZ=original.SecExtraMomZ;
                
                     this.SecProjType=original.SecProjType;
                
                     this.SecDamage=original.SecDamage;
                
                     this.SecDamageMax=original.SecDamageMax;
                
                     this.SecDamageMin=original.SecDamageMin;
                
                     this.SecSpeed=original.SecSpeed;
                
                     this.SecMaxSpeed=original.SecMaxSpeed;
                
                     this.SecLifeSpan=original.SecLifeSpan;
                
                     this.SecDamageRadius=original.SecDamageRadius;
                
                     this.SecTossZ=original.SecTossZ;
                
                     this.SecMaxEffectDistance=original.SecMaxEffectDistance;
                
                     this.Amount=original.Amount;
                
                     this.SuperHeal=original.SuperHeal;
                
             }   
             
             
                 /**
                  * Used by Yylex to create empty message then to fill it's protected fields (Yylex is in the same package).
                  */
	             public ItemCategory() {
	             }
             
	    		
	    		/**
	    		 * Here we save the original object for which this object is an update.
	    		 */ 
	    		private IWorldObject orig = null;
	    		
	            public IWorldObject update(IWorldObject obj) {
		            if(obj == null) {
		               orig = this;
		               return this;
		            }
		            orig = obj;
		            // typecast
		            ItemCategory  o = (ItemCategory)obj;
		            
		            
								o.Time = Time;
							
		            
		            return o;
		        }
	        
	            /**
	             * Returns original object (if method update() has already been called, for bot-programmer that is always true
	             * as the original object is updated and then the event is propagated).
	             */ 
		        public IWorldObject getObject() {
		            if (orig == null) return this;
		            return orig;
		        }
	        
                
                 
            public String toString() {
                return
                
                		super.toString() + " | " +
                		
				               "InventoryType = " + 
				               String.valueOf(InventoryType) + " | " +
				            
				               "PickupType = " + 
				               String.valueOf(PickupType) + " | " +
				            
				               "ItemCategory = " + 
				               String.valueOf(ItemCategory) + " | " +
				            
				               "Melee = " + 
				               String.valueOf(Melee) + " | " +
				            
				               "Sniping = " + 
				               String.valueOf(Sniping) + " | " +
				            
				               "UsesAltAmmo = " + 
				               String.valueOf(UsesAltAmmo) + " | " +
				            
				               "PriFireModeType = " + 
				               String.valueOf(PriFireModeType) + " | " +
				            
				               "PriSplashDamage = " + 
				               String.valueOf(PriSplashDamage) + " | " +
				            
				               "PriSplashJump = " + 
				               String.valueOf(PriSplashJump) + " | " +
				            
				               "PriRecomSplashDamage = " + 
				               String.valueOf(PriRecomSplashDamage) + " | " +
				            
				               "PriTossed = " + 
				               String.valueOf(PriTossed) + " | " +
				            
				               "PriLeadTarget = " + 
				               String.valueOf(PriLeadTarget) + " | " +
				            
				               "PriInstantHit = " + 
				               String.valueOf(PriInstantHit) + " | " +
				            
				               "PriFireOnRelease = " + 
				               String.valueOf(PriFireOnRelease) + " | " +
				            
				               "PriWaitForRelease = " + 
				               String.valueOf(PriWaitForRelease) + " | " +
				            
				               "PriModeExclusive = " + 
				               String.valueOf(PriModeExclusive) + " | " +
				            
				               "PriFireRate = " + 
				               String.valueOf(PriFireRate) + " | " +
				            
				               "PriBotRefireRate = " + 
				               String.valueOf(PriBotRefireRate) + " | " +
				            
				               "PriAmmoPerFire = " + 
				               String.valueOf(PriAmmoPerFire) + " | " +
				            
				               "PriAmmoClipSize = " + 
				               String.valueOf(PriAmmoClipSize) + " | " +
				            
				               "PriAimError = " + 
				               String.valueOf(PriAimError) + " | " +
				            
				               "PriSpread = " + 
				               String.valueOf(PriSpread) + " | " +
				            
				               "PriSpreadStyle = " + 
				               String.valueOf(PriSpreadStyle) + " | " +
				            
				               "PriFireCount = " + 
				               String.valueOf(PriFireCount) + " | " +
				            
				               "PriDamageAtten = " + 
				               String.valueOf(PriDamageAtten) + " | " +
				            
				               "PriAmmoType = " + 
				               String.valueOf(PriAmmoType) + " | " +
				            
				               "PriInitialAmount = " + 
				               String.valueOf(PriInitialAmount) + " | " +
				            
				               "PriMaxAmount = " + 
				               String.valueOf(PriMaxAmount) + " | " +
				            
				               "PriMaxRange = " + 
				               String.valueOf(PriMaxRange) + " | " +
				            
				               "PriDamageType = " + 
				               String.valueOf(PriDamageType) + " | " +
				            
				               "PriArmorStops = " + 
				               String.valueOf(PriArmorStops) + " | " +
				            
				               "PriAlwaysGibs = " + 
				               String.valueOf(PriAlwaysGibs) + " | " +
				            
				               "PriSpecial = " + 
				               String.valueOf(PriSpecial) + " | " +
				            
				               "PriDetonatesGoop = " + 
				               String.valueOf(PriDetonatesGoop) + " | " +
				            
				               "PriSuperWeapon = " + 
				               String.valueOf(PriSuperWeapon) + " | " +
				            
				               "PriExtraMomZ = " + 
				               String.valueOf(PriExtraMomZ) + " | " +
				            
				               "PriProjType = " + 
				               String.valueOf(PriProjType) + " | " +
				            
				               "PriDamage = " + 
				               String.valueOf(PriDamage) + " | " +
				            
				               "PriDamageMax = " + 
				               String.valueOf(PriDamageMax) + " | " +
				            
				               "PriDamageMin = " + 
				               String.valueOf(PriDamageMin) + " | " +
				            
				               "PriSpeed = " + 
				               String.valueOf(PriSpeed) + " | " +
				            
				               "PriMaxSpeed = " + 
				               String.valueOf(PriMaxSpeed) + " | " +
				            
				               "PriLifeSpan = " + 
				               String.valueOf(PriLifeSpan) + " | " +
				            
				               "PriDamageRadius = " + 
				               String.valueOf(PriDamageRadius) + " | " +
				            
				               "PriTossZ = " + 
				               String.valueOf(PriTossZ) + " | " +
				            
				               "PriMaxEffectDistance = " + 
				               String.valueOf(PriMaxEffectDistance) + " | " +
				            
				               "SecFireModeType = " + 
				               String.valueOf(SecFireModeType) + " | " +
				            
				               "SecSplashDamage = " + 
				               String.valueOf(SecSplashDamage) + " | " +
				            
				               "SecSplashJump = " + 
				               String.valueOf(SecSplashJump) + " | " +
				            
				               "SecRecomSplashDamage = " + 
				               String.valueOf(SecRecomSplashDamage) + " | " +
				            
				               "SecTossed = " + 
				               String.valueOf(SecTossed) + " | " +
				            
				               "SecLeadTarget = " + 
				               String.valueOf(SecLeadTarget) + " | " +
				            
				               "SecInstantHit = " + 
				               String.valueOf(SecInstantHit) + " | " +
				            
				               "SecFireOnRelease = " + 
				               String.valueOf(SecFireOnRelease) + " | " +
				            
				               "SecWaitForRelease = " + 
				               String.valueOf(SecWaitForRelease) + " | " +
				            
				               "SecModeExclusive = " + 
				               String.valueOf(SecModeExclusive) + " | " +
				            
				               "SecFireRate = " + 
				               String.valueOf(SecFireRate) + " | " +
				            
				               "SecBotRefireRate = " + 
				               String.valueOf(SecBotRefireRate) + " | " +
				            
				               "SecAmmoPerFire = " + 
				               String.valueOf(SecAmmoPerFire) + " | " +
				            
				               "SecAmmoClipSize = " + 
				               String.valueOf(SecAmmoClipSize) + " | " +
				            
				               "SecAimError = " + 
				               String.valueOf(SecAimError) + " | " +
				            
				               "SecSpread = " + 
				               String.valueOf(SecSpread) + " | " +
				            
				               "SecSpreadStyle = " + 
				               String.valueOf(SecSpreadStyle) + " | " +
				            
				               "SecFireCount = " + 
				               String.valueOf(SecFireCount) + " | " +
				            
				               "SecDamageAtten = " + 
				               String.valueOf(SecDamageAtten) + " | " +
				            
				               "SecAmmoType = " + 
				               String.valueOf(SecAmmoType) + " | " +
				            
				               "SecInitialAmount = " + 
				               String.valueOf(SecInitialAmount) + " | " +
				            
				               "SecMaxAmount = " + 
				               String.valueOf(SecMaxAmount) + " | " +
				            
				               "SecMaxRange = " + 
				               String.valueOf(SecMaxRange) + " | " +
				            
				               "SecDamageType = " + 
				               String.valueOf(SecDamageType) + " | " +
				            
				               "SecArmorStops = " + 
				               String.valueOf(SecArmorStops) + " | " +
				            
				               "SecAlwaysGibs = " + 
				               String.valueOf(SecAlwaysGibs) + " | " +
				            
				               "SecSpecial = " + 
				               String.valueOf(SecSpecial) + " | " +
				            
				               "SecDetonatesGoop = " + 
				               String.valueOf(SecDetonatesGoop) + " | " +
				            
				               "SecSuperWeapon = " + 
				               String.valueOf(SecSuperWeapon) + " | " +
				            
				               "SecExtraMomZ = " + 
				               String.valueOf(SecExtraMomZ) + " | " +
				            
				               "SecProjType = " + 
				               String.valueOf(SecProjType) + " | " +
				            
				               "SecDamage = " + 
				               String.valueOf(SecDamage) + " | " +
				            
				               "SecDamageMax = " + 
				               String.valueOf(SecDamageMax) + " | " +
				            
				               "SecDamageMin = " + 
				               String.valueOf(SecDamageMin) + " | " +
				            
				               "SecSpeed = " + 
				               String.valueOf(SecSpeed) + " | " +
				            
				               "SecMaxSpeed = " + 
				               String.valueOf(SecMaxSpeed) + " | " +
				            
				               "SecLifeSpan = " + 
				               String.valueOf(SecLifeSpan) + " | " +
				            
				               "SecDamageRadius = " + 
				               String.valueOf(SecDamageRadius) + " | " +
				            
				               "SecTossZ = " + 
				               String.valueOf(SecTossZ) + " | " +
				            
				               "SecMaxEffectDistance = " + 
				               String.valueOf(SecMaxEffectDistance) + " | " +
				            
				               "Amount = " + 
				               String.valueOf(Amount) + " | " +
				            
				               "SuperHeal = " + 
				               String.valueOf(SuperHeal) + " | " +
				             "";
                	 
             }
             
             public String toHtmlString() {
                return super.toString() +
             
            "<b>InventoryType</b> : " + 
            String.valueOf(InventoryType) + 
            " <br/> " +
             
            "<b>PickupType</b> : " + 
            String.valueOf(PickupType) + 
            " <br/> " +
             
            "<b>ItemCategory</b> : " + 
            String.valueOf(ItemCategory) + 
            " <br/> " +
             
            "<b>Melee</b> : " + 
            String.valueOf(Melee) + 
            " <br/> " +
             
            "<b>Sniping</b> : " + 
            String.valueOf(Sniping) + 
            " <br/> " +
             
            "<b>UsesAltAmmo</b> : " + 
            String.valueOf(UsesAltAmmo) + 
            " <br/> " +
             
            "<b>PriFireModeType</b> : " + 
            String.valueOf(PriFireModeType) + 
            " <br/> " +
             
            "<b>PriSplashDamage</b> : " + 
            String.valueOf(PriSplashDamage) + 
            " <br/> " +
             
            "<b>PriSplashJump</b> : " + 
            String.valueOf(PriSplashJump) + 
            " <br/> " +
             
            "<b>PriRecomSplashDamage</b> : " + 
            String.valueOf(PriRecomSplashDamage) + 
            " <br/> " +
             
            "<b>PriTossed</b> : " + 
            String.valueOf(PriTossed) + 
            " <br/> " +
             
            "<b>PriLeadTarget</b> : " + 
            String.valueOf(PriLeadTarget) + 
            " <br/> " +
             
            "<b>PriInstantHit</b> : " + 
            String.valueOf(PriInstantHit) + 
            " <br/> " +
             
            "<b>PriFireOnRelease</b> : " + 
            String.valueOf(PriFireOnRelease) + 
            " <br/> " +
             
            "<b>PriWaitForRelease</b> : " + 
            String.valueOf(PriWaitForRelease) + 
            " <br/> " +
             
            "<b>PriModeExclusive</b> : " + 
            String.valueOf(PriModeExclusive) + 
            " <br/> " +
             
            "<b>PriFireRate</b> : " + 
            String.valueOf(PriFireRate) + 
            " <br/> " +
             
            "<b>PriBotRefireRate</b> : " + 
            String.valueOf(PriBotRefireRate) + 
            " <br/> " +
             
            "<b>PriAmmoPerFire</b> : " + 
            String.valueOf(PriAmmoPerFire) + 
            " <br/> " +
             
            "<b>PriAmmoClipSize</b> : " + 
            String.valueOf(PriAmmoClipSize) + 
            " <br/> " +
             
            "<b>PriAimError</b> : " + 
            String.valueOf(PriAimError) + 
            " <br/> " +
             
            "<b>PriSpread</b> : " + 
            String.valueOf(PriSpread) + 
            " <br/> " +
             
            "<b>PriSpreadStyle</b> : " + 
            String.valueOf(PriSpreadStyle) + 
            " <br/> " +
             
            "<b>PriFireCount</b> : " + 
            String.valueOf(PriFireCount) + 
            " <br/> " +
             
            "<b>PriDamageAtten</b> : " + 
            String.valueOf(PriDamageAtten) + 
            " <br/> " +
             
            "<b>PriAmmoType</b> : " + 
            String.valueOf(PriAmmoType) + 
            " <br/> " +
             
            "<b>PriInitialAmount</b> : " + 
            String.valueOf(PriInitialAmount) + 
            " <br/> " +
             
            "<b>PriMaxAmount</b> : " + 
            String.valueOf(PriMaxAmount) + 
            " <br/> " +
             
            "<b>PriMaxRange</b> : " + 
            String.valueOf(PriMaxRange) + 
            " <br/> " +
             
            "<b>PriDamageType</b> : " + 
            String.valueOf(PriDamageType) + 
            " <br/> " +
             
            "<b>PriArmorStops</b> : " + 
            String.valueOf(PriArmorStops) + 
            " <br/> " +
             
            "<b>PriAlwaysGibs</b> : " + 
            String.valueOf(PriAlwaysGibs) + 
            " <br/> " +
             
            "<b>PriSpecial</b> : " + 
            String.valueOf(PriSpecial) + 
            " <br/> " +
             
            "<b>PriDetonatesGoop</b> : " + 
            String.valueOf(PriDetonatesGoop) + 
            " <br/> " +
             
            "<b>PriSuperWeapon</b> : " + 
            String.valueOf(PriSuperWeapon) + 
            " <br/> " +
             
            "<b>PriExtraMomZ</b> : " + 
            String.valueOf(PriExtraMomZ) + 
            " <br/> " +
             
            "<b>PriProjType</b> : " + 
            String.valueOf(PriProjType) + 
            " <br/> " +
             
            "<b>PriDamage</b> : " + 
            String.valueOf(PriDamage) + 
            " <br/> " +
             
            "<b>PriDamageMax</b> : " + 
            String.valueOf(PriDamageMax) + 
            " <br/> " +
             
            "<b>PriDamageMin</b> : " + 
            String.valueOf(PriDamageMin) + 
            " <br/> " +
             
            "<b>PriSpeed</b> : " + 
            String.valueOf(PriSpeed) + 
            " <br/> " +
             
            "<b>PriMaxSpeed</b> : " + 
            String.valueOf(PriMaxSpeed) + 
            " <br/> " +
             
            "<b>PriLifeSpan</b> : " + 
            String.valueOf(PriLifeSpan) + 
            " <br/> " +
             
            "<b>PriDamageRadius</b> : " + 
            String.valueOf(PriDamageRadius) + 
            " <br/> " +
             
            "<b>PriTossZ</b> : " + 
            String.valueOf(PriTossZ) + 
            " <br/> " +
             
            "<b>PriMaxEffectDistance</b> : " + 
            String.valueOf(PriMaxEffectDistance) + 
            " <br/> " +
             
            "<b>SecFireModeType</b> : " + 
            String.valueOf(SecFireModeType) + 
            " <br/> " +
             
            "<b>SecSplashDamage</b> : " + 
            String.valueOf(SecSplashDamage) + 
            " <br/> " +
             
            "<b>SecSplashJump</b> : " + 
            String.valueOf(SecSplashJump) + 
            " <br/> " +
             
            "<b>SecRecomSplashDamage</b> : " + 
            String.valueOf(SecRecomSplashDamage) + 
            " <br/> " +
             
            "<b>SecTossed</b> : " + 
            String.valueOf(SecTossed) + 
            " <br/> " +
             
            "<b>SecLeadTarget</b> : " + 
            String.valueOf(SecLeadTarget) + 
            " <br/> " +
             
            "<b>SecInstantHit</b> : " + 
            String.valueOf(SecInstantHit) + 
            " <br/> " +
             
            "<b>SecFireOnRelease</b> : " + 
            String.valueOf(SecFireOnRelease) + 
            " <br/> " +
             
            "<b>SecWaitForRelease</b> : " + 
            String.valueOf(SecWaitForRelease) + 
            " <br/> " +
             
            "<b>SecModeExclusive</b> : " + 
            String.valueOf(SecModeExclusive) + 
            " <br/> " +
             
            "<b>SecFireRate</b> : " + 
            String.valueOf(SecFireRate) + 
            " <br/> " +
             
            "<b>SecBotRefireRate</b> : " + 
            String.valueOf(SecBotRefireRate) + 
            " <br/> " +
             
            "<b>SecAmmoPerFire</b> : " + 
            String.valueOf(SecAmmoPerFire) + 
            " <br/> " +
             
            "<b>SecAmmoClipSize</b> : " + 
            String.valueOf(SecAmmoClipSize) + 
            " <br/> " +
             
            "<b>SecAimError</b> : " + 
            String.valueOf(SecAimError) + 
            " <br/> " +
             
            "<b>SecSpread</b> : " + 
            String.valueOf(SecSpread) + 
            " <br/> " +
             
            "<b>SecSpreadStyle</b> : " + 
            String.valueOf(SecSpreadStyle) + 
            " <br/> " +
             
            "<b>SecFireCount</b> : " + 
            String.valueOf(SecFireCount) + 
            " <br/> " +
             
            "<b>SecDamageAtten</b> : " + 
            String.valueOf(SecDamageAtten) + 
            " <br/> " +
             
            "<b>SecAmmoType</b> : " + 
            String.valueOf(SecAmmoType) + 
            " <br/> " +
             
            "<b>SecInitialAmount</b> : " + 
            String.valueOf(SecInitialAmount) + 
            " <br/> " +
             
            "<b>SecMaxAmount</b> : " + 
            String.valueOf(SecMaxAmount) + 
            " <br/> " +
             
            "<b>SecMaxRange</b> : " + 
            String.valueOf(SecMaxRange) + 
            " <br/> " +
             
            "<b>SecDamageType</b> : " + 
            String.valueOf(SecDamageType) + 
            " <br/> " +
             
            "<b>SecArmorStops</b> : " + 
            String.valueOf(SecArmorStops) + 
            " <br/> " +
             
            "<b>SecAlwaysGibs</b> : " + 
            String.valueOf(SecAlwaysGibs) + 
            " <br/> " +
             
            "<b>SecSpecial</b> : " + 
            String.valueOf(SecSpecial) + 
            " <br/> " +
             
            "<b>SecDetonatesGoop</b> : " + 
            String.valueOf(SecDetonatesGoop) + 
            " <br/> " +
             
            "<b>SecSuperWeapon</b> : " + 
            String.valueOf(SecSuperWeapon) + 
            " <br/> " +
             
            "<b>SecExtraMomZ</b> : " + 
            String.valueOf(SecExtraMomZ) + 
            " <br/> " +
             
            "<b>SecProjType</b> : " + 
            String.valueOf(SecProjType) + 
            " <br/> " +
             
            "<b>SecDamage</b> : " + 
            String.valueOf(SecDamage) + 
            " <br/> " +
             
            "<b>SecDamageMax</b> : " + 
            String.valueOf(SecDamageMax) + 
            " <br/> " +
             
            "<b>SecDamageMin</b> : " + 
            String.valueOf(SecDamageMin) + 
            " <br/> " +
             
            "<b>SecSpeed</b> : " + 
            String.valueOf(SecSpeed) + 
            " <br/> " +
             
            "<b>SecMaxSpeed</b> : " + 
            String.valueOf(SecMaxSpeed) + 
            " <br/> " +
             
            "<b>SecLifeSpan</b> : " + 
            String.valueOf(SecLifeSpan) + 
            " <br/> " +
             
            "<b>SecDamageRadius</b> : " + 
            String.valueOf(SecDamageRadius) + 
            " <br/> " +
             
            "<b>SecTossZ</b> : " + 
            String.valueOf(SecTossZ) + 
            " <br/> " +
             
            "<b>SecMaxEffectDistance</b> : " + 
            String.valueOf(SecMaxEffectDistance) + 
            " <br/> " +
             
            "<b>Amount</b> : " + 
            String.valueOf(Amount) + 
            " <br/> " +
             
            "<b>SuperHeal</b> : " + 
            String.valueOf(SuperHeal) + 
            " <br/> " +
             "";
             }            
             
             
             
             }
                         
        