Example #1
0
		public override void LoadRules(FileFormats.IniFile.IniSection rules) {
			base.LoadRules(rules);

			LandTargeting = rules.ReadInt("LandTargeting");
			NavalTargeting = rules.ReadInt("NavalTargeting");
			SpeedType = rules.ReadEnum<SpeedType>("SpeedType", SpeedType.Clear);
			TypeImmune = rules.ReadBool("TypeImmune");
			WalkRate = rules.ReadFloat("WalkRate", 1);
			MoveRate = rules.ReadFloat("MoveRate");
			MoveToShroud = rules.ReadBool("MoveToShroud", true);
			IsTrain = rules.ReadBool("IsTrain");
			DoubleOwned = rules.ReadBool("DoubleOwned");
			GuardRange = (int)rules.ReadFloat("GuardRange");
			Explodes = rules.ReadBool("Explodes");
			DeathWeapon = TypesRepository.GetWeaponType(rules.ReadString("DeathWeapon"));
			DeathWeaponDamageModifier = rules.ReadFloat("DeathWeaponDamageModifier", 1);
			FlightLevel = rules.ReadInt("FlightLevel", -1);
			IsDropship = rules.ReadBool("IsDropship");
			PitchAngle = rules.ReadFloat("PitchAngle", 0.349066f);
			RollAngle = rules.ReadFloat("RollAngle", 0.523599f);
			PitchSpeed = rules.ReadFloat("PitchSpeed", 0.25f);
			Locomotor = Guid.Parse(rules.ReadString("Locomotor", "{4A582747-9839-11d1-B709-00A024DDAFD1}"));
			CloakingSpeed = rules.ReadInt("CloakingSpeed", 7);
			ThreatAvoidanceCoefficient = rules.ReadFloat("ThreatAvoidanceCoefficient");
			SlowdownDistance = rules.ReadInt("SlowdownDistance", 500);
			DeaccelerationFactor = rules.ReadFloat("DeaccelerationFactor", 0.002f);
			AccelerationFactor = rules.ReadFloat("AccelerationFactor", 0.03f);
			Weight = rules.ReadFloat("Weight", 1);
			PhysicalSize = rules.ReadFloat("PhysicalSize", 2);
			Size = rules.ReadFloat("Size", 1);
			SizeLimit = rules.ReadFloat("SizeLimit");
			HoverAttack = rules.ReadBool("HoverAttack");
			VHPScan = rules.ReadEnum<VHPScan>("VHPScan", VHPScan.None);
			MaxDebris = rules.ReadInt("MaxDebris");
			MinDebris = rules.ReadInt("MinDebris");
			DebrisTypes = GetList<VoxelAnimation>(rules.ReadList("DebrisTypes"));
			DebrisMaximums = rules.ReadList("DebrisMaximums").Select(int.Parse).ToList();
			DebrisAnims = GetList<VoxelAnimation>(rules.ReadList("DebrisAnims"));
			HasTurretTooltips = rules.ReadBool("HasTurretTooltips");
			TurretCount = rules.ReadInt("TurretCount");
			WeaponCount = rules.ReadInt("WeaponCount");
			IsChargeTurret = rules.ReadBool("IsChargeTurret");
			ClearAllWeapons = rules.ReadBool("ClearAllWeapons");
			Primary = TypesRepository.GetWeaponType(rules.ReadString("Primary"));
			Secondary = TypesRepository.GetWeaponType(rules.ReadString("Secondary"));
			ElitePrimary = TypesRepository.GetWeaponType(rules.ReadString("ElitePrimary"));
			EliteSecondary = TypesRepository.GetWeaponType(rules.ReadString("EliteSecondary"));
			WeaponX = TypesRepository.GetWeaponType(rules.ReadString("WeaponX"));
			EliteWeaponX = TypesRepository.GetWeaponType(rules.ReadString("EliteWeaponX"));
			VoiceMove = GetList<Sound>(rules.ReadList("VoiceMove"));
			VoiceSelect =GetList<Sound>( rules.ReadList("VoiceSelect"));
			VoiceSelectEnslaved = GetList<Sound>( rules.ReadList("VoiceSelectEnslaved"));
			VoiceSelectDeactivated = GetList<Sound>( rules.ReadList("VoiceSelectDeactivated"));
			VoiceAttack = GetList<Sound>( rules.ReadList("VoiceAttack"));
			VoiceSpecialAttack = GetList<Sound>( rules.ReadList("VoiceSpecialAttack"));
			VoiceDie = GetList<Sound>( rules.ReadList("VoiceDie"));
			VoiceFeedback = GetList<Sound>( rules.ReadList("VoiceFeedback"));
			AuxSound1 = TypesRepository.GetSound(rules.ReadString("AuxSound1"));
			AuxSound2	 = TypesRepository.GetSound(rules.ReadString("AuxSound2"));
			CreateSound	 = TypesRepository.GetSound(rules.ReadString("CreateSound"));
			DamageSound	 = TypesRepository.GetSound(rules.ReadString("DamageSound"));
			ImpactWaterSound	 = TypesRepository.GetSound(rules.ReadString("ImpactWaterSound"));
			ImpactLandSound = TypesRepository.GetSound(rules.ReadString("ImpactLandSound"));
			CrashingSound	 = TypesRepository.GetSound(rules.ReadString("CrashingSound"));
			SinkingSound	 = TypesRepository.GetSound(rules.ReadString("SinkingSound"));
			VoiceFalling	 = TypesRepository.GetSound(rules.ReadString("VoiceFalling"));
			VoiceCrashing	 = TypesRepository.GetSound(rules.ReadString("VoiceCrashing"));
			VoiceSinking	 = TypesRepository.GetSound(rules.ReadString("VoiceSinking"));
			VoiceEnter	 = TypesRepository.GetSound(rules.ReadString("VoiceEnter"));
			VoiceCapture = TypesRepository.GetSound(rules.ReadString("VoiceCapture"));
			CloakStop = rules.ReadBool("CloakStop");
			Storage = rules.ReadInt("Storage");
			BuildLimit = rules.ReadInt("BuildLimit", 2147483647);
			Category = rules.ReadEnum<Category>("Category", Category.None);
			Dock = GetList<BuildingType>(rules.ReadList("Dock"));
			DeploysInto = Get<BuildingType>("DeploysInto");
			UndeploysInto = Get<VehicleType>("UndeploysInto");
			PowersUnit = Get<VehicleType>(rules.ReadString("PowersUnit"));
			PoweredUnit = rules.ReadBool("PoweredUnit");
			LightningRod = rules.ReadBool("LightningRod");
			ManualReload = rules.ReadBool("ManualReload");
			TurretSpins = rules.ReadBool("TurretSpins");
			TiltCrashJumpjet = rules.ReadBool("TiltCrashJumpjet");
			Turret = rules.ReadBool("Turret");
			TurretRotateSound	 = TypesRepository.GetSound(rules.ReadString("TurretRotateSound"));	
			EnterTransportSound	 = TypesRepository.GetSound(rules.ReadString("EnterTransportSound"));	
			LeaveTransportSound		 = TypesRepository.GetSound(rules.ReadString("LeaveTransportSound"));	
			MoveSound = GetList<Sound>(rules.ReadList("MoveSound"));
			DieSound = GetList<Sound>(rules.ReadList("DieSound"));
			DeploySound	 = TypesRepository.GetSound(rules.ReadString("DeploySound"));		
			UndeploySound	= TypesRepository.GetSound(rules.ReadString("UndeploySound"));			
			ChronoInSound	= TypesRepository.GetSound(rules.ReadString("ChronoInSound"));			
			ChronoOutSound	= TypesRepository.GetSound(rules.ReadString("ChronoOutSound"));			
			VoiceHarvest	= TypesRepository.GetSound(rules.ReadString("VoiceHarvest"));			
			VoicePrimaryWeaponAttack	= TypesRepository.GetSound(rules.ReadString("VoicePrimaryWeaponAttack"));			
			VoicePrimaryEliteWeaponAttack	= TypesRepository.GetSound(rules.ReadString("VoicePrimaryEliteWeaponAttack"));			
			VoiceSecondaryWeaponAttack	= TypesRepository.GetSound(rules.ReadString("VoiceSecondaryWeaponAttack"));			
			VoiceSecondaryEliteWeaponAttack	= TypesRepository.GetSound(rules.ReadString("VoiceSecondaryEliteWeaponAttack"));			
			VoiceDeploy	= TypesRepository.GetSound(rules.ReadString("VoiceDeploy"));			
			VoiceUndeploy	= TypesRepository.GetSound(rules.ReadString("VoiceUndeploy"));			
			EnterGrinderSound	= TypesRepository.GetSound(rules.ReadString("EnterGrinderSound"));			
			LeaveGrinderSound	= TypesRepository.GetSound(rules.ReadString("LeaveGrinderSound"));			
			EnterBioReactorSound	= TypesRepository.GetSound(rules.ReadString("EnterBioReactorSound"));			
			LeaveBioReactorSound	= TypesRepository.GetSound(rules.ReadString("LeaveBioReactorSound"));			
			ActivateSound	= TypesRepository.GetSound(rules.ReadString("ActivateSound"));			
			DeactivateSound	= TypesRepository.GetSound(rules.ReadString("DeactivateSound"));			
			MindClearedSound	= TypesRepository.GetSound(rules.ReadString("MindClearedSound"));			

			Explosion = GetList<Animation>(rules.ReadList("Explosion"));
			DestroyAnim = GetList<Animation>(rules.ReadList("DestroyAnim"));
			NaturalParticleSystem = Get<ParticleSystem>(rules.ReadString("NaturalParticleSystem"));
			RefinerySmokeParticleSystem = Get<ParticleSystem>(rules.ReadString("RefinerySmokeParticleSystem"));
			NaturalParticleLocation = rules.ReadXYZ("NaturalPrules.cleLocation");
			DamageParticleSystems = GetList<ParticleSystem>(rules.ReadList("DamageParticleSystems"));
			DestroyParticleSystems = GetList<ParticleSystem>(rules.ReadList("DestroyParticleSystems"));
			DamageSmokeOffset = rules.ReadXYZ("DamageSmokeOffset");
			DamSmkOffScrnRel = rules.ReadBool("DamSmkOffScrnRel");
			DestroySmokeOffset = rules.ReadXYZ("DestroySmokeOffset");
			RefinerySmokeOffsetOne = rules.ReadXYZ("RefinerySmokeOffsetOne");
			RefinerySmokeOffsetTwo = rules.ReadXYZ("RefinerySmokeOffsetTwo");
			RefinerySmokeOffsetThree = rules.ReadXYZ("RefinerySmokeOffsetThree");
			RefinerySmokeOffsetFour = rules.ReadXYZ("RefinerySmokeOffsetFour");
			Nominal = rules.ReadBool("Nominal");
			DontScore = rules.ReadBool("DontScore");
			DamageSelf = rules.ReadBool("DamageSelf");
			Cloakable = rules.ReadBool("Cloakable");
			GapGenerator = rules.ReadBool("GapGenerator");
			GapRadiusInCells = rules.ReadInt("GapRadiusInCells");
			SuperGapRadiusInCells = rules.ReadInt("SuperGapRadiusInCells");
			Teleporter = rules.ReadBool("Teleporter");
			Sensors = rules.ReadBool("Sensors");
			IsGattling = rules.ReadBool("IsGattling");
			WeaponStages = rules.ReadInt("WeaponStages");
			RateUp = rules.ReadInt("RateUp");
			RateDown = rules.ReadInt("RateDown");
			StageX = rules.ReadInt("StageX");
			EliteStageX = rules.ReadInt("EliteStageX");
			PipScale = rules.ReadEnum("PipScale", PipScale.none);
			PipsDrawForAll = rules.ReadBool("PipsDrawForAll");
			LeptonMindControlOffset = rules.ReadInt("LeptonMindControlOffset", 70);
			PixelSelectionBracketDelta = rules.ReadBool("PixelSelectionBracketDelta");
			PipWrap = rules.ReadInt("PipWrap");
			Prerequisite = GetList<Prerequisite>(rules.ReadList("Prerequisite"));
			PrerequisiteOverride = GetList<Prerequisite>(rules.ReadList("PrerequisiteOverride"));
			Sight = rules.ReadInt("Sight");
			ReselectIfLimboed = rules.ReadBool("ReselectIfLimboed");
			RejoinTeamIfLimboed = rules.ReadBool("RejoinTeamIfLimboed");
			SensorsSight = rules.ReadInt("SensorsSight");
			DetectDisguiseRange = rules.ReadInt("DetectDisguiseRange");
			BombSight = rules.ReadInt("BombSight");
			LeadershipRating = rules.ReadInt("LeadershipRating", 5);
			MindControlRingOffset = rules.ReadInt("MindControlRingOffset", 140);
			BuildTimeMultiplier = rules.ReadFloat("BuildTimeMultiplier", 1);
			RevealToAll = rules.ReadBool("RevealToAll");
			Drainable = rules.ReadBool("Drainable");
			OpenTopped = rules.ReadBool("OpenTopped");
			ResourceGatherer = rules.ReadBool("ResourceGatherer");
			ResourceDestination = rules.ReadBool("ResourceDestination");
			CanDisguise = rules.ReadBool("CanDisguise");
			PermaDisguise = rules.ReadBool("PermaDisguise");
			DetectDisguise = rules.ReadBool("DetectDisguise");
			DisguiseWhenStill = rules.ReadBool("DisguiseWhenStill");
			CanPassiveAquire = rules.ReadBool("CanPassiveAquire", true);
			CanRetaliate = rules.ReadBool("CanRetaliate", true);
			CanApproachTarget = rules.ReadBool("CanApproachTarget", true);
			CanRecalcApproachTarget = rules.ReadBool("CanRecalcApproachTarget", true);
			RequiresStolenThirdTech = rules.ReadBool("RequiresStolenThirdTech");
			RequiresStolenSovietTech = rules.ReadBool("RequiresStolenSovietTech");
			RequiresStolenAlliedTech = rules.ReadBool("RequiresStolenAlliedTech");
			RequiredHouses = GetList<House>(rules.ReadList("RequiredHouses"));
			SecretHouses = GetList<House>(rules.ReadList("SecretHouses"));
			ForbiddenHouses = GetList<House>(rules.ReadList("ForbiddenHouses"));
			TechLevel = rules.ReadInt("TechLevel", 255);
			AirstrikeTeam = rules.ReadInt("AirstrikeTeam");
			EliteAirstrikeTeam = rules.ReadInt("EliteAirstrikeTeam");
			AirstrikeTeamType =  Get<AircraftType>(rules.ReadString("AirstrikeTeamType"));
			EliteAirstrikeTeamType = Get<AircraftType>(rules.ReadString("EliteAirstrikeTeamType"));
			AirstrikeRechargeTime = rules.ReadInt("AirstrikeRechargeTime");
			EliteAirstrikeRechargeTime = rules.ReadInt("EliteAirstrikeRechargeTime");
			Speed = rules.ReadInt("Speed");
			Cost = rules.ReadInt("Cost");
			Soylent = rules.ReadInt("Soylent");
			UnloadingClass = Get<VehicleType>(rules.ReadString("UnloadingClass"));
			DeployingAnim = Get<Animation>(rules.ReadString("DeployingAnim"));
			InitialAmmo = rules.ReadInt("InitialAmmo", -1);
			Ammo = rules.ReadInt("Ammo", -1);
			IFVMode = rules.ReadInt("IFVMode");
			AirRangeBonus = rules.ReadFloat("AirRangeBonus");
			RadialFireSegments = rules.ReadInt("RadialFireSegments");
			DeployFireWeapon = rules.ReadInt("DeployFireWeapon", 1);
			DeployFire = rules.ReadBool("DeployFire");
			DeployToLand = rules.ReadBool("DeployToLand");
			MobileFire = rules.ReadBool("MobileFire", true);
			OpportunityFire = rules.ReadBool("OpportunityFire");
			DistributedFire = rules.ReadBool("DistributedFire");
			Reload = rules.ReadInt("Reload");
			EmptyReload = rules.ReadInt("EmptyReload", -1);
			ReloadIncrement = rules.ReadInt("ReloadIncrement");
			DamageReducesReadiness = rules.ReadBool("DamageReducesReadiness");
			ReadinessReductionMultiplier = rules.ReadFloat("ReadinessReductionMultiplier");
			BerserkFriendly = rules.ReadBool("BerserkFriendly");
			SprayAttack = rules.ReadBool("SprayAttack");
			Pushy = rules.ReadBool("Pushy");
			Natural = rules.ReadBool("Natural");
			Unnatural = rules.ReadBool("Unnatural");
			CloseRange = rules.ReadBool("CloseRange");
			PreventAttackMove = rules.ReadBool("PreventAttackMove");
			Points = rules.ReadInt("Points");
			ThreatPosed = rules.ReadInt("ThreatPosed");
			Owner = GetList<House>(rules.ReadList("Owner"));
			AIBasePlanningSide = rules.ReadInt("AIBasePlanningSide", -1);
			Trainable = rules.ReadBool("Trainable", true);
			Crewed = rules.ReadBool("Crewed");
			Gunner = rules.ReadBool("Gunner");
			Naval = rules.ReadBool("Naval");
			Repairable = rules.ReadBool("Repairable", true);
			Invisible = rules.ReadBool("Invisible");
			RadarVisible = rules.ReadBool("RadarVisible");
			SelfHealing = rules.ReadBool("SelfHealing");
			NoAutoFire = rules.ReadBool("NoAutoFire");
			ROT = rules.ReadInt("ROT");
			Passengers = rules.ReadInt("Passengers");
			FireAngle = rules.ReadInt("FireAngle", 8);
			DeployTime = rules.ReadFloat("DeployTime");
			UndeployDelay = rules.ReadInt("UndeployDelay", -1);
			Disableable = rules.ReadBool("Disableable", true);
			ToProtect = rules.ReadBool("ToProtect");
			TiberiumHeal = rules.ReadBool("TiberiumHeal");
			ImmuneToVeins = rules.ReadBool("ImmuneToVeins");
			AllowedToStartInMultiplayer = rules.ReadBool("AllowedToStrules.nMultiplayer", true);
			StupidHunt = rules.ReadBool("StupidHunt");
			TargetLaser = rules.ReadBool("TargetLaser");
			HunterSeeker = rules.ReadBool("HunterSeeker");
			Crusher = rules.ReadBool("Crusher");
			OmniCrusher = rules.ReadBool("OmniCrusher");
			OmniCrushResistant = rules.ReadBool("OmniCrushResistant");
			AutoCrush = rules.ReadBool("AutoCrush");
			ImmuneToRadiation = rules.ReadBool("ImmuneToRadiation");
			Underwater = rules.ReadBool("Underwater");
			BalloonHover = rules.ReadBool("BalloonHover");
			Slaved = rules.ReadBool("Slaved");
			Enslaves = TypesRepository.GetInfantryType(rules.ReadString("Enslaves"));
			SlaveRegenRate = rules.ReadInt("SlaveRegenRate");
			SlavesNumber = rules.ReadInt("SlavesNumber");
			SlaveReloadRate = rules.ReadInt("SlaveReloadRate");
			OpenTransportWeapon = rules.ReadInt("OpenTransportWeapon", -1);
			Spawned = rules.ReadInt("Spawned");
			Spawns = TypesRepository.GetAircraftType(rules.ReadString("Spawns"));
			SpawnRegenRate = rules.ReadInt("SpawnRegenRate");
			SpawnsNumber = rules.ReadInt("SpawnsNumber");
			SpawnReloadRate = rules.ReadInt("SpawnReloadRate");
			MissileSpawn = rules.ReadBool("MissileSpawn");
			DefaultToGuardArea = rules.ReadBool("DefaultToGuardArea");
			Warpable = rules.ReadBool("Warpable", true);
			Parasiteable = rules.ReadBool("Parasiteable");
			ImmuneToPsionics = rules.ReadBool("ImmuneToPsionics");
			ImmuneToPsionicWeapons = rules.ReadBool("ImmuneToPsionicWeapons");
			ConsideredAircraft = rules.ReadBool("ConsideredAircraft");
			Bunkerable = rules.ReadBool("Bunkerable");
			Organic = rules.ReadBool("Organic");
			ImmuneToPoison = rules.ReadBool("ImmuneToPoison");
			SuppressionThreshold = rules.ReadFloat("SuppressionThreshold");
			NoShadow = rules.ReadBool("NoShadow");
			JumpjetTurnRate = rules.ReadInt("JumpjetTurnRate", 4);
			JumpjetSpeed = rules.ReadFloat("JumpjetSpeed", 14);
			JumpjetClimb = rules.ReadFloat("JumpjetClimb", 5);
			JumpjetCrash = rules.ReadFloat("JumpjetCrash", 5);
			JumpjetHeight = rules.ReadInt("JumpjetHeight", 500);
			JumpjetAccel = rules.ReadFloat("JumpjetAccel", 2);
			JumpjetWobbles = rules.ReadFloat("JumpjetWobbles", 0.15f);
			JumpjetNoWobbles = rules.ReadBool("JumpjetNoWobbles");
			JumpjetDeviation = rules.ReadInt("JumpjetDeviation", 40);
			JumpJet = rules.ReadBool("JumpJet");
			Crashable = rules.ReadBool("Crashable");
			AttackFriendlies = rules.ReadBool("AttackFriendlies");
			AttackCursorOnFriendlies = rules.ReadBool("AttackCursorOnFriendlies");
			TurretRecoil = rules.ReadBool("TurretRecoil");
			TurretTravel = rules.ReadInt("TurretTravel", 2);
			TurretCompressFrames = rules.ReadInt("TurretCompressFrames", 1);
			TurretHoldFrames = rules.ReadInt("TurretHoldFrames", 1);
			TurretRecoverFrames = rules.ReadInt("TurretRecoverFrames", 1);
			BarrelTravel = rules.ReadInt("BarrelTravel", 2);
			BarrelCompressFrames = rules.ReadInt("BarrelCompressFrames", 1);
			BarrelHoldFrames = rules.ReadInt("BarrelHoldFrames", 1);
			BarrelRecoverFrames = rules.ReadInt("BarrelRecoverFrames", 1);
			TiltsWhenCrushes = rules.ReadBool("TiltsWhenCrushes", true);
			Accelerates = rules.ReadBool("Accelerates", true);
			ZFudgeCliff = rules.ReadInt("ZFudgeCliff", 10);
			ZFudgeColumn = rules.ReadInt("ZFudgeColumn", 5);
			ZFudgeTunnel = rules.ReadInt("ZFudgeTunnel", 10);
			ZFudgeBridge = rules.ReadInt("ZFudgeBridge");
			VeteranAbilities = ReadFlags<Abilities>(rules.ReadList("VeteranAbilities"));
			EliteAbilities = ReadFlags<Abilities>(rules.ReadList("EliteAbilities"));
			MyEffectivenessCoefficient = rules.ReadFloat("MyEffectivenessCoefficient");
			TargetEffectivenessCoefficient = rules.ReadFloat("TargetEffectivenessCoefficient");
			TargetSpecialThreatCoefficient = rules.ReadFloat("TargetSpecialThreatCoefficient");
			TargetStrengthCoefficient = rules.ReadFloat("TargetStrengthCoefficient");
			TargetDistanceCoefficient = rules.ReadFloat("TargetDistanceCoefficient");
			SpecialThreatValue = rules.ReadFloat("SpecialThreatValue");
			IsSelectableCombatant = rules.ReadBool("IsSelectableCombatant");
			MovementZone = rules.ReadEnum<MovementZone>("MovementZone", MovementZone.Normal);

		}
