예제 #1
0
 public static void SetupObjects()
 {
     SaveGame.m_Objects.Clear();
     SaveGame.m_Objects.Add(MainLevel.Instance);
     SaveGame.m_Objects.Add(Scenario.Get());
     SaveGame.m_Objects.Add(AIManager.Get());
     SaveGame.m_Objects.Add(TriggersManager.Get());
     SaveGame.m_Objects.Add(ItemsManager.Get());
     SaveGame.m_Objects.Add(SensorManager.Get());
     SaveGame.m_Objects.Add(ConstructionGhostManager.Get());
     SaveGame.m_Objects.Add(StaticObjectsManager.Get());
     SaveGame.m_Objects.Add(Player.Get());
     SaveGame.m_Objects.Add(PlayerConditionModule.Get());
     SaveGame.m_Objects.Add(PlayerInjuryModule.Get());
     SaveGame.m_Objects.Add(PlayerDiseasesModule.Get());
     SaveGame.m_Objects.Add(StatsManager.Get());
     SaveGame.m_Objects.Add(HintsManager.Get());
     SaveGame.m_Objects.Add(ObjectivesManager.Get());
     SaveGame.m_Objects.Add(HUDObjectives.Get());
     SaveGame.m_Objects.Add(MenuNotepad.Get());
     SaveGame.m_Objects.Add(MapTab.Get());
     SaveGame.m_Objects.Add(Music.Get());
     SaveGame.m_Objects.Add(RainManager.Get());
     SaveGame.m_Objects.Add(BalanceSystem.Get());
 }
예제 #2
0
    private void UpdateFever()
    {
        if (Time.time - this.m_LastFeverSanityLossTime < 1f)
        {
            return;
        }
        int     num     = 2;
        Disease disease = PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Fever);

        if (disease.IsActive() && this.m_FeverSanityLoss < this.m_MaxFeverSanityLoss)
        {
            num = Mathf.Clamp(this.m_Sanity - num, 0, 100) - this.m_Sanity;
            this.m_FeverSanityLoss -= num;
            this.m_Sanity          += num;
            this.OnChangeSanity((float)num, string.Empty, false);
        }
        else if (!disease.IsActive() && this.m_FeverSanityLoss > 0)
        {
            num = Mathf.Clamp(this.m_Sanity + num, 0, 100) - this.m_Sanity;
            this.m_FeverSanityLoss -= num;
            this.m_Sanity          += num;
            this.OnChangeSanity((float)num, string.Empty, false);
        }
        this.m_LastFeverSanityLossTime = Time.time;
    }
예제 #3
0
 public static void SetupObjects()
 {
     SaveGame.m_Objects.Clear();
     SaveGame.m_Objects.Add(DifficultySettings.Get());
     SaveGame.m_Objects.Add(DialogsManager.Get());
     SaveGame.m_Objects.Add(AIManager.Get());
     SaveGame.m_Objects.Add(EnemyAISpawnManager.Get());
     SaveGame.m_Objects.Add(TriggersManager.Get());
     SaveGame.m_Objects.Add(ItemsManager.Get());
     SaveGame.m_Objects.Add(SensorManager.Get());
     SaveGame.m_Objects.Add(ConstructionGhostManager.Get());
     SaveGame.m_Objects.Add(StaticObjectsManager.Get());
     SaveGame.m_Objects.Add(Player.Get());
     SaveGame.m_Objects.Add(PlayerConditionModule.Get());
     SaveGame.m_Objects.Add(PlayerInjuryModule.Get());
     SaveGame.m_Objects.Add(PlayerDiseasesModule.Get());
     SaveGame.m_Objects.Add(StatsManager.Get());
     SaveGame.m_Objects.Add(HintsManager.Get());
     SaveGame.m_Objects.Add(ObjectivesManager.Get());
     SaveGame.m_Objects.Add(StoryObjectivesManager.Get());
     SaveGame.m_Objects.Add(HUDObjectives.Get());
     SaveGame.m_Objects.Add(MenuNotepad.Get());
     SaveGame.m_Objects.Add(MapTab.Get());
     SaveGame.m_Objects.Add(Music.Get());
     SaveGame.m_Objects.Add(RainManager.Get());
     SaveGame.m_Objects.Add(SleepController.Get());
     SaveGame.m_Objects.Add(MainLevel.Instance);
     SaveGame.m_Objects.Add(ScenarioManager.Get());
     SaveGame.m_Objects.Add(InventoryBackpack.Get());
     SaveGame.m_Objects.Add(ReplicatedSessionState.Get());
 }
