예제 #1
0
        public override void LoadArt(FileFormats.IniFile.IniSection art)
        {
            base.LoadArt(art);

            CanBeHidden        = art.ReadBool("CanBeHidden", true);
            UseBuffer          = art.ReadBool("UseBuffer");
            Palette            = art.ReadString("Palette");
            TurretOffset       = art.ReadXYZ("TurretOffset");
            RotCount           = art.ReadInt("RotCount");
            Remapable          = art.ReadBool("Remapable");
            Normalized         = art.ReadBool("Normalized");
            VisibleLoad        = art.ReadBool("VisibleLoad");
            ShadowIndex        = art.ReadInt("ShadowIndex");
            DisableVoxelCache  = art.ReadBool("DisableVoxelCache");
            DisableShadowCache = art.ReadBool("DisableShadowCache");
            Cameo                       = art.ReadString("Cameo");
            AltCameo                    = art.ReadString("AltCameo");
            WeaponXFLH                  = art.ReadXYZ("WeaponXFLH");
            WeaponXBarrelLength         = art.ReadInt("WeaponXBarrelLength");
            WeaponXBarrelThickness      = art.ReadInt("WeaponXBarrelThickness");
            WeaponXTurretLocked         = art.ReadBool("WeaponXTurretLocked");
            EliteWeaponXFLH             = art.ReadXYZ("EliteWeaponXFLH");
            EliteWeaponXBarrelLength    = art.ReadInt("EliteWeaponXBarrelLength");
            EliteWeaponXBarrelThickness = art.ReadInt("EliteWeaponXBarrelThickness");
            EliteWeaponXTurretLocked    = art.ReadBool("EliteWeaponXTurretLocked");
            PrimaryFireFLH              = art.ReadXYZ("PrimaryFireFLH");
            PBarrelLength               = art.ReadInt("PBarrelLength");
            PBarrelThickness            = art.ReadInt("PBarrelThickness");
            SecondaryFireFLH            = art.ReadXYZ("SecondaryFireFLH");
            SBarrelLength               = art.ReadInt("SBarrelLength");
            SBarrelThickness            = art.ReadInt("SBarrelThickness");
            ElitePrimaryFireFLH         = art.ReadXYZ("ElitePrimaryFireFLH");
            ElitePBarrelLength          = art.ReadInt("ElitePBarrelLength");
            ElitePBarrelThickness       = art.ReadInt("ElitePBarrelThickness");
            EliteSecondaryFireFLH       = art.ReadXYZ("EliteSecondaryFireFLH");
            EliteSBarrelLength          = art.ReadInt("EliteSBarrelLength");
            EliteSBarrelThickness       = art.ReadInt("EliteSBarrelThickness");
            AlternateFLHX               = art.ReadXYZ("AlternateFLHX");
            TurretNotExportedOnGround   = art.ReadBool("TurretNotExportedOnGround");
            SecondSpawnOffset           = art.ReadXYZ("SecondSpawnOffset");
        }
예제 #2
0
 public override void LoadRules(FileFormats.IniFile.IniSection rules)
 {
     base.LoadRules(rules);
     DeployToFire            = rules.ReadBool("DeployToFire");
     IsSimpleDeployer        = rules.ReadBool("IsSimpleDeployer");
     Harvester               = rules.ReadBool("Harvester");
     Weeder                  = rules.ReadBool("Weeder");
     SpeedType               = rules.ReadEnum("SpeedType", SpeedType.Clear);
     IsTilter                = rules.ReadBool("IsTilter");
     CarriesCrate            = rules.ReadBool("CarriesCrate");
     TooBigToFitUnderBridge  = rules.ReadBool("TooBigToFitUnderBridge");
     HalfDamageSmokeLocation = rules.ReadXYZ("HalfDamageSmokeLocation");
     UseTurretShadow         = rules.ReadBool("UseTurretShadow");
     Passive                 = rules.ReadBool("Passive");
     MovementRestrictedTo    = rules.ReadEnum("MovementRestrictedTo", LandType.Clear);
     CanBeach                = rules.ReadBool("CanBeach");
     SmallVisceroid          = rules.ReadBool("SmallVisceroid");
     LargeVisceroid          = rules.ReadBool("LargeVisceroid");
     NonVehicle              = rules.ReadBool("NonVehicle");
     BurstDelayX             = rules.ReadInt("BurstDelayX", -1);
     AltImage                = rules.ReadString("AltImage");
     CrateGoodie             = rules.ReadBool("CrateGoodie");
 }
예제 #3
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);
        }