Beispiel #1
0
    public override void GetDataFromGame(KarmaLadderScreen.SleepDeathScreenDataPackage package)
    {
        int oldSeed = UnityEngine.Random.seed;

        UnityEngine.Random.seed = package.saveState.seed + package.saveState.cycleNumber;
        nextcycleLength         = (int)(Mathf.Lerp(300f, 1000f, UnityEngine.Random.value) / 60f * 40f * 60f);
        if (nextcycleLength > 36000)
        {
            burstNum = 3;
        }
        else if (nextcycleLength > 32000)
        {
            burstNum = 2;
        }
        else if (nextcycleLength > 28000)
        {
            burstNum = 1;
        }
        UnityEngine.Random.seed = package.saveState.seed + package.saveState.cycleNumber + 1;
        nextcycleLength2        = (int)(Mathf.Lerp(300f, 1000f, UnityEngine.Random.value) / 60f * 40f * 60f);
        if (nextcycleLength2 > 36000)
        {
            burstNum2 = 3;
        }
        else if (nextcycleLength2 > 32000)
        {
            burstNum2 = 2;
        }
        else if (nextcycleLength2 > 28000)
        {
            burstNum2 = 1;
        }
        UnityEngine.Random.seed = package.saveState.seed + package.saveState.cycleNumber + 2;
        nextcycleLength3        = (int)(Mathf.Lerp(300f, 1000f, UnityEngine.Random.value) / 60f * 40f * 60f);
        if (nextcycleLength3 > 36000)
        {
            burstNum3 = 3;
        }
        else if (nextcycleLength3 > 32000)
        {
            burstNum3 = 2;
        }
        else if (nextcycleLength3 > 28000)
        {
            burstNum3 = 1;
        }
        UnityEngine.Random.seed = oldSeed;
        orig_GetDataFromGame(package);
    }
 public override void CommunicateWithUpcomingProcess(MainLoopProcess nextProcess)
 {
     orig_CommunicateWithUpcomingProcess(nextProcess);
     if (nextProcess is MessageScreen)
     {
         int karma = this.GetStorySession.saveState.deathPersistentSaveData.karma;
         Debug.Log("savKarma: " + karma);
         if (this.sawAGhost > -1)
         {
             Debug.Log("Ghost end of process stuff");
             this.manager.CueAchievement(GhostWorldPresence.PassageAchievementID((GhostWorldPresence.GhostID) this.sawAGhost), 2f);
             if (this.GetStorySession.saveState.deathPersistentSaveData.karmaCap == 8)
             {
                 this.manager.CueAchievement(RainWorld.AchievementID.AllGhostsEncountered, 10f);
             }
             this.GetStorySession.saveState.GhostEncounter(this.sawAGhost, this.rainWorld);
         }
         int num = karma;
         if (nextProcess.ID == ProcessManager.ProcessID.DeathScreen && !this.GetStorySession.saveState.deathPersistentSaveData.reinforcedKarma)
         {
             num = Custom.IntClamp(num - 1, 0, this.GetStorySession.saveState.deathPersistentSaveData.karmaCap);
         }
         Debug.Log("next screen MAP KARMA: " + num);
         this.cameras[0].hud.map.mapData.UpdateData(this.world, 1 + this.GetStorySession.saveState.deathPersistentSaveData.foodReplenishBonus, num, this.GetStorySession.saveState.deathPersistentSaveData.karmaFlowerPosition, true);
         int     num2   = this.Players[0].pos.room;
         Vector2 vector = this.Players[0].pos.Tile.ToVector2() * 20f;
         if (nextProcess.ID == ProcessManager.ProcessID.DeathScreen && this.cameras[0].hud != null && this.cameras[0].hud.textPrompt != null)
         {
             num2   = this.cameras[0].hud.textPrompt.deathRoom;
             vector = this.cameras[0].hud.textPrompt.deathPos;
         }
         else if (this.Players[0].realizedCreature != null)
         {
             vector = this.Players[0].realizedCreature.mainBodyChunk.pos;
         }
         if (this.Players[0].realizedCreature != null && this.Players[0].realizedCreature.room != null && num2 == this.Players[0].realizedCreature.room.abstractRoom.index)
         {
             vector = Custom.RestrictInRect(vector, this.Players[0].realizedCreature.room.RoomRect.Grow(50f));
         }
         KarmaLadderScreen.SleepDeathScreenDataPackage package = new KarmaLadderScreen.SleepDeathScreenDataPackage((nextProcess.ID != ProcessManager.ProcessID.SleepScreen && nextProcess.ID != ProcessManager.ProcessID.Dream) ? this.cameras[0].hud.textPrompt.foodInStomach : this.GetStorySession.saveState.food, new IntVector2(karma, this.GetStorySession.saveState.deathPersistentSaveData.karmaCap), this.GetStorySession.saveState.deathPersistentSaveData.reinforcedKarma, num2, vector, this.cameras[0].hud.map.mapData, this.GetStorySession.saveState, this.GetStorySession.characterStats, this.GetStorySession.playerSessionRecords[0], this.GetStorySession.saveState.lastMalnourished, this.GetStorySession.saveState.malnourished);
         (nextProcess as MessageScreen).GetDataFromGame(((this.GetStorySession.saveState.dreamsState as patch_DreamsState).everSeenMissonComplete), ((this.GetStorySession.saveState.dreamsState as patch_DreamsState).everSeenTraitor), this.GetStorySession.saveState.dreamsState.UpcomingDreamID, package);
     }
 }
 public override void GetDataFromGame(KarmaLadderScreen.SleepDeathScreenDataPackage package)
 {
     base.GetDataFromGame(package);
     this.food              = package.food;
     this.playerRoom        = package.playerRoom;
     this.playerPos         = package.playerPos;
     this.mapData           = package.mapData;
     this.startMalnourished = package.startMalnourished;
     this.goalMalnourished  = package.goalMalnourished;
     ((Monkland.Patches.Menus.patch_HUD)base.hud).InitSleepHud(this, this.mapData, package.characterStats);
     if (this.IsAnyDeath)
     {
         if (this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreens < 2)
         {
             this.forceWatchAnimation = true;
         }
         this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreens++;
         if (package.karmaReinforced)
         {
             if (this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreensWithFlower < 2)
             {
                 this.forceWatchAnimation = true;
             }
             this.manager.rainWorld.progression.miscProgressionData.watchedDeathScreensWithFlower++;
         }
         this.showFlower = (package.karmaReinforced || (package.saveState != null && package.saveState.saveStateNumber == 1));
     }
     else if (this.IsSleepScreen)
     {
         if (this.manager.rainWorld.progression.miscProgressionData.watchedSleepScreens < 2)
         {
             this.forceWatchAnimation = true;
         }
         this.manager.rainWorld.progression.miscProgressionData.watchedSleepScreens++;
         if (package.characterStats.name == SlugcatStats.Name.Red && package.sessionRecord != null && package.sessionRecord.kills.Count > 0)
         {
             this.killsDisplay = new SleepScreenKills(this, this.pages[0], new Vector2(base.LeftHandButtonsPosXAdd, 728f), package.sessionRecord.kills);
             this.pages[0].subObjects.Add(this.killsDisplay);
             this.killsDisplay.started = true;
         }
         if (this.goalMalnourished)
         {
             this.starvedLabel = new MenuLabel(this, this.pages[0], base.Translate("You are starving. Your game has not been saved."), new Vector2(0f, 24f), new Vector2(1366f, 20f), true);
             this.pages[0].subObjects.Add(this.starvedLabel);
             if (this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens < 6)
             {
                 this.forceWatchAnimation = true;
             }
             this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens++;
         }
         if (this.startMalnourished)
         {
             base.hud.foodMeter.NewShowCount(base.hud.foodMeter.maxFood);
             if (this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens < 4)
             {
                 this.forceWatchAnimation = true;
             }
             this.manager.rainWorld.progression.miscProgressionData.watchedMalnourishScreens++;
         }
         if (this.goalMalnourished || this.startMalnourished)
         {
             base.hud.foodMeter.MoveSurvivalLimit((float)base.hud.foodMeter.showCount, false);
             base.hud.foodMeter.eatCircles = base.hud.foodMeter.maxFood;
         }
     }
     if (this.startMalnourished)
     {
         base.hud.foodMeter.MoveSurvivalLimit((float)base.hud.foodMeter.maxFood, false);
     }
     if (this.IsSleepScreen || this.IsDeathScreen || this.IsStarveScreen)
     {
         if (package.characterStats.name != SlugcatStats.Name.Red)
         {
             this.endgameTokens = new EndgameTokens(this, this.pages[0], new Vector2(base.LeftHandButtonsPosXAdd + 140f, 15f), this.container, this.karmaLadder);
             this.pages[0].subObjects.Add(this.endgameTokens);
         }
         if (this.IsSleepScreen && package.saveState != null)
         {
             for (int i = 0; i < this.karmaLadder.endGameMeters.Count; i++)
             {
                 if (!package.saveState.deathPersistentSaveData.endGameMetersEverShown[(int)this.karmaLadder.endGameMeters[i].tracker.ID])
                 {
                     this.forceWatchAnimation = true;
                     package.saveState.deathPersistentSaveData.endGameMetersEverShown[(int)this.karmaLadder.endGameMeters[i].tracker.ID] = true;
                     this.manager.rainWorld.progression.SaveDeathPersistentDataOfCurrentState(false, false);
                     break;
                 }
             }
         }
     }
     if (this.manager.rainWorld.setup.devToolsActive)
     {
         this.forceWatchAnimation = false;
     }
 }
Beispiel #4
0
 public void GetDataFromGame(DreamsState.DreamID dreamID, KarmaLadderScreen.SleepDeathScreenDataPackage package)
 {
     this.fromGameDataPackage = package;
     this.dreamID             = new DreamsState.DreamID?(dreamID);
 }
    public void GetDataFromGame(bool seenMissonComplete, bool seenTraitor, DreamsState.DreamID dreamID, KarmaLadderScreen.SleepDeathScreenDataPackage package)
    {
        SRSLikesPlayer = seenMissonComplete;
        SRSHatesPlayer = seenTraitor;
        base.GetDataFromGame(dreamID, package);
        base.endTime = 340;
        this.hud     = new HUD.HUD(new FContainer[]
        {
            this.hudContainers[1].Container,
            this.hudContainers[0].Container
        }, this.manager.rainWorld, this);

        if (this.hud.dialogBox == null)
        {
            Debug.Log("DialogBox Init!!!");
            this.hud.InitDialogBox();
        }
        conversation = new SRSConversation(this, Conversation.ID.None, this.hud.dialogBox, (DreamsState.DreamID) this.dreamID);
    }
Beispiel #6
0
 public extern void orig_GetDataFromGame(KarmaLadderScreen.SleepDeathScreenDataPackage package);