コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public static float GetO2Level(this IMyPlayer player)
 {
     return(MyVisualScriptLogicProvider.GetPlayersOxygenLevel(player.IdentityId));
 }