private void SpawnBeam(IGameObject target, bool absorbTarget) { this.ClearBeam(); if (this.m_BeamWeapon == null || target == null) { return; } Turret turretWithWeaponTrait = this.m_VonNeumannChild.GetTurretWithWeaponTrait(WeaponEnums.WeaponTraits.Disintegrating); int num = turretWithWeaponTrait == null ? this.m_VonNeumannChild.ObjectID : turretWithWeaponTrait.ObjectID; int val1 = this.m_Game.AssetDatabase.GlobalVonNeumannData.ChildRUCarryCap; if (target is StellarBody) { PlanetInfo planetInfo = this.m_Game.GameDatabase.GetPlanetInfo((target as StellarBody).Parameters.OrbitalID); if (planetInfo != null) { val1 = Math.Min(val1, planetInfo.Resources); } } this.m_Beam = this.m_Game.AddObject <VonNeumannDisintegrationBeam>(new List <object>() { (object)target.ObjectID, (object)this.m_BeamWeapon.GameObject.ObjectID, (object)this.m_VonNeumannChild.ObjectID, (object)this.m_VonNeumannChild.Player.ObjectID, (object)num, (object)absorbTarget, (object)val1, (object)this.m_Game.AssetDatabase.GlobalVonNeumannData.RUTransferRateShip, (object)this.m_Game.AssetDatabase.GlobalVonNeumannData.RUTransferRatePlanet, (object)this.m_Game.AssetDatabase.GlobalVonNeumannData.ChildIntegrationTime }.ToArray()); }
private void ClearBeam() { if (this.m_Beam == null) { return; } this.m_Game.ReleaseObject((IGameObject)this.m_Beam); this.m_Beam = (VonNeumannDisintegrationBeam)null; }
public override void Initialize() { this.m_Target = (IGameObject)null; this.m_VonNeumannMom = (VonNeumannMomControl)null; this.m_State = VonNeumannChildStates.SEEK; this.m_Vanished = false; this.m_RUStore = 0; this.m_Beam = (VonNeumannDisintegrationBeam)null; this.m_ApproachRange = 1000f; this.m_BeamWeapon = this.m_Game.AssetDatabase.Weapons.FirstOrDefault <LogicalWeapon>((Func <LogicalWeapon, bool>)(x => ((IEnumerable <WeaponEnums.WeaponTraits>)x.Traits).Any <WeaponEnums.WeaponTraits>((Func <WeaponEnums.WeaponTraits, bool>)(k => k == WeaponEnums.WeaponTraits.Disintegrating)))); if (this.m_BeamWeapon == null) { return; } this.m_BeamWeapon.AddGameObjectReference(); }