예제 #4
0
    private void OnEat(ConsumableInfo info)
    {
        if (info.m_ConsumeEffect != ConsumeEffect.None && UnityEngine.Random.Range(0f, 1f) <= info.m_ConsumeEffectChance && info.m_ConsumeEffectLevel >= 0)
        {
            PlayerDiseasesModule.Get().RequestDisease(info.m_ConsumeEffect, info.m_ConsumeEffectDelay, info.m_ConsumeEffectLevel);
        }
        PlayerDiseasesModule.Get().OnEat(info);
        PlayerInjuryModule.Get().OnEat(info);
        if (info.m_Disgusting)
        {
            PlayerAudioModule.Get().PlayEatingDisgustingSound(1f, false);
        }
        else
        {
            PlayerAudioModule.Get().PlayEatingSound(1f, false);
        }
        EventsManager.OnEvent(Enums.Event.Eat, 1, (int)info.m_ID);
        PlayerSanityModule.Get().OnEat(info.m_SanityChange);
        Localization localization = GreenHellGame.Instance.GetLocalization();
        HUDMessages  hudmessages  = (HUDMessages)HUDManager.Get().GetHUD(typeof(HUDMessages));
        string       text         = string.Empty;

        if (info.m_ConsumeEffect == ConsumeEffect.FoodPoisoning)
        {
            text = info.m_ConsumeEffectLevel.ToString("F0") + " " + localization.Get("HUD_FoodPoisoning");
            hudmessages.AddMessage(text, null, HUDMessageIcon.FoodPoisoning, string.Empty);
        }
        if (info.m_AddEnergy > 0f)
        {
            text = info.m_AddEnergy.ToString("F0") + " " + localization.Get("HUD_Energy");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Energy, string.Empty);
        }
        if (info.m_Water > 0f)
        {
            text = info.m_Water.ToString("F0") + " " + localization.Get("HUD_Hydration");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Hydration, string.Empty);
        }
        if (info.m_Fat > 0f)
        {
            text = info.m_Fat.ToString("F0") + " " + localization.Get("HUD_Nutrition_Fat");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Fat, string.Empty);
        }
        if (info.m_Proteins > 0f)
        {
            text = info.m_Proteins.ToString("F0") + " " + localization.Get("HUD_Nutrition_Protein");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Proteins, string.Empty);
        }
        if (info.m_Carbohydrates > 0f)
        {
            text = info.m_Carbohydrates.ToString("F0") + " " + localization.Get("HUD_Nutrition_Carbo");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Carbo, string.Empty);
        }
        text = localization.Get(TriggerAction.GetTextPerfect(TriggerAction.TYPE.Eat)) + ": " + info.GetNameToDisplayLocalized();
        hudmessages.AddMessage(text, null, HUDMessageIcon.Item, info.m_IconName);
        ItemsManager.Get().OnEat(info);
        if (info.m_ID == ItemID.coca_leafs)
        {
            PlayerCocaineModule.Get().OnEatCocaine();
        }
    }
예제 #5
0
 private void UpdateDebug()
 {
     if (!GreenHellGame.DEBUG)
     {
         return;
     }
     if (this.m_DebugSpawnID != ItemID.None && Input.GetKeyDown(KeyCode.I))
     {
         this.CreateItem(this.m_DebugSpawnID, true, Player.Get().transform.position + Player.Get().transform.forward * 4f, Player.Get().transform.rotation);
     }
     if (Input.GetKey(KeyCode.U) && Input.GetKey(KeyCode.LeftControl))
     {
         this.UnlockAllItemsInNotepad();
         PlayerDiseasesModule.Get().UnlockAllDiseasesInNotepad();
         PlayerDiseasesModule.Get().UnlockAllDiseasesTratmentInNotepad();
         PlayerDiseasesModule.Get().UnlockAllSymptomsInNotepad();
         PlayerDiseasesModule.Get().UnlockAllSymptomTreatmentsInNotepad();
         PlayerInjuryModule.Get().UnlockAllInjuryState();
         PlayerInjuryModule.Get().UnlockAllInjuryStateTreatment();
         PlayerInjuryModule.Get().UnlockAllKnownInjuries();
         this.UnloackAllConsumed();
         this.UnlockAllCrafted();
         this.UnlockAllBoiledData();
         this.UnlockAllCollected();
         this.UnlockAllItemInfos();
     }
 }
예제 #6
0
    public static void LoadPlayer(string save_name)
    {
        if (SaveGame.m_State != SaveGame.State.None)
        {
            Debug.LogWarning("Can't load player, state = " + SaveGame.m_State.ToString());
            return;
        }
        if (!File.Exists(Application.persistentDataPath + "/" + save_name))
        {
            return;
        }
        Debug.Log("LOAD_PLAYER - " + save_name);
        SaveGame.m_State = SaveGame.State.Load;
        SaveGame.SetupObjects();
        SaveGame.m_IVals.Clear();
        SaveGame.m_SVals.Clear();
        SaveGame.m_FVals.Clear();
        SaveGame.m_BVals.Clear();
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        FileStream      fileStream      = File.Open(Application.persistentDataPath + "/" + save_name, FileMode.Open);
        GameVersion     lhs             = new GameVersion((GameVersion)binaryFormatter.Deserialize(fileStream));
        GameMode        gameMode        = (GameMode)binaryFormatter.Deserialize(fileStream);
        long            num             = (long)binaryFormatter.Deserialize(fileStream);
        int             num2            = (int)binaryFormatter.Deserialize(fileStream);
        int             num3            = (int)binaryFormatter.Deserialize(fileStream);

        if (lhs >= GreenHellGame.s_GameVersionEarlyAccessUpdate8)
        {
            bool flag = (bool)binaryFormatter.Deserialize(fileStream);
        }
        if (lhs >= GreenHellGame.s_GameVersionEarlyAccessUpdate12 && lhs < GreenHellGame.s_GameVersionEarlyAccessUpdate13 && (bool)binaryFormatter.Deserialize(fileStream))
        {
            DifficultySettings.SetActivePresetType(DifficultySettings.PresetType.PermaDeath);
        }
        if (lhs >= GreenHellGame.s_GameVersionEarlyAccessUpdate13)
        {
            bool flag2 = (bool)binaryFormatter.Deserialize(fileStream);
        }
        if (GreenHellGame.s_GameVersion >= GreenHellGame.s_GameVersionMasterShelters1_3)
        {
            BinaryFormatter binaryFormatter2    = binaryFormatter;
            Stream          serializationStream = fileStream;
            P2PSession      instance            = P2PSession.Instance;
            binaryFormatter2.Serialize(serializationStream, ((instance != null) ? instance.GetSessionId() : null) ?? "");
        }
        SaveGame.m_IVals = (Dictionary <string, int>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_SVals = (Dictionary <string, string>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_FVals = (Dictionary <string, float>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_BVals = (Dictionary <string, bool>)binaryFormatter.Deserialize(fileStream);
        fileStream.Close();
        Player.Get().Load();
        PlayerInjuryModule.Get().Load();
        PlayerConditionModule.Get().Load();
        PlayerDiseasesModule.Get().Load();
        ItemsManager.Get().Load();
        MainLevel.Instance.Load();
        GreenHellGame.Instance.m_LoadGameState = LoadGameState.FullLoadCompleted;
        SaveGame.m_State = SaveGame.State.None;
    }
예제 #7
0
 public override void Check()
 {
     base.Check();
     this.UpdateLevel();
     if (this.m_Level >= 1)
     {
         PlayerDiseasesModule.Get().RequestDisease(ConsumeEffect.DirtSickness, 0f, 0);
     }
 }
예제 #8
0
    public void CheckInfectionFromDirt()
    {
        float   num     = UnityEngine.Random.Range(0f, 1f);
        Disease disease = PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.DirtSickness);

        if (num < (float)disease.m_Level * 0.2f)
        {
            this.m_HealingResultInjuryState = InjuryState.Infected;
        }
    }
예제 #9
0
    public void OnInsomniaHealButton()
    {
        Insomnia insomnia = (Insomnia)PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Insomnia);

        if (insomnia != null)
        {
            insomnia.m_InsomniaLevel = 0f;
            SleepController.Get().m_LastWakeUpTimeLogical = MainLevel.Instance.GetCurrentTimeMinutes();
        }
    }
예제 #10
0
 public override bool ShouldShow()
 {
     for (int i = 0; i < this.m_DiseaseType.Count; i++)
     {
         if (PlayerDiseasesModule.Get().IsDiseaseUnlocked(this.m_DiseaseType[i]))
         {
             return(true);
         }
     }
     return(false);
 }
예제 #11
0
 public void Activate(DiseaseRequest request)
 {
     if (!this.m_Active)
     {
         this.m_Active    = true;
         this.m_StartTime = MainLevel.Instance.GetCurrentTimeMinutes();
         this.m_Level     = request.m_Level;
         this.ActivateSymptoms();
         PlayerSanityModule.Get().OnEvent(PlayerSanityModule.SanityEventType.Disease, 1);
         PlayerDiseasesModule.Get().UnlockKnownDisease(this.m_Type);
         this.m_Activated = true;
     }
 }
예제 #12
0
    public void OnInsomniaButton()
    {
        Insomnia insomnia = (Insomnia)PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Insomnia);

        if (insomnia != null)
        {
            if (insomnia.m_InsomniaLevel <= 0f)
            {
                SleepController.Get().m_LastWakeUpTimeLogical -= insomnia.m_NoSleepTmeToActivate;
                return;
            }
            SleepController.Get().m_LastWakeUpTimeLogical -= insomnia.m_NoSleepTimeToIncreaseLevel;
        }
    }
