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 static float GetH2Level(this IMyPlayer player) { return(MyVisualScriptLogicProvider.GetPlayersHydrogenLevel(player.IdentityId)); }