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); }