예제 #13
0
    private void OnDrink(LiquidData data, float hydration_amount, float fat_amount, float proteins_amount, float carbo_amount, float energy_amount)
    {
        if (data.m_ConsumeEffect != ConsumeEffect.None && UnityEngine.Random.Range(0f, 1f) <= data.m_ConsumeEffectChance && data.m_ConsumeEffectLevel >= 0)
        {
            PlayerDiseasesModule.Get().RequestDisease(data.m_ConsumeEffect, data.m_ConsumeEffectDelay, data.m_ConsumeEffectLevel);
        }
        PlayerDiseasesModule.Get().OnDrink(data.m_LiquidType, hydration_amount);
        PlayerInjuryModule.Get().OnDrink(data);
        if (data.m_Disgusting)
        {
            PlayerAudioModule.Get().PlayDrinkingDisgustingSound(1f, false);
        }
        else
        {
            PlayerAudioModule.Get().PlayDrinkingSound(1f, false);
        }
        Localization localization = GreenHellGame.Instance.GetLocalization();
        HUDMessages  hudmessages  = (HUDMessages)HUDManager.Get().GetHUD(typeof(HUDMessages));
        string       text         = string.Empty;

        if (energy_amount > 0f)
        {
            text = energy_amount.ToString("F0") + " " + localization.Get("HUD_Energy");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Energy, string.Empty);
        }
        if (hydration_amount > 0f)
        {
            text = hydration_amount.ToString("F0") + " " + localization.Get("HUD_Hydration");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Hydration, string.Empty);
        }
        if (fat_amount > 0f)
        {
            text = fat_amount.ToString("F0") + " " + localization.Get("HUD_Nutrition_Fat");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Fat, string.Empty);
        }
        if (proteins_amount > 0f)
        {
            text = proteins_amount.ToString("F0") + " " + localization.Get("HUD_Nutrition_Protein");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Proteins, string.Empty);
        }
        if (carbo_amount > 0f)
        {
            text = carbo_amount.ToString("F0") + " " + localization.Get("HUD_Nutrition_Carbo");
            hudmessages.AddMessage(text, null, HUDMessageIcon.Carbo, string.Empty);
        }
        text = localization.Get(TriggerAction.GetTextPerfect(TriggerAction.TYPE.Drink)) + ": " + GreenHellGame.Instance.GetLocalization().Get(data.m_LiquidType.ToString());
        hudmessages.AddMessage(text, null, HUDMessageIcon.None, string.Empty);
        EventsManager.OnEvent(Enums.Event.Drink, 1, (int)data.m_LiquidType);
    }
예제 #14
0
    public void OnInsomniaDecreaseButton()
    {
        Insomnia insomnia = (Insomnia)PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Insomnia);

        if (insomnia != null)
        {
            if (insomnia.m_InsomniaLevel < 1f)
            {
                this.OnInsomniaHealButton();
                return;
            }
            SleepController.Get().m_LastWakeUpTimeLogical += insomnia.m_NoSleepTimeToIncreaseLevel;
            SleepController.Get().m_LastWakeUpTimeLogical  = System.Math.Min(MainLevel.Instance.GetCurrentTimeMinutes(), SleepController.Get().m_LastWakeUpTimeLogical);
        }
    }
