public Vector2 PowerOutput() { if (IsClosed()) { return(Vector2.Zero); } if (IsParentEntityGrid) { var grid = ParentEntity as IMyCubeGrid; if (grid == null) { return(Vector2.Zero); } return(EntityEvaluator.GridPowerOutput(LinkedGrids)); } else { var character = ParentEntity as IMyCharacter; if (character == null) { return(Vector2.Zero); } if (MyVisualScriptLogicProvider.GetPlayersEnergyLevel(Player.IdentityId) < 1) { return(Vector2.Zero); } return(new Vector2(0.009f, 0.009f)); } }
public bool IsPowered() { var character = ParentEntity as IMyCharacter; if (character == null) { return(false); } if (MyVisualScriptLogicProvider.GetPlayersEnergyLevel(Player.IdentityId) < 1) { return(false); } return(true); }
private bool DoesTargetNeedLifeSupport(IMyPlayer player) { float health = MyVisualScriptLogicProvider.GetPlayersHealth(player.IdentityId); float oxygen = MyVisualScriptLogicProvider.GetPlayersOxygenLevel(player.IdentityId); float hydrogen = MyVisualScriptLogicProvider.GetPlayersHydrogenLevel(player.IdentityId); float energy = MyVisualScriptLogicProvider.GetPlayersEnergyLevel(player.IdentityId); if (health < 100f || (oxygen < m_o2RefillLevel && m_hasOxygen) || (hydrogen < m_h2RefillLevel && m_hasHydrogen) || energy < m_energyRefillLevel) { return(true); } return(false); }
private bool RefillTarget(IMyPlayer player) { float oxygen = MyVisualScriptLogicProvider.GetPlayersOxygenLevel(player.IdentityId); float hydrogen = MyVisualScriptLogicProvider.GetPlayersHydrogenLevel(player.IdentityId); float energy = MyVisualScriptLogicProvider.GetPlayersEnergyLevel(player.IdentityId); bool oxygenRefilled = false; bool hydrogenRefilled = false; bool energyRefilled = false; Logging.Instance.WriteLine($"[Life Support] Tank status: Oxygen - {m_hasOxygen}, Hydrogen - {m_hasHydrogen}", 2); if (m_hasOxygen && m_o2RefillLevel > 0f) { if (oxygen + m_o2RefillPerTick <= 1f) { MyVisualScriptLogicProvider.SetPlayersOxygenLevel(player.IdentityId, oxygen + m_o2RefillPerTick); } else { MyVisualScriptLogicProvider.SetPlayersOxygenLevel(player.IdentityId, 1f); oxygenRefilled = true; } } else { oxygenRefilled = true; } if (m_hasHydrogen && m_h2RefillLevel > 0f) { if (hydrogen + m_h2RefillPerTick <= 1f) { MyVisualScriptLogicProvider.SetPlayersHydrogenLevel(player.IdentityId, hydrogen + m_h2RefillPerTick); } else { MyVisualScriptLogicProvider.SetPlayersHydrogenLevel(player.IdentityId, 1f); hydrogenRefilled = true; } } else { hydrogenRefilled = true; } if (m_energyRefillLevel > 0f) { if (energy + m_energyRefillPerTick <= 1f) { MyVisualScriptLogicProvider.SetPlayersEnergyLevel(player.IdentityId, energy + m_energyRefillPerTick); } else { MyVisualScriptLogicProvider.SetPlayersEnergyLevel(player.IdentityId, 1f); energyRefilled = true; } } else { energyRefilled = true; } if (oxygenRefilled && hydrogenRefilled && energyRefilled) { return(true); } return(false); }
public override void UpdateBeforeSimulation() { if (MyAPIGateway.Multiplayer.IsServer == false) { return; } if (scriptInit == false) { scriptInit = true; var definitionId = new MyDefinitionId(typeof(MyObjectBuilder_Component), "Nadium_Radioactive"); radioactive_nadium = (MyObjectBuilder_PhysicalObject)MyObjectBuilderSerializer.CreateNewObject(definitionId); definitionId = new MyDefinitionId(typeof(MyObjectBuilder_Ore), "Unknown_Element"); electromagnetic_element = (MyObjectBuilder_PhysicalObject)MyObjectBuilderSerializer.CreateNewObject(definitionId); definitionId = new MyDefinitionId(typeof(MyObjectBuilder_Component), "composite_plate"); composite_plate = (MyObjectBuilder_PhysicalObject)MyObjectBuilderSerializer.CreateNewObject(definitionId); } tickTimer++; if (tickTimer < 180) { return; } tickTimer = 0; var playerList = new List <IMyPlayer>(); MyAPIGateway.Players.GetPlayers(playerList); if (playerList.Count == 0) { return; } foreach (var player in playerList) { if (player.IsBot == true) { continue; } if (player.Character == null) { continue; } float health = MyVisualScriptLogicProvider.GetPlayersHealth(player.IdentityId); float energy = MyVisualScriptLogicProvider.GetPlayersEnergyLevel(player.IdentityId); if (health <= 0) { continue; } var playerInv = player.Character.GetInventory(); MyFixedPoint amount = playerInv.GetItemAmount(electromagnetic_element); MyFixedPoint composite_plate_amount = playerInv.GetItemAmount(composite_plate); if (playerInv.ContainItems(1, radioactive_nadium) == true) { MyVisualScriptLogicProvider.SetPlayersHealth(player.IdentityId, health - 5); health = MyVisualScriptLogicProvider.GetPlayersHealth(player.IdentityId); MyVisualScriptLogicProvider.ShowNotification(">>> WARNING RADIATION ALERT <<<\n\nToxic Nadium radiation detected\nIntensity: 2,5 Rad/s", 2000, "Red", player.IdentityId); //MyVisualScriptLogicProvider.ShowNotificationToAll("WARNING RADIATION ALERT\n\nDetected toxic substance\n\nTriNadiumTaloxid-438", 2000, "White"); } if (playerInv.ContainItems(1, composite_plate) == true) { playerInv.RemoveItemsOfType(composite_plate_amount, composite_plate); MyVisualScriptLogicProvider.SetPlayersHealth(player.IdentityId, health - 50); health = MyVisualScriptLogicProvider.GetPlayersHealth(player.IdentityId); MyVisualScriptLogicProvider.ShowNotification(">>> WARNING RADIATION ALERT <<<\n\nUnknown radiation detected\nIntensity: 50 Rad/s", 2000, "Red", player.IdentityId); } if (playerInv.ContainItems(1, electromagnetic_element) == true) { if (energy <= 0) { MyVisualScriptLogicProvider.SetPlayersEnergyLevel(player.IdentityId, 0); } else { MyVisualScriptLogicProvider.SetPlayersEnergyLevel(player.IdentityId, energy - .04f); playerInv.RemoveItemsOfType(amount, electromagnetic_element); energy = MyVisualScriptLogicProvider.GetPlayersEnergyLevel(player.IdentityId); MyVisualScriptLogicProvider.ShowNotification(">>> INTERNAL ENERGY LOSS DETECTED <<<", 2000, "White", player.IdentityId); } } } }
public static float GetEnergyLevel(this IMyPlayer player) { return(MyVisualScriptLogicProvider.GetPlayersEnergyLevel(player.IdentityId)); }