Example #2
0
        public override void LoadRules(FileFormats.IniFile.IniSection rules)
        {
            base.LoadRules(rules);

            LandTargeting              = rules.ReadInt("LandTargeting");
            NavalTargeting             = rules.ReadInt("NavalTargeting");
            SpeedType                  = rules.ReadEnum <SpeedType>("SpeedType", SpeedType.Clear);
            TypeImmune                 = rules.ReadBool("TypeImmune");
            WalkRate                   = rules.ReadFloat("WalkRate", 1);
            MoveRate                   = rules.ReadFloat("MoveRate");
            MoveToShroud               = rules.ReadBool("MoveToShroud", true);
            IsTrain                    = rules.ReadBool("IsTrain");
            DoubleOwned                = rules.ReadBool("DoubleOwned");
            GuardRange                 = (int)rules.ReadFloat("GuardRange");
            Explodes                   = rules.ReadBool("Explodes");
            DeathWeapon                = TypesRepository.GetWeaponType(rules.ReadString("DeathWeapon"));
            DeathWeaponDamageModifier  = rules.ReadFloat("DeathWeaponDamageModifier", 1);
            FlightLevel                = rules.ReadInt("FlightLevel", -1);
            IsDropship                 = rules.ReadBool("IsDropship");
            PitchAngle                 = rules.ReadFloat("PitchAngle", 0.349066f);
            RollAngle                  = rules.ReadFloat("RollAngle", 0.523599f);
            PitchSpeed                 = rules.ReadFloat("PitchSpeed", 0.25f);
            Locomotor                  = Guid.Parse(rules.ReadString("Locomotor", "{4A582747-9839-11d1-B709-00A024DDAFD1}"));
            CloakingSpeed              = rules.ReadInt("CloakingSpeed", 7);
            ThreatAvoidanceCoefficient = rules.ReadFloat("ThreatAvoidanceCoefficient");
            SlowdownDistance           = rules.ReadInt("SlowdownDistance", 500);
            DeaccelerationFactor       = rules.ReadFloat("DeaccelerationFactor", 0.002f);
            AccelerationFactor         = rules.ReadFloat("AccelerationFactor", 0.03f);
            Weight                          = rules.ReadFloat("Weight", 1);
            PhysicalSize                    = rules.ReadFloat("PhysicalSize", 2);
            Size                            = rules.ReadFloat("Size", 1);
            SizeLimit                       = rules.ReadFloat("SizeLimit");
            HoverAttack                     = rules.ReadBool("HoverAttack");
            VHPScan                         = rules.ReadEnum <VHPScan>("VHPScan", VHPScan.None);
            MaxDebris                       = rules.ReadInt("MaxDebris");
            MinDebris                       = rules.ReadInt("MinDebris");
            DebrisTypes                     = GetList <VoxelAnimation>(rules.ReadList("DebrisTypes"));
            DebrisMaximums                  = rules.ReadList("DebrisMaximums").Select(int.Parse).ToList();
            DebrisAnims                     = GetList <VoxelAnimation>(rules.ReadList("DebrisAnims"));
            HasTurretTooltips               = rules.ReadBool("HasTurretTooltips");
            TurretCount                     = rules.ReadInt("TurretCount");
            WeaponCount                     = rules.ReadInt("WeaponCount");
            IsChargeTurret                  = rules.ReadBool("IsChargeTurret");
            ClearAllWeapons                 = rules.ReadBool("ClearAllWeapons");
            Primary                         = TypesRepository.GetWeaponType(rules.ReadString("Primary"));
            Secondary                       = TypesRepository.GetWeaponType(rules.ReadString("Secondary"));
            ElitePrimary                    = TypesRepository.GetWeaponType(rules.ReadString("ElitePrimary"));
            EliteSecondary                  = TypesRepository.GetWeaponType(rules.ReadString("EliteSecondary"));
            WeaponX                         = TypesRepository.GetWeaponType(rules.ReadString("WeaponX"));
            EliteWeaponX                    = TypesRepository.GetWeaponType(rules.ReadString("EliteWeaponX"));
            VoiceMove                       = GetList <Sound>(rules.ReadList("VoiceMove"));
            VoiceSelect                     = GetList <Sound>(rules.ReadList("VoiceSelect"));
            VoiceSelectEnslaved             = GetList <Sound>(rules.ReadList("VoiceSelectEnslaved"));
            VoiceSelectDeactivated          = GetList <Sound>(rules.ReadList("VoiceSelectDeactivated"));
            VoiceAttack                     = GetList <Sound>(rules.ReadList("VoiceAttack"));
            VoiceSpecialAttack              = GetList <Sound>(rules.ReadList("VoiceSpecialAttack"));
            VoiceDie                        = GetList <Sound>(rules.ReadList("VoiceDie"));
            VoiceFeedback                   = GetList <Sound>(rules.ReadList("VoiceFeedback"));
            AuxSound1                       = TypesRepository.GetSound(rules.ReadString("AuxSound1"));
            AuxSound2                       = TypesRepository.GetSound(rules.ReadString("AuxSound2"));
            CreateSound                     = TypesRepository.GetSound(rules.ReadString("CreateSound"));
            DamageSound                     = TypesRepository.GetSound(rules.ReadString("DamageSound"));
            ImpactWaterSound                = TypesRepository.GetSound(rules.ReadString("ImpactWaterSound"));
            ImpactLandSound                 = TypesRepository.GetSound(rules.ReadString("ImpactLandSound"));
            CrashingSound                   = TypesRepository.GetSound(rules.ReadString("CrashingSound"));
            SinkingSound                    = TypesRepository.GetSound(rules.ReadString("SinkingSound"));
            VoiceFalling                    = TypesRepository.GetSound(rules.ReadString("VoiceFalling"));
            VoiceCrashing                   = TypesRepository.GetSound(rules.ReadString("VoiceCrashing"));
            VoiceSinking                    = TypesRepository.GetSound(rules.ReadString("VoiceSinking"));
            VoiceEnter                      = TypesRepository.GetSound(rules.ReadString("VoiceEnter"));
            VoiceCapture                    = TypesRepository.GetSound(rules.ReadString("VoiceCapture"));
            CloakStop                       = rules.ReadBool("CloakStop");
            Storage                         = rules.ReadInt("Storage");
            BuildLimit                      = rules.ReadInt("BuildLimit", 2147483647);
            Category                        = rules.ReadEnum <Category>("Category", Category.None);
            Dock                            = GetList <BuildingType>(rules.ReadList("Dock"));
            DeploysInto                     = Get <BuildingType>("DeploysInto");
            UndeploysInto                   = Get <VehicleType>("UndeploysInto");
            PowersUnit                      = Get <VehicleType>(rules.ReadString("PowersUnit"));
            PoweredUnit                     = rules.ReadBool("PoweredUnit");
            LightningRod                    = rules.ReadBool("LightningRod");
            ManualReload                    = rules.ReadBool("ManualReload");
            TurretSpins                     = rules.ReadBool("TurretSpins");
            TiltCrashJumpjet                = rules.ReadBool("TiltCrashJumpjet");
            Turret                          = rules.ReadBool("Turret");
            TurretRotateSound               = TypesRepository.GetSound(rules.ReadString("TurretRotateSound"));
            EnterTransportSound             = TypesRepository.GetSound(rules.ReadString("EnterTransportSound"));
            LeaveTransportSound             = TypesRepository.GetSound(rules.ReadString("LeaveTransportSound"));
            MoveSound                       = GetList <Sound>(rules.ReadList("MoveSound"));
            DieSound                        = GetList <Sound>(rules.ReadList("DieSound"));
            DeploySound                     = TypesRepository.GetSound(rules.ReadString("DeploySound"));
            UndeploySound                   = TypesRepository.GetSound(rules.ReadString("UndeploySound"));
            ChronoInSound                   = TypesRepository.GetSound(rules.ReadString("ChronoInSound"));
            ChronoOutSound                  = TypesRepository.GetSound(rules.ReadString("ChronoOutSound"));
            VoiceHarvest                    = TypesRepository.GetSound(rules.ReadString("VoiceHarvest"));
            VoicePrimaryWeaponAttack        = TypesRepository.GetSound(rules.ReadString("VoicePrimaryWeaponAttack"));
            VoicePrimaryEliteWeaponAttack   = TypesRepository.GetSound(rules.ReadString("VoicePrimaryEliteWeaponAttack"));
            VoiceSecondaryWeaponAttack      = TypesRepository.GetSound(rules.ReadString("VoiceSecondaryWeaponAttack"));
            VoiceSecondaryEliteWeaponAttack = TypesRepository.GetSound(rules.ReadString("VoiceSecondaryEliteWeaponAttack"));
            VoiceDeploy                     = TypesRepository.GetSound(rules.ReadString("VoiceDeploy"));
            VoiceUndeploy                   = TypesRepository.GetSound(rules.ReadString("VoiceUndeploy"));
            EnterGrinderSound               = TypesRepository.GetSound(rules.ReadString("EnterGrinderSound"));
            LeaveGrinderSound               = TypesRepository.GetSound(rules.ReadString("LeaveGrinderSound"));
            EnterBioReactorSound            = TypesRepository.GetSound(rules.ReadString("EnterBioReactorSound"));
            LeaveBioReactorSound            = TypesRepository.GetSound(rules.ReadString("LeaveBioReactorSound"));
            ActivateSound                   = TypesRepository.GetSound(rules.ReadString("ActivateSound"));
            DeactivateSound                 = TypesRepository.GetSound(rules.ReadString("DeactivateSound"));
            MindClearedSound                = TypesRepository.GetSound(rules.ReadString("MindClearedSound"));

            Explosion                   = GetList <Animation>(rules.ReadList("Explosion"));
            DestroyAnim                 = GetList <Animation>(rules.ReadList("DestroyAnim"));
            NaturalParticleSystem       = Get <ParticleSystem>(rules.ReadString("NaturalParticleSystem"));
            RefinerySmokeParticleSystem = Get <ParticleSystem>(rules.ReadString("RefinerySmokeParticleSystem"));
            NaturalParticleLocation     = rules.ReadXYZ("NaturalPrules.cleLocation");
            DamageParticleSystems       = GetList <ParticleSystem>(rules.ReadList("DamageParticleSystems"));
            DestroyParticleSystems      = GetList <ParticleSystem>(rules.ReadList("DestroyParticleSystems"));
            DamageSmokeOffset           = rules.ReadXYZ("DamageSmokeOffset");
            DamSmkOffScrnRel            = rules.ReadBool("DamSmkOffScrnRel");
            DestroySmokeOffset          = rules.ReadXYZ("DestroySmokeOffset");
            RefinerySmokeOffsetOne      = rules.ReadXYZ("RefinerySmokeOffsetOne");
            RefinerySmokeOffsetTwo      = rules.ReadXYZ("RefinerySmokeOffsetTwo");
            RefinerySmokeOffsetThree    = rules.ReadXYZ("RefinerySmokeOffsetThree");
            RefinerySmokeOffsetFour     = rules.ReadXYZ("RefinerySmokeOffsetFour");
            Nominal               = rules.ReadBool("Nominal");
            DontScore             = rules.ReadBool("DontScore");
            DamageSelf            = rules.ReadBool("DamageSelf");
            Cloakable             = rules.ReadBool("Cloakable");
            GapGenerator          = rules.ReadBool("GapGenerator");
            GapRadiusInCells      = rules.ReadInt("GapRadiusInCells");
            SuperGapRadiusInCells = rules.ReadInt("SuperGapRadiusInCells");
            Teleporter            = rules.ReadBool("Teleporter");
            Sensors               = rules.ReadBool("Sensors");
            IsGattling            = rules.ReadBool("IsGattling");
            WeaponStages          = rules.ReadInt("WeaponStages");
            RateUp                     = rules.ReadInt("RateUp");
            RateDown                   = rules.ReadInt("RateDown");
            StageX                     = rules.ReadInt("StageX");
            EliteStageX                = rules.ReadInt("EliteStageX");
            PipScale                   = rules.ReadEnum("PipScale", PipScale.none);
            PipsDrawForAll             = rules.ReadBool("PipsDrawForAll");
            LeptonMindControlOffset    = rules.ReadInt("LeptonMindControlOffset", 70);
            PixelSelectionBracketDelta = rules.ReadBool("PixelSelectionBracketDelta");
            PipWrap                    = rules.ReadInt("PipWrap");
            Prerequisite               = GetList <Prerequisite>(rules.ReadList("Prerequisite"));
            PrerequisiteOverride       = GetList <Prerequisite>(rules.ReadList("PrerequisiteOverride"));
            Sight                      = rules.ReadInt("Sight");
            ReselectIfLimboed          = rules.ReadBool("ReselectIfLimboed");
            RejoinTeamIfLimboed        = rules.ReadBool("RejoinTeamIfLimboed");
            SensorsSight               = rules.ReadInt("SensorsSight");
            DetectDisguiseRange        = rules.ReadInt("DetectDisguiseRange");
            BombSight                  = rules.ReadInt("BombSight");
            LeadershipRating           = rules.ReadInt("LeadershipRating", 5);
            MindControlRingOffset      = rules.ReadInt("MindControlRingOffset", 140);
            BuildTimeMultiplier        = rules.ReadFloat("BuildTimeMultiplier", 1);
            RevealToAll                = rules.ReadBool("RevealToAll");
            Drainable                  = rules.ReadBool("Drainable");
            OpenTopped                 = rules.ReadBool("OpenTopped");
            ResourceGatherer           = rules.ReadBool("ResourceGatherer");
            ResourceDestination        = rules.ReadBool("ResourceDestination");
            CanDisguise                = rules.ReadBool("CanDisguise");
            PermaDisguise              = rules.ReadBool("PermaDisguise");
            DetectDisguise             = rules.ReadBool("DetectDisguise");
            DisguiseWhenStill          = rules.ReadBool("DisguiseWhenStill");
            CanPassiveAquire           = rules.ReadBool("CanPassiveAquire", true);
            CanRetaliate               = rules.ReadBool("CanRetaliate", true);
            CanApproachTarget          = rules.ReadBool("CanApproachTarget", true);
            CanRecalcApproachTarget    = rules.ReadBool("CanRecalcApproachTarget", true);
            RequiresStolenThirdTech    = rules.ReadBool("RequiresStolenThirdTech");
            RequiresStolenSovietTech   = rules.ReadBool("RequiresStolenSovietTech");
            RequiresStolenAlliedTech   = rules.ReadBool("RequiresStolenAlliedTech");
            RequiredHouses             = GetList <House>(rules.ReadList("RequiredHouses"));
            SecretHouses               = GetList <House>(rules.ReadList("SecretHouses"));
            ForbiddenHouses            = GetList <House>(rules.ReadList("ForbiddenHouses"));
            TechLevel                  = rules.ReadInt("TechLevel", 255);
            AirstrikeTeam              = rules.ReadInt("AirstrikeTeam");
            EliteAirstrikeTeam         = rules.ReadInt("EliteAirstrikeTeam");
            AirstrikeTeamType          = Get <AircraftType>(rules.ReadString("AirstrikeTeamType"));
            EliteAirstrikeTeamType     = Get <AircraftType>(rules.ReadString("EliteAirstrikeTeamType"));
            AirstrikeRechargeTime      = rules.ReadInt("AirstrikeRechargeTime");
            EliteAirstrikeRechargeTime = rules.ReadInt("EliteAirstrikeRechargeTime");
            Speed                      = rules.ReadInt("Speed");
            Cost                         = rules.ReadInt("Cost");
            Soylent                      = rules.ReadInt("Soylent");
            UnloadingClass               = Get <VehicleType>(rules.ReadString("UnloadingClass"));
            DeployingAnim                = Get <Animation>(rules.ReadString("DeployingAnim"));
            InitialAmmo                  = rules.ReadInt("InitialAmmo", -1);
            Ammo                         = rules.ReadInt("Ammo", -1);
            IFVMode                      = rules.ReadInt("IFVMode");
            AirRangeBonus                = rules.ReadFloat("AirRangeBonus");
            RadialFireSegments           = rules.ReadInt("RadialFireSegments");
            DeployFireWeapon             = rules.ReadInt("DeployFireWeapon", 1);
            DeployFire                   = rules.ReadBool("DeployFire");
            DeployToLand                 = rules.ReadBool("DeployToLand");
            MobileFire                   = rules.ReadBool("MobileFire", true);
            OpportunityFire              = rules.ReadBool("OpportunityFire");
            DistributedFire              = rules.ReadBool("DistributedFire");
            Reload                       = rules.ReadInt("Reload");
            EmptyReload                  = rules.ReadInt("EmptyReload", -1);
            ReloadIncrement              = rules.ReadInt("ReloadIncrement");
            DamageReducesReadiness       = rules.ReadBool("DamageReducesReadiness");
            ReadinessReductionMultiplier = rules.ReadFloat("ReadinessReductionMultiplier");
            BerserkFriendly              = rules.ReadBool("BerserkFriendly");
            SprayAttack                  = rules.ReadBool("SprayAttack");
            Pushy                        = rules.ReadBool("Pushy");
            Natural                      = rules.ReadBool("Natural");
            Unnatural                    = rules.ReadBool("Unnatural");
            CloseRange                   = rules.ReadBool("CloseRange");
            PreventAttackMove            = rules.ReadBool("PreventAttackMove");
            Points                       = rules.ReadInt("Points");
            ThreatPosed                  = rules.ReadInt("ThreatPosed");
            Owner                        = GetList <House>(rules.ReadList("Owner"));
            AIBasePlanningSide           = rules.ReadInt("AIBasePlanningSide", -1);
            Trainable                    = rules.ReadBool("Trainable", true);
            Crewed                       = rules.ReadBool("Crewed");
            Gunner                       = rules.ReadBool("Gunner");
            Naval                        = rules.ReadBool("Naval");
            Repairable                   = rules.ReadBool("Repairable", true);
            Invisible                    = rules.ReadBool("Invisible");
            RadarVisible                 = rules.ReadBool("RadarVisible");
            SelfHealing                  = rules.ReadBool("SelfHealing");
            NoAutoFire                   = rules.ReadBool("NoAutoFire");
            ROT           = rules.ReadInt("ROT");
            Passengers    = rules.ReadInt("Passengers");
            FireAngle     = rules.ReadInt("FireAngle", 8);
            DeployTime    = rules.ReadFloat("DeployTime");
            UndeployDelay = rules.ReadInt("UndeployDelay", -1);
            Disableable   = rules.ReadBool("Disableable", true);
            ToProtect     = rules.ReadBool("ToProtect");
            TiberiumHeal  = rules.ReadBool("TiberiumHeal");
            ImmuneToVeins = rules.ReadBool("ImmuneToVeins");
            AllowedToStartInMultiplayer = rules.ReadBool("AllowedToStrules.nMultiplayer", true);
            StupidHunt                     = rules.ReadBool("StupidHunt");
            TargetLaser                    = rules.ReadBool("TargetLaser");
            HunterSeeker                   = rules.ReadBool("HunterSeeker");
            Crusher                        = rules.ReadBool("Crusher");
            OmniCrusher                    = rules.ReadBool("OmniCrusher");
            OmniCrushResistant             = rules.ReadBool("OmniCrushResistant");
            AutoCrush                      = rules.ReadBool("AutoCrush");
            ImmuneToRadiation              = rules.ReadBool("ImmuneToRadiation");
            Underwater                     = rules.ReadBool("Underwater");
            BalloonHover                   = rules.ReadBool("BalloonHover");
            Slaved                         = rules.ReadBool("Slaved");
            Enslaves                       = TypesRepository.GetInfantryType(rules.ReadString("Enslaves"));
            SlaveRegenRate                 = rules.ReadInt("SlaveRegenRate");
            SlavesNumber                   = rules.ReadInt("SlavesNumber");
            SlaveReloadRate                = rules.ReadInt("SlaveReloadRate");
            OpenTransportWeapon            = rules.ReadInt("OpenTransportWeapon", -1);
            Spawned                        = rules.ReadInt("Spawned");
            Spawns                         = TypesRepository.GetAircraftType(rules.ReadString("Spawns"));
            SpawnRegenRate                 = rules.ReadInt("SpawnRegenRate");
            SpawnsNumber                   = rules.ReadInt("SpawnsNumber");
            SpawnReloadRate                = rules.ReadInt("SpawnReloadRate");
            MissileSpawn                   = rules.ReadBool("MissileSpawn");
            DefaultToGuardArea             = rules.ReadBool("DefaultToGuardArea");
            Warpable                       = rules.ReadBool("Warpable", true);
            Parasiteable                   = rules.ReadBool("Parasiteable");
            ImmuneToPsionics               = rules.ReadBool("ImmuneToPsionics");
            ImmuneToPsionicWeapons         = rules.ReadBool("ImmuneToPsionicWeapons");
            ConsideredAircraft             = rules.ReadBool("ConsideredAircraft");
            Bunkerable                     = rules.ReadBool("Bunkerable");
            Organic                        = rules.ReadBool("Organic");
            ImmuneToPoison                 = rules.ReadBool("ImmuneToPoison");
            SuppressionThreshold           = rules.ReadFloat("SuppressionThreshold");
            NoShadow                       = rules.ReadBool("NoShadow");
            JumpjetTurnRate                = rules.ReadInt("JumpjetTurnRate", 4);
            JumpjetSpeed                   = rules.ReadFloat("JumpjetSpeed", 14);
            JumpjetClimb                   = rules.ReadFloat("JumpjetClimb", 5);
            JumpjetCrash                   = rules.ReadFloat("JumpjetCrash", 5);
            JumpjetHeight                  = rules.ReadInt("JumpjetHeight", 500);
            JumpjetAccel                   = rules.ReadFloat("JumpjetAccel", 2);
            JumpjetWobbles                 = rules.ReadFloat("JumpjetWobbles", 0.15f);
            JumpjetNoWobbles               = rules.ReadBool("JumpjetNoWobbles");
            JumpjetDeviation               = rules.ReadInt("JumpjetDeviation", 40);
            JumpJet                        = rules.ReadBool("JumpJet");
            Crashable                      = rules.ReadBool("Crashable");
            AttackFriendlies               = rules.ReadBool("AttackFriendlies");
            AttackCursorOnFriendlies       = rules.ReadBool("AttackCursorOnFriendlies");
            TurretRecoil                   = rules.ReadBool("TurretRecoil");
            TurretTravel                   = rules.ReadInt("TurretTravel", 2);
            TurretCompressFrames           = rules.ReadInt("TurretCompressFrames", 1);
            TurretHoldFrames               = rules.ReadInt("TurretHoldFrames", 1);
            TurretRecoverFrames            = rules.ReadInt("TurretRecoverFrames", 1);
            BarrelTravel                   = rules.ReadInt("BarrelTravel", 2);
            BarrelCompressFrames           = rules.ReadInt("BarrelCompressFrames", 1);
            BarrelHoldFrames               = rules.ReadInt("BarrelHoldFrames", 1);
            BarrelRecoverFrames            = rules.ReadInt("BarrelRecoverFrames", 1);
            TiltsWhenCrushes               = rules.ReadBool("TiltsWhenCrushes", true);
            Accelerates                    = rules.ReadBool("Accelerates", true);
            ZFudgeCliff                    = rules.ReadInt("ZFudgeCliff", 10);
            ZFudgeColumn                   = rules.ReadInt("ZFudgeColumn", 5);
            ZFudgeTunnel                   = rules.ReadInt("ZFudgeTunnel", 10);
            ZFudgeBridge                   = rules.ReadInt("ZFudgeBridge");
            VeteranAbilities               = ReadFlags <Abilities>(rules.ReadList("VeteranAbilities"));
            EliteAbilities                 = ReadFlags <Abilities>(rules.ReadList("EliteAbilities"));
            MyEffectivenessCoefficient     = rules.ReadFloat("MyEffectivenessCoefficient");
            TargetEffectivenessCoefficient = rules.ReadFloat("TargetEffectivenessCoefficient");
            TargetSpecialThreatCoefficient = rules.ReadFloat("TargetSpecialThreatCoefficient");
            TargetStrengthCoefficient      = rules.ReadFloat("TargetStrengthCoefficient");
            TargetDistanceCoefficient      = rules.ReadFloat("TargetDistanceCoefficient");
            SpecialThreatValue             = rules.ReadFloat("SpecialThreatValue");
            IsSelectableCombatant          = rules.ReadBool("IsSelectableCombatant");
            MovementZone                   = rules.ReadEnum <MovementZone>("MovementZone", MovementZone.Normal);
        }