예제 #15
0
 public override bool ShouldShow()
 {
     for (int i = 0; i < this.m_DiseaseTreatmentType.Count; i++)
     {
         if (this.m_DiseaseTreatmentType[i] == NotepadKnownDiseaseTreatment.None)
         {
             return(true);
         }
         if (PlayerDiseasesModule.Get().IsDiseaseTreatmentUnlocked(this.m_DiseaseTreatmentType[i]))
         {
             return(true);
         }
     }
     return(false);
 }
예제 #16
0
 private void ActivateSymptoms()
 {
     for (int i = 0; i < this.m_Symptoms.Count; i++)
     {
         global::DiseaseSymptom symptom = PlayerDiseasesModule.Get().GetSymptom(this.m_Symptoms[i]);
         if (symptom == null)
         {
             DebugUtils.Assert(DebugUtils.AssertType.Info);
         }
         else if (!symptom.IsActive())
         {
             symptom.Activate();
         }
     }
 }
예제 #17
0
    private void UpdateHydration()
    {
        if (this.m_Player.m_DreamActive)
        {
            return;
        }
        FPPController fppcontroller = this.m_Player.m_FPPController;

        if (!fppcontroller)
        {
            return;
        }
        float num  = 0f;
        float num2 = 1f;

        if (!Cheats.m_GodMode || this.m_LossParametersBlocked)
        {
            float deltaTime = Time.deltaTime;
            if (fppcontroller.IsRunning())
            {
                num2 *= this.m_HydrationConsumptionRunMul;
            }
            num = this.m_HydrationConsumptionPerSecond * deltaTime * num2;
            if (PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Fever).IsActive())
            {
                num += this.m_HydrationConsumptionDuringFeverPerSecond * deltaTime;
            }
            for (int i = 0; i < this.m_InjuryModule.m_Injuries.Count; i++)
            {
                Injury injury = this.m_InjuryModule.m_Injuries[i];
                if (injury.m_Type == InjuryType.VenomBite || injury.m_Type == InjuryType.SnakeBite)
                {
                    num += Injury.s_PoisonedWoundHydrationDecPerSec * deltaTime;
                }
            }
        }
        GameDifficulty gameDifficulty = GreenHellGame.Instance.m_GameDifficulty;

        if (gameDifficulty == GameDifficulty.Normal)
        {
            num *= GreenHellGame.s_NormalModeLossMul;
        }
        else if (gameDifficulty == GameDifficulty.Easy)
        {
            num *= GreenHellGame.s_EasyModeLossMul;
        }
        this.DecreaseHydration(num);
    }
예제 #18
0
 public static void SetupObjectsCoop()
 {
     SaveGame.m_Objects.Clear();
     SaveGame.m_Objects.Add(ItemsManager.Get());
     SaveGame.m_Objects.Add(Player.Get());
     SaveGame.m_Objects.Add(PlayerConditionModule.Get());
     SaveGame.m_Objects.Add(PlayerInjuryModule.Get());
     SaveGame.m_Objects.Add(PlayerDiseasesModule.Get());
     SaveGame.m_Objects.Add(StatsManager.Get());
     SaveGame.m_Objects.Add(HintsManager.Get());
     SaveGame.m_Objects.Add(MenuNotepad.Get());
     SaveGame.m_Objects.Add(MapTab.Get());
     SaveGame.m_Objects.Add(SleepController.Get());
     SaveGame.m_Objects.Add(DifficultySettings.Get());
     SaveGame.m_Objects.Add(InventoryBackpack.Get());
 }
예제 #19
0
    private void UpdatePoisonPP()
    {
        float num = 0f;
        PlayerDiseasesModule playerDiseasesModule = PlayerDiseasesModule.Get();
        int num2 = (!playerDiseasesModule.GetDisease(ConsumeEffect.FoodPoisoning).IsActive()) ? 0 : playerDiseasesModule.GetDisease(ConsumeEffect.FoodPoisoning).m_Level;

        if ((float)num2 > 0f)
        {
            num = CJTools.Math.GetProportionalClamp(0f, 1f, (float)num2, 0f, this.m_PoisonLevelToMaxEffect);
        }
        float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Poison);

        if (weight != num)
        {
            PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Poison, weight + (num - weight) * Time.deltaTime * 2f);
        }
    }
예제 #20
0
 public void OnDebug()
 {
     Player.Get().UnlockMap();
     Player.Get().UnlockNotepad();
     Player.Get().UnlockWatch();
     ItemsManager.Get().UnlockAllItemsInNotepad();
     PlayerDiseasesModule.Get().UnlockAllDiseasesInNotepad();
     PlayerDiseasesModule.Get().UnlockAllDiseasesTratmentInNotepad();
     PlayerDiseasesModule.Get().UnlockAllSymptomsInNotepad();
     PlayerDiseasesModule.Get().UnlockAllSymptomTreatmentsInNotepad();
     PlayerInjuryModule.Get().UnlockAllInjuryState();
     PlayerInjuryModule.Get().UnlockAllInjuryStateTreatment();
     MainLevel.Instance.m_GameMode     = GameMode.Debug;
     GreenHellGame.Instance.m_GameMode = GameMode.None;
     MainLevel.Instance.Initialize();
     MenuInGameManager.Get().HideMenu();
     this.StartRainforestAmbienceMultisample();
 }
예제 #21
0
    public void Infect()
    {
        this.SetState(InjuryState.Infected);
        this.SetWoundMaterial(this.m_Slot.m_Wound.gameObject);
        this.m_HealingStartTime = float.MaxValue;
        this.UpdateHealthDecreasePerSec();
        this.RemoveBandage();
        Disease disease = PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Fever);

        if (disease != null && disease.IsActive())
        {
            disease.IncreaseLevel(1);
        }
        else
        {
            PlayerDiseasesModule.Get().RequestDisease(ConsumeEffect.Fever, 0f, 1);
        }
        PlayerInjuryModule.Get().UnlockKnownInjuryState(InjuryState.Infected);
    }
예제 #22
0
    public override void OnEat(ConsumableInfo info)
    {
        base.OnEat(info);
        float   num     = UnityEngine.Random.Range(0f, 1f);
        Disease disease = PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.DirtSickness);

        if (num < (float)disease.m_Level * 0.1f)
        {
            ParasiteSickness parasiteSickness = (ParasiteSickness)PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.ParasiteSickness);
            if (parasiteSickness.IsActive())
            {
                parasiteSickness.IncreaseLevel(1);
            }
            else
            {
                PlayerDiseasesModule.Get().RequestDisease(ConsumeEffect.ParasiteSickness, 0f, 1);
            }
            HUDMessages.Get().AddMessage("+1 " + GreenHellGame.Instance.GetLocalization().Get("HUDMessage_ParasiteFromDirt", true), new Color?(Color.white), HUDMessageIcon.ParasiteSickness, string.Empty, this.m_IconIndexesTemp);
        }
    }
예제 #23
0
    public override void Check()
    {
        float currentTimeMinutes = MainLevel.Instance.GetCurrentTimeMinutes();

        if (SleepController.Get().m_LastWakeUpTime <= 0f)
        {
            SleepController.Get().m_LastWakeUpTime = currentTimeMinutes;
        }
        if (SleepController.Get().m_LastWakeUpTimeLogical <= 0f)
        {
            SleepController.Get().m_LastWakeUpTimeLogical = currentTimeMinutes;
        }
        if (SleepController.Get().IsActive() && HUDSleeping.Get().GetState() == HUDSleepingState.Progress && this.m_InsomniaLevel == 0f)
        {
            SleepController.Get().m_LastWakeUpTimeLogical = MainLevel.Instance.GetCurrentTimeMinutes();
        }
        if (currentTimeMinutes > SleepController.Get().m_LastWakeUpTimeLogical + this.m_NoSleepTmeToActivate)
        {
            PlayerDiseasesModule.Get().RequestDisease(ConsumeEffect.Insomnia, 0f, 1);
        }
    }
예제 #24
0
    public static void LoadPlayer(string save_name)
    {
        if (SaveGame.m_State != SaveGame.State.None)
        {
            Debug.LogWarning("Can't load player, state = " + SaveGame.m_State.ToString());
            return;
        }
        if (!File.Exists(Application.persistentDataPath + "/" + save_name))
        {
            return;
        }
        SaveGame.m_State = SaveGame.State.Load;
        SaveGame.SetupObjects();
        SaveGame.m_IVals.Clear();
        SaveGame.m_SVals.Clear();
        SaveGame.m_FVals.Clear();
        SaveGame.m_BVals.Clear();
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        FileStream      fileStream      = File.Open(Application.persistentDataPath + "/" + save_name, FileMode.Open);
        GameVersion     gameVersion     = new GameVersion((GameVersion)binaryFormatter.Deserialize(fileStream));
        GameMode        gameMode        = (GameMode)binaryFormatter.Deserialize(fileStream);
        long            num             = (long)binaryFormatter.Deserialize(fileStream);
        int             num2            = (int)binaryFormatter.Deserialize(fileStream);
        int             num3            = (int)binaryFormatter.Deserialize(fileStream);

        SaveGame.m_IVals = (Dictionary <string, int>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_SVals = (Dictionary <string, string>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_FVals = (Dictionary <string, float>)binaryFormatter.Deserialize(fileStream);
        SaveGame.m_BVals = (Dictionary <string, bool>)binaryFormatter.Deserialize(fileStream);
        fileStream.Close();
        Player.Get().Load();
        PlayerInjuryModule.Get().Load();
        PlayerConditionModule.Get().Load();
        PlayerDiseasesModule.Get().Load();
        ItemsManager.Get().Load();
        MainLevel.Instance.Load();
        GreenHellGame.Instance.m_LoadGameState = LoadGameState.FullLoadCompleted;
        SaveGame.m_State = SaveGame.State.None;
    }
예제 #25
0
    public override void OnTakeDamage(DamageInfo info)
    {
        base.OnTakeDamage(info);
        if (info.m_Blocked)
        {
            return;
        }
        float num = info.m_Damage;

        info.m_InjuryPlace = this.GetInjuryPlaceFromHit(info);
        if (!info.m_FromInjury)
        {
            Limb limb = EnumTools.ConvertInjuryPlaceToLimb(info.m_InjuryPlace);
            if (limb == Limb.None)
            {
                limb = Limb.LArm;
            }
            if (info.m_DamageType != DamageType.Fall && info.m_DamageType != DamageType.SnakePoison && info.m_DamageType != DamageType.VenomPoison && info.m_DamageType != DamageType.Insects && info.m_DamageType != DamageType.Infection)
            {
                num = info.m_Damage * (1f - PlayerArmorModule.Get().GetAbsorption(limb));
            }
            PlayerArmorModule.Get().SetPhaseCompleted(ArmorTakeDamagePhase.InjuryModule);
        }
        float num2 = 5f;

        if ((num > num2 && PlayerArmorModule.Get().NoArmorAfterDamage(info)) || info.m_DamageType == DamageType.Insects || info.m_DamageType == DamageType.SnakePoison || info.m_DamageType == DamageType.VenomPoison || info.m_DamageType == DamageType.Fall || info.m_DamageType == DamageType.Infection)
        {
            BIWoundSlot biwoundSlot = null;
            DamageType  damageType  = info.m_DamageType;
            InjuryType  injuryType;
            if (damageType <= DamageType.Claws)
            {
                if (damageType <= DamageType.Melee)
                {
                    if (damageType - DamageType.Cut > 1)
                    {
                        if (damageType == DamageType.Melee)
                        {
                            injuryType = InjuryType.SmallWoundAbrassion;
                            goto IL_17F;
                        }
                    }
                    else
                    {
                        if (info.m_CriticalHit)
                        {
                            injuryType = InjuryType.Laceration;
                            goto IL_17F;
                        }
                        injuryType = InjuryType.SmallWoundScratch;
                        goto IL_17F;
                    }
                }
                else
                {
                    if (damageType == DamageType.VenomPoison)
                    {
                        injuryType = InjuryType.VenomBite;
                        goto IL_17F;
                    }
                    if (damageType == DamageType.Claws)
                    {
                        injuryType = InjuryType.LacerationCat;
                        goto IL_17F;
                    }
                }
            }
            else if (damageType <= DamageType.Fall)
            {
                if (damageType == DamageType.Insects)
                {
                    injuryType = InjuryType.Rash;
                    goto IL_17F;
                }
                if (damageType == DamageType.Fall)
                {
                    injuryType = InjuryType.SmallWoundAbrassion;
                    goto IL_17F;
                }
            }
            else
            {
                if (damageType == DamageType.Critical)
                {
                    injuryType = InjuryType.Laceration;
                    goto IL_17F;
                }
                if (damageType == DamageType.SnakePoison)
                {
                    injuryType = InjuryType.SnakeBite;
                    goto IL_17F;
                }
            }
            injuryType = InjuryType.SmallWoundAbrassion;
IL_17F:
            if (!info.m_FromInjury && (injuryType == InjuryType.VenomBite || injuryType == InjuryType.SnakeBite))
            {
                Disease disease = PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Fever);
                if (disease != null && disease.IsActive())
                {
                    disease.IncreaseLevel(1);
                }
                else
                {
                    PlayerDiseasesModule.Get().RequestDisease(ConsumeEffect.Fever, 0f, 1);
                }
            }
            if (info.m_DamageType == DamageType.Insects && GreenHellGame.TWITCH_DEMO)
            {
                biwoundSlot = this.m_BodyInspectionController.GetFreeWoundSlot(InjuryPlace.LHand, injuryType, true);
            }
            else if (info.m_InjuryPlace == InjuryPlace.LLeg)
            {
                biwoundSlot = this.m_BodyInspectionController.GetFreeWoundSlot(InjuryPlace.LLeg, injuryType, true);
            }
            else if (info.m_InjuryPlace == InjuryPlace.RLeg)
            {
                biwoundSlot = this.m_BodyInspectionController.GetFreeWoundSlot(InjuryPlace.RLeg, injuryType, true);
            }
            else if (info.m_InjuryPlace == InjuryPlace.LHand)
            {
                biwoundSlot = this.m_BodyInspectionController.GetFreeWoundSlot(InjuryPlace.LHand, injuryType, true);
            }
            else if (info.m_InjuryPlace == InjuryPlace.RHand)
            {
                biwoundSlot = this.m_BodyInspectionController.GetFreeWoundSlot(InjuryPlace.RHand, injuryType, true);
            }
            if (biwoundSlot != null)
            {
                InjuryState state = InjuryState.Open;
                if (injuryType == InjuryType.Laceration || injuryType == InjuryType.LacerationCat)
                {
                    state = InjuryState.Bleeding;
                }
                else if (injuryType == InjuryType.WormHole)
                {
                    state = InjuryState.WormInside;
                }
                this.AddInjury(injuryType, biwoundSlot.m_InjuryPlace, biwoundSlot, state, info.m_PoisonLevel, null, info);
                return;
            }
            if (info.m_DamageType == DamageType.VenomPoison)
            {
                for (int i = 0; i < this.m_Injuries.Count; i++)
                {
                    if (this.m_Injuries[i].m_Type == InjuryType.VenomBite)
                    {
                        this.m_Injuries[i].m_PoisonLevel += info.m_PoisonLevel;
                        return;
                    }
                }
                return;
            }
            if (info.m_DamageType == DamageType.SnakePoison)
            {
                for (int j = 0; j < this.m_Injuries.Count; j++)
                {
                    if (this.m_Injuries[j].m_Type == InjuryType.SnakeBite)
                    {
                        this.m_Injuries[j].m_PoisonLevel += info.m_PoisonLevel;
                        return;
                    }
                }
            }
        }
    }
예제 #26
0
 public void SetPlayerDiseasesModule(PlayerDiseasesModule module)
 {
     this.m_PlayerDiseasesModule = module;
 }
예제 #27
0
    private void UpdateSleeping()
    {
        if (this.m_Animator.GetBool(this.m_StandUpHash))
        {
            return;
        }
        if (HUDSleeping.Get().GetState() != HUDSleepingState.Progress)
        {
            this.m_Progress             = 0f;
            this.m_StartSleepingTime    = Time.time;
            this.m_PrevSleepingDateTime = this.m_Sky.Cycle.DateTime;
            this.m_StartSleepHour       = this.m_Sky.Cycle.Hour;
            return;
        }
        this.m_LastProgress = this.m_Progress;
        bool flag = this.IsAllPlayersSleeping();

        if (ReplTools.IsPlayingAlone())
        {
            float num = Time.time - this.m_StartSleepingTime;
            this.m_Progress = num / (float)this.m_SleepDuration;
            this.m_Progress = Mathf.Clamp01(this.m_Progress);
        }
        else
        {
            this.m_Progress += Mathf.Clamp01((float)(this.m_Sky.Cycle.DateTime - this.m_PrevSleepingDateTime).TotalHours * (flag ? 1f : this.m_SleepDurationCoopMul) / (float)this.m_SleepDuration);
        }
        this.m_PrevSleepingDateTime = this.m_Sky.Cycle.DateTime;
        float num2 = this.m_Progress - this.m_PrevProgress;

        if (ReplTools.IsPlayingAlone() || (ReplTools.AmIMaster() && flag))
        {
            this.m_TODTime.AddHours((float)this.m_SleepDuration * num2, true, false);
        }
        this.m_HoursDelta = (float)this.m_SleepDuration * num2;
        int num3 = (int)((float)this.m_SleepDuration * this.m_Progress);

        if (num3 > this.m_HourProgress)
        {
            this.CheckWorm();
        }
        this.m_HourProgress = num3;
        float num4 = this.m_Progress - this.m_PrevProgress;

        foreach (SleepController.ConditionFParam conditionFParam in this.m_FParams)
        {
            if (!(conditionFParam.category == "nutrients") || DifficultySettings.ActivePreset.m_NutrientsDepletion != NutrientsDepletion.Off)
            {
                PropertyInfo property = this.m_ConditionModule.GetType().GetProperty(conditionFParam.field_name);
                float        num5     = (float)property.GetValue(this.m_ConditionModule, null);
                float        num6     = (conditionFParam.value > 0f) ? (conditionFParam.value * this.m_ParamsMul) : conditionFParam.value;
                if (PlayerInjuryModule.Get().GetNumWounds() <= 0 || !(conditionFParam.field_name == "m_HP"))
                {
                    num5 += num6 * num4;
                }
                property.SetValue(this.m_ConditionModule, num5, null);
            }
        }
        this.m_ConditionModule.ClampParams();
        Insomnia insomnia = (Insomnia)PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.Insomnia);

        if (insomnia != null)
        {
            insomnia.UpdateSleeping();
        }
        if (this.m_Progress >= 1f || Player.Get().IsDead())
        {
            this.WakeUp(false, true);
        }
        this.SetupSurroundingConstructions();
        this.m_PrevProgress = this.m_Progress;
    }
예제 #28
0
 public void OnFeverButton()
 {
     PlayerDiseasesModule.Get().RequestDisease(ConsumeEffect.Fever, 0f, 1);
 }
예제 #29
0
    private void OnDrink(LiquidData data, float hydration_amount, float fat_amount, float proteins_amount, float carbo_amount, float energy_amount)
    {
        string       text         = string.Empty;
        Localization localization = GreenHellGame.Instance.GetLocalization();
        HUDMessages  hudmessages  = (HUDMessages)HUDManager.Get().GetHUD(typeof(HUDMessages));
        bool         flag         = false;
        bool         flag2        = false;

        for (int i = 0; i < data.m_ConsumeEffects.Count; i++)
        {
            if (data.m_ConsumeEffects[i].m_ConsumeEffect != ConsumeEffect.None && UnityEngine.Random.Range(0f, 1f) <= data.m_ConsumeEffects[i].m_ConsumeEffectChance && data.m_ConsumeEffects[i].m_ConsumeEffectLevel != 0)
            {
                if (data.m_ConsumeEffects[i].m_ConsumeEffectLevel > 0)
                {
                    PlayerDiseasesModule.Get().RequestDisease(data.m_ConsumeEffects[i].m_ConsumeEffect, data.m_ConsumeEffects[i].m_ConsumeEffectDelay, 0);
                    flag = true;
                }
                if (data.m_ConsumeEffects[i].m_ConsumeEffectLevel < 0)
                {
                    flag2 = true;
                }
                if (data.m_ConsumeEffects[i].m_ConsumeEffect == ConsumeEffect.FoodPoisoning)
                {
                    text = data.m_ConsumeEffects[i].m_ConsumeEffectLevel.ToString("F0") + " " + localization.Get("HUD_FoodPoisoning", true);
                    hudmessages.AddMessage(text, null, HUDMessageIcon.FoodPoisoning, "", null);
                }
                else if (data.m_ConsumeEffects[i].m_ConsumeEffect == ConsumeEffect.ParasiteSickness)
                {
                    text = data.m_ConsumeEffects[i].m_ConsumeEffectLevel.ToString("F0") + " " + localization.Get("HUD_ParasiteSickness", true);
                    hudmessages.AddMessage(text, null, HUDMessageIcon.ParasiteSickness, "", null);
                }
            }
        }
        if (flag || flag2)
        {
            PlayerDiseasesModule.Get().OnDrink(data.m_LiquidType, hydration_amount);
        }
        PlayerInjuryModule.Get().OnDrink(data);
        if (data.m_Disgusting)
        {
            PlayerAudioModule.Get().PlayDrinkingDisgustingSound(1f, false);
        }
        else
        {
            PlayerAudioModule.Get().PlayDrinkingSound(1f, false);
        }
        if (energy_amount > 0f)
        {
            text = energy_amount.ToString("F0") + " " + localization.Get("HUD_Energy", true);
            hudmessages.AddMessage(text, null, HUDMessageIcon.Energy, "", null);
        }
        if (hydration_amount > 0f)
        {
            text = hydration_amount.ToString("F0") + " " + localization.Get("HUD_Hydration", true);
            hudmessages.AddMessage(text, null, HUDMessageIcon.Hydration, "", null);
        }
        if (fat_amount > 0f)
        {
            text = fat_amount.ToString("F0") + " " + localization.Get("HUD_Nutrition_Fat", true);
            hudmessages.AddMessage(text, null, HUDMessageIcon.Fat, "", null);
        }
        if (proteins_amount > 0f)
        {
            text = proteins_amount.ToString("F0") + " " + localization.Get("HUD_Nutrition_Protein", true);
            hudmessages.AddMessage(text, null, HUDMessageIcon.Proteins, "", null);
        }
        if (carbo_amount > 0f)
        {
            text = carbo_amount.ToString("F0") + " " + localization.Get("HUD_Nutrition_Carbo", true);
            hudmessages.AddMessage(text, null, HUDMessageIcon.Carbo, "", null);
        }
        text = localization.Get(TriggerAction.GetTextPerfect(TriggerAction.TYPE.Drink), true) + ": " + GreenHellGame.Instance.GetLocalization().Get(data.m_LiquidType.ToString(), true);
        hudmessages.AddMessage(text, null, HUDMessageIcon.None, "", null);
        EventsManager.OnEvent(Enums.Event.Drink, 1, (int)data.m_LiquidType);
        InventoryBackpack.Get().CalculateCurrentWeight();
    }
예제 #30
0
    private void UpdateNutrition()
    {
        if (this.m_ParasiteSickness == null)
        {
            this.m_ParasiteSickness = (ParasiteSickness)PlayerDiseasesModule.Get().GetDisease(ConsumeEffect.ParasiteSickness);
        }
        if (this.m_Player.m_DreamActive)
        {
            return;
        }
        if (Cheats.m_GodMode || this.m_LossParametersBlocked)
        {
            return;
        }
        FPPController fppcontroller = this.m_Player.m_FPPController;

        if (!fppcontroller)
        {
            return;
        }
        WeaponController weaponController = this.m_Player.m_WeaponController;
        bool             flag             = false;

        if (weaponController && weaponController.IsAttack())
        {
            flag = true;
        }
        if (!flag && this.m_Player.GetCurrentItem(Hand.Right) && this.m_Player.GetCurrentItem(Hand.Right).m_Info.IsHeavyObject())
        {
            flag = true;
        }
        float deltaTime = Time.deltaTime;
        float num       = 1f;
        float num2      = 1f;
        float num3      = 1f;

        if (fppcontroller.IsRunning())
        {
            num  *= this.m_NutritionCarbohydratesConsumptionRunMul;
            num2 *= this.m_NutritionFatConsumptionRunMul;
            num3 *= this.m_NutritionProteinsConsumptionRunMul;
        }
        if (flag)
        {
            num  *= this.m_NutritionCarbohydratesConsumptionActionMul;
            num2 *= this.m_NutritionFatConsumptionActionMul;
            num3 *= this.m_NutritionProteinsConsumptionActionMul;
        }
        if (this.IsNutritionCarboCriticalLevel())
        {
            num2 *= this.m_NutritionFatConsumptionMulNoCarbs;
            num3 *= this.m_NutritionProteinsConsumptionMulNoCarbs;
        }
        if (InventoryBackpack.Get().IsCriticalOverload())
        {
            num  *= this.m_NutritionCarbohydratesConsumptionWeightCriticalMul;
            num2 *= this.m_NutritionFatConsumptionWeightCriticalMul;
            num3 *= this.m_NutritionProteinsConsumptionWeightCriticalMul;
        }
        else if (InventoryBackpack.Get().IsOverload())
        {
            num  *= this.m_NutritionCarbohydratesConsumptionWeightOverloadMul;
            num2 *= this.m_NutritionFatConsumptionWeightOverloadMul;
            num3 *= this.m_NutritionProteinsConsumptionWeightOverloadMul;
        }
        else
        {
            num  *= this.m_NutritionCarbohydratesConsumptionWeightNormalMul;
            num2 *= this.m_NutritionFatConsumptionWeightNormalMul;
            num3 *= this.m_NutritionProteinsConsumptionWeightNormalMul;
        }
        if (this.m_ParasiteSickness.IsActive())
        {
            num  *= this.m_ParasiteSickness.m_MacroNutricientCarboLossMul * (float)this.m_ParasiteSickness.m_Level;
            num2 *= this.m_ParasiteSickness.m_MacroNutricientFatLossMul * (float)this.m_ParasiteSickness.m_Level;
            num3 *= this.m_ParasiteSickness.m_MacroNutricientProteinsLossMul * (float)this.m_ParasiteSickness.m_Level;
        }
        GameDifficulty gameDifficulty = GreenHellGame.Instance.m_GameDifficulty;

        if (gameDifficulty == GameDifficulty.Normal)
        {
            float s_NormalModeLossMul = GreenHellGame.s_NormalModeLossMul;
            num  *= s_NormalModeLossMul;
            num2 *= s_NormalModeLossMul;
            num3 *= s_NormalModeLossMul;
        }
        else if (gameDifficulty == GameDifficulty.Easy)
        {
            float s_EasyModeLossMul = GreenHellGame.s_EasyModeLossMul;
            num  *= s_EasyModeLossMul;
            num2 *= s_EasyModeLossMul;
            num3 *= s_EasyModeLossMul;
        }
        this.m_NutritionCarbo    -= this.m_NutritionCarbohydratesConsumptionPerSecond * deltaTime * num * ((!PlayerCocaineModule.Get().m_Active) ? 1f : PlayerCocaineModule.Get().m_CarboConsumptionMul);
        this.m_NutritionCarbo     = Mathf.Clamp(this.m_NutritionCarbo, 0f, this.m_MaxNutritionCarbo);
        this.m_NutritionFat      -= this.m_NutritionFatConsumptionPerSecond * deltaTime * num2 * ((!PlayerCocaineModule.Get().m_Active) ? 1f : PlayerCocaineModule.Get().m_FatConsumptionMul);
        this.m_NutritionFat       = Mathf.Clamp(this.m_NutritionFat, 0f, this.m_MaxNutritionFat);
        this.m_NutritionProteins -= this.m_NutritionProteinsConsumptionPerSecond * deltaTime * num3 * ((!PlayerCocaineModule.Get().m_Active) ? 1f : PlayerCocaineModule.Get().m_ProteinsConsumptionMul);
        this.m_NutritionProteins  = Mathf.Clamp(this.m_NutritionProteins, 0f, this.m_MaxNutritionProteins);
    }