示例#1
0
        public static void SpecialCharactersSmallHead2(UiAppPairSlot __instance, PlayerFileGirlPair ____playerFileGirlPair)
        {
            GirlDefinition one, two;

            if (____playerFileGirlPair != null)
            {
                one = ____playerFileGirlPair.girlPairDefinition.girlDefinitionOne;
                two = ____playerFileGirlPair.girlPairDefinition.girlDefinitionTwo;

                //don't need to check sides flipped; it's always false for special girl pairs?
                if (one.id >= 13)
                {
                    __instance.girlHeadOne.sprite = Game.Data.Girls.Get(1).GetHead(true);
                    __instance.girlHeadOne.SetNativeSize();
                    __instance.girlHeadOne.sprite = one.GetHead(false);
                }

                if (two.id >= 13)
                {
                    __instance.girlHeadTwo.sprite = Game.Data.Girls.Get(1).GetHead(true);
                    __instance.girlHeadTwo.SetNativeSize();
                    __instance.girlHeadTwo.sprite = two.GetHead(false);
                }
            }
        }
示例#2
0
        public static void CheckPercentage()
        {
            PlayerFile _this = Game.Persistence.playerFile;
            float      num   = (float)Mathf.Clamp(_this.storyProgress - 2, 0, 12) * 0.5f;

            Logger.LogDebug(Mathf.FloorToInt(num));
            for (int i = 0; i < 4; i++)
            {
                num += (float)_this.GetAffectionLevel((PuzzleAffectionType)i, true) * 0.625f;
            }
            Logger.LogDebug(Mathf.FloorToInt(num));
            for (int j = 0; j < _this.girls.Count; j++)
            {
                PlayerFileGirl playerFileGirl = _this.girls[j];
                if (!playerFileGirl.girlDefinition.specialCharacter && playerFileGirl.playerMet)
                {
                    num += (float)playerFileGirl.learnedBaggage.Count * 0.25f;
                    num += (float)playerFileGirl.receivedUniques.Count * 0.125f;
                    num += (float)playerFileGirl.receivedShoes.Count * 0.125f;
                    for (int k = 0; k < playerFileGirl.unlockedHairstyles.Count; k++)
                    {
                        if (k != playerFileGirl.girlDefinition.defaultHairstyleIndex && k != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                    for (int l = 0; l < playerFileGirl.unlockedOutfits.Count; l++)
                    {
                        if (l != playerFileGirl.girlDefinition.defaultOutfitIndex && l != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                }
                Logger.LogDebug(playerFileGirl.girlDefinition.girlName + ": " + playerFileGirl.learnedBaggage.Count + "," +
                                playerFileGirl.receivedUniques.Count + "," + playerFileGirl.receivedShoes.Count + "," +
                                playerFileGirl.unlockedHairstyles.Count + "," + playerFileGirl.unlockedOutfits.Count);
                Logger.LogDebug(Mathf.FloorToInt(num));
            }
            //Logger.LogDebug(Mathf.FloorToInt(num));
            for (int m = 0; m < _this.girlPairs.Count; m++)
            {
                PlayerFileGirlPair playerFileGirlPair = _this.girlPairs[m];
                if (!playerFileGirlPair.girlPairDefinition.specialPair)
                {
                    GirlPairRelationshipType relationshipType = playerFileGirlPair.relationshipType;
                    if (relationshipType >= GirlPairRelationshipType.COMPATIBLE)
                    {
                        num += 0.25f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.ATTRACTED)
                    {
                        num += 1f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.LOVERS)
                    {
                        num += 1f;
                    }
                }
            }
            Logger.LogDebug(Mathf.FloorToInt(num));
        }
示例#3
0
        public static void GetGirlData()
        {
            //couldn't find a quick way to get these strings so i got them manually
            Dictionary <string, string> convertPairQuestions = new Dictionary <string, string>();

            convertPairQuestions.Add("Movie Genre", "movie genre");
            convertPairQuestions.Add("Phone App", "app on your phone");
            convertPairQuestions.Add("Theme Park Ride", "theme park ride");
            convertPairQuestions.Add("Holiday", "holiday");
            convertPairQuestions.Add("Outdoor Activity", "outdoor activity");
            convertPairQuestions.Add("Sunday Morning", "Sunday morning");
            convertPairQuestions.Add("Place to Shop", "place to go shopping");
            convertPairQuestions.Add("Trait in Partner", "trait to have in a partner");
            convertPairQuestions.Add("Own Body Part", "part about your own body");
            convertPairQuestions.Add("P**n Category", "category of p**n");
            convertPairQuestions.Add("Ice Cream Flavor", "flavor of ice cream");
            convertPairQuestions.Add("Friday Night", "Friday night");
            convertPairQuestions.Add("Weather", "kind of weather");
            convertPairQuestions.Add("Pet", "type of pet");
            convertPairQuestions.Add("School Subject", "subject in high school");
            convertPairQuestions.Add("Drink", "thing to drink");
            convertPairQuestions.Add("Music Genre", "music genre");
            convertPairQuestions.Add("Online Activity", "thing to do online");
            convertPairQuestions.Add("Type of Exercise", "way to exercise");
            convertPairQuestions.Add("Sex Position", "sex position");

            Dictionary <int, string> girlIDToHotkey = new Dictionary <int, string>();

            for (int i = 1; i <= 9; i++)
            {
                girlIDToHotkey.Add(i, i.ToString());
            }
            girlIDToHotkey.Add(10, "0");
            girlIDToHotkey.Add(11, "-");
            girlIDToHotkey.Add(12, "=");

            Logger.LogDebug(Game.Persistence.playerFile.girls.Count + " girls");

            List <GirlDefinition> allBySpecial = Game.Data.Girls.GetAllBySpecial(false);

            List <GirlPairDefinition> allBySpecial2 = Game.Data.GirlPairs.GetAllBySpecial(false);

            foreach (GirlDefinition g in allBySpecial)
            {
                Logger.LogDebug(g.girlName + " " + g.id);
            }
            List <GirlDefinition> allSpecialGirls = Game.Data.Girls.GetAllBySpecial(true);

            foreach (GirlDefinition g in allSpecialGirls)
            {
                Logger.LogDebug(g.girlName + " " + g.id);
            }

            foreach (PlayerFileGirl pfg in Game.Persistence.playerFile.girls)
            {
                Logger.LogDebug(pfg.girlDefinition.girlName);
            }

            string data = "";

            //output unordered girl info list
            foreach (GirlDefinition g in allBySpecial)
            {
                data += g.girlName + " (" + girlIDToHotkey[g.id] + "): Loves " + g.favoriteAffectionType + ", Hates " + g.leastFavoriteAffectionType + "\n";
                data += g.uniqueType + " (" + g.uniqueAdj + "), " + g.shoesType + " (" + g.shoesAdj + ")\n";
                data += GetQuestionQuizlet(g) + "\n";
            }
            data += "\n";

            allBySpecial.Sort((x, y) => x.girlName.CompareTo(y.girlName));

            //output alphabetical girl info list
            foreach (GirlDefinition g in allBySpecial)
            {
                data += g.girlName + " (" + girlIDToHotkey[g.id] + "): Loves " + g.favoriteAffectionType + ", Hates " + g.leastFavoriteAffectionType + "\n";
                data += g.uniqueType + " (" + g.uniqueAdj + "), " + g.shoesType + " (" + g.shoesAdj + ")\n";
                data += GetQuestionQuizlet(g) + "\n";
            }

            //output unordered pair info list
            foreach (GirlPairDefinition g in allBySpecial2)
            {
                GirlDefinition g1 = g.girlDefinitionOne; GirlDefinition g2 = g.girlDefinitionTwo;
                data += g1.girlName + " + " + g2.girlName + "; " + g2.girlName + " + " + g1.girlName +
                        " (" + g1.favoriteAffectionType + ", " + g2.favoriteAffectionType + ")\n";
                if (g.introductionPair)
                {
                    data += "Introduction Pair: YES, ";
                }
                data += "Meeting Location: " + g.meetingLocationDefinition.locationName + ", Sex Day Phase: " + g.sexDaytime + "\n";
                data += "Favorite Questions: ";
                List <GirlPairFavQuestionSubDefinition> qs = g.favQuestions;

                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    if (convertPairQuestions.ContainsKey(q.questionDefinition.questionName))
                    {
                        q.questionDefinition.questionName = convertPairQuestions[q.questionDefinition.questionName];
                    }
                }
                qs.Sort((x, y) => x.questionDefinition.questionName.CompareTo(y.questionDefinition.questionName));
                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    data += q.questionDefinition.questionName + ", ";
                }
                data  = data.Substring(0, data.Length - 2);
                data += "\n\n";
            }
            data += "\n";
            foreach (GirlPairDefinition g in allBySpecial2)
            {
                //swap pairs so earlier name is always girldefinitionone
                if (g.girlDefinitionOne.girlName.CompareTo(g.girlDefinitionTwo.girlName) > 0)
                {
                    GirlDefinition temp = g.girlDefinitionOne;
                    g.girlDefinitionOne = g.girlDefinitionTwo;
                    g.girlDefinitionTwo = temp;
                }
            }

            allBySpecial2.Sort((x, y) => {
                int result = x.girlDefinitionOne.girlName.CompareTo(y.girlDefinitionOne.girlName);
                if (result == 0)
                {
                    result = x.girlDefinitionTwo.girlName.CompareTo(y.girlDefinitionTwo.girlName);
                }
                return(result);
            }
                               );
            //allBySpecial2.Sort((x, y) => { if (x.girlDefinitionOne.girlName == y.girlDefinitionOne.girlName) return x.girlDefinitionTwo.girlName.CompareTo(y.girlDefinitionTwo.girlName); else return 0; });

            foreach (GirlPairDefinition g in allBySpecial2)
            {
                GirlDefinition g1 = g.girlDefinitionOne; GirlDefinition g2 = g.girlDefinitionTwo;
                data += g1.girlName + " + " + g2.girlName + "; " + g2.girlName + " + " + g1.girlName +
                        " (" + g1.favoriteAffectionType + ", " + g2.favoriteAffectionType + ")\n";
                if (g.introductionPair)
                {
                    data += "Introduction Pair: YES, ";
                }
                data += "Meeting Location: " + g.meetingLocationDefinition.locationName + ", Sex Day Phase: " + g.sexDaytime + "\n";
                data += "Favorite Questions: ";
                List <GirlPairFavQuestionSubDefinition> qs = g.favQuestions;

                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    if (convertPairQuestions.ContainsKey(q.questionDefinition.questionName))
                    {
                        q.questionDefinition.questionName = convertPairQuestions[q.questionDefinition.questionName];
                    }
                }
                qs.Sort((x, y) => x.questionDefinition.questionName.CompareTo(y.questionDefinition.questionName));
                foreach (GirlPairFavQuestionSubDefinition q in qs)
                {
                    data += q.questionDefinition.questionName + ", ";
                }
                data  = data.Substring(0, data.Length - 2);
                data += "\n\n";
            }
            Logger.LogDebug(data);

            string huge = "";

            for (int a = 0; a < allBySpecial.Count; a++)
            {
                for (int b = 0; b < allBySpecial[a].herQuestions.Count; b++)
                {
                    for (int c = 0; c < allBySpecial[a].herQuestions[b].answers.Count; c++)
                    {
                        huge += a + "," + b + "," + c + ": " + PurifyDialogText(allBySpecial[a].herQuestions[b].answers[c].answerText) + " (" + allBySpecial[a].herQuestions[b].answers[c].responseIndex + ")\n";
                        if (allBySpecial[a].herQuestions[b].answers[c].hasAlt)
                        {
                            huge += a + "," + b + "," + c + " ALT: " + PurifyDialogText(allBySpecial[a].herQuestions[b].answers[c].answerTextAlt) + " (" + allBySpecial[a].herQuestions[b].answers[c].responseIndex + ")\n";
                        }
                    }
                }
            }


            //Logger.LogDebug(huge);

            float num = (float)Mathf.Clamp(Game.Persistence.playerFile.storyProgress - 2, 0, 12) * 0.5f;

            Logger.LogDebug(num);
            for (int i = 0; i < 4; i++)
            {
                num += (float)Game.Persistence.playerFile.GetAffectionLevel((PuzzleAffectionType)i, true) * 0.625f;
                Logger.LogDebug(num);
            }
            Logger.LogDebug(num);

            for (int j = 0; j < Game.Persistence.playerFile.girls.Count; j++)
            {
                PlayerFileGirl playerFileGirl = Game.Persistence.playerFile.girls[j];
                if (!playerFileGirl.girlDefinition.specialCharacter && playerFileGirl.playerMet)
                {
                    num += (float)playerFileGirl.learnedBaggage.Count * 0.25f;
                    num += (float)playerFileGirl.receivedUniques.Count * 0.125f;
                    num += (float)playerFileGirl.receivedShoes.Count * 0.125f;
                    for (int k = 0; k < playerFileGirl.unlockedHairstyles.Count; k++)
                    {
                        if (k != playerFileGirl.girlDefinition.defaultHairstyleIndex && k != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                    for (int l = 0; l < playerFileGirl.unlockedOutfits.Count; l++)
                    {
                        if (l != playerFileGirl.girlDefinition.defaultOutfitIndex && l != 6)
                        {
                            num += 0.046875f;
                        }
                    }
                }
                Logger.LogDebug(num);
            }
            for (int m = 0; m < Game.Persistence.playerFile.girlPairs.Count; m++)
            {
                PlayerFileGirlPair playerFileGirlPair = Game.Persistence.playerFile.girlPairs[m];
                if (!playerFileGirlPair.girlPairDefinition.specialPair)
                {
                    GirlPairRelationshipType relationshipType = playerFileGirlPair.relationshipType;
                    if (relationshipType >= GirlPairRelationshipType.COMPATIBLE)
                    {
                        num += 0.25f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.ATTRACTED)
                    {
                        num += 1f;
                    }
                    if (relationshipType >= GirlPairRelationshipType.LOVERS)
                    {
                        num += 1f;
                    }
                }
            }
            Logger.LogDebug(num);
        }
示例#4
0
        /// <summary>
        /// Chenges checks to start threesome if lovers
        /// </summary>
        /// <param name="__instance">puzzlemanager instance</param>
        /// <returns></returns>
        public static bool LoversThreesome(PuzzleManager __instance)
        {
            //Access private memebrs
            var privateFeilds = typeof(PuzzleManager).GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

            var puzzleGrid = privateFeilds[0].GetValue(__instance) as UiPuzzleGrid;

            var puzzleStatus = privateFeilds[1].GetValue(__instance) as PuzzleStatus;

            //5 is roundOverCutscene, 6 is newRoundCutscene
            privateFeilds[5].SetValue(__instance, __instance.cutsceneFailure);
            privateFeilds[6].SetValue(__instance, null);
            bool flag = true;

            switch (puzzleStatus.statusType)
            {
            case PuzzleStatusType.NORMAL:
            {
                GirlPairDefinition currentGirlPair    = Game.Session.Location.currentGirlPair;
                PlayerFileGirlPair playerFileGirlPair = Game.Persistence.playerFile.GetPlayerFileGirlPair(currentGirlPair);
                if (playerFileGirlPair != null)
                {
                    Game.Persistence.playerFile.GetPlayerFileGirl(currentGirlPair.girlDefinitionOne);
                    Game.Persistence.playerFile.GetPlayerFileGirl(currentGirlPair.girlDefinitionTwo);
                    if (puzzleGrid.roundState == PuzzleRoundState.SUCCESS)
                    {
                        if (playerFileGirlPair.relationshipType == GirlPairRelationshipType.COMPATIBLE)
                        {
                            privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccessCompatible);
                            playerFileGirlPair.RelationshipLevelUp();
                        }
                        else if
                        (
                            (
                                (Game.Session.Location.currentLocation == currentGirlPair.sexLocationDefinition)
                                &&
                                (
                                    (playerFileGirlPair.relationshipType == GirlPairRelationshipType.ATTRACTED)
                                    ||
                                    (playerFileGirlPair.relationshipType == GirlPairRelationshipType.LOVERS)
                                )
                            )
                            ||
                            (
                                Game.Persistence.playerData.unlockedCodes.Any(x => x.id == 10002)
                                &&
                                (playerFileGirlPair.relationshipType == GirlPairRelationshipType.LOVERS)
                            )
                        )
                        {
                            if (!puzzleStatus.bonusRound)
                            {
                                privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccessAttracted);
                                privateFeilds[6].SetValue(__instance, __instance.cutsceneNewroundBonus);
                                flag = false;
                            }
                            else
                            {
                                privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccessBonus);
                                playerFileGirlPair.RelationshipLevelUp();
                            }
                        }
                        else
                        {
                            privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccess);
                        }
                        if (flag && Game.Persistence.playerFile.storyProgress >= 14 && !Game.Persistence.playerData.unlockedCodes.Contains(Game.Session.Puzzle.noAlphaModeCode))
                        {
                            Game.Persistence.playerFile.alphaDateCount++;
                        }
                    }
                }
                else if (puzzleGrid.roundState == PuzzleRoundState.SUCCESS)
                {
                    privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccess);
                }
                break;
            }

            case PuzzleStatusType.NONSTOP:
                if (puzzleGrid.roundState == PuzzleRoundState.SUCCESS)
                {
                    privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccessNonstop);
                    privateFeilds[6].SetValue(__instance, __instance.cutsceneNewroundNonstop);
                    flag = false;
                }
                else
                {
                    if (puzzleStatus.roundIndex > 0)
                    {
                        privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccess);
                    }
                    if (puzzleStatus.roundIndex > Game.Persistence.playerFile.nonstopDateCount)
                    {
                        Game.Persistence.playerFile.nonstopDateCount = puzzleStatus.roundIndex;
                    }
                }
                break;

            case PuzzleStatusType.BOSS:
                if (puzzleGrid.roundState == PuzzleRoundState.SUCCESS)
                {
                    if (puzzleStatus.bonusRound)
                    {
                        privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccessBonus);
                        if (Game.Persistence.playerFile.storyProgress <= 11)
                        {
                            Game.Persistence.playerFile.storyProgress = 12;
                        }
                    }
                    else if (puzzleStatus.girlListCount <= 2)
                    {
                        privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccessBoss);
                        privateFeilds[6].SetValue(__instance, __instance.cutsceneNewroundBossBonus);
                        flag = false;
                    }
                    else
                    {
                        privateFeilds[5].SetValue(__instance, __instance.cutsceneSuccessBoss);
                        privateFeilds[6].SetValue(__instance, __instance.cutsceneNewroundBoss);
                        flag = false;
                    }
                }
                else if (Game.Persistence.playerFile.storyProgress < 12 && Game.Persistence.playerFile.GetFlagValue("nymphojinn_failure") < 0)
                {
                    Game.Persistence.playerFile.SetFlagValue("nymphojinn_failure", 0);
                }
                break;
            }
            puzzleStatus.gameOver = flag;

            PuzzleManagerEvents pmEvents = new PuzzleManagerEvents(__instance, privateFeilds);

            pmEvents.AddOnRoundOverCutsceneComplete();

            Game.Session.Cutscenes.StartCutscene(privateFeilds[5].GetValue(__instance) as CutsceneDefinition, null);

            return(false);
        }
示例#5
0
        public static void Update()
        {
            if (!HP2SR.cheatsEnabled)
            {
                return;
            }
            //add the quick transitions code if cheat mode is on
            if (!Game.Persistence.playerData.unlockedCodes.Contains(Game.Data.Codes.Get(HP2SR.QUICKTRANSITIONS)))
            {
                Game.Persistence.playerData.unlockedCodes.Add(Game.Data.Codes.Get(HP2SR.QUICKTRANSITIONS));
            }

            if (Input.GetKeyDown(KeyCode.F1))
            {
                if (Game.Session.Location.currentLocation.locationType == LocationType.DATE)
                {
                    HP2SR.ShowNotif("Affection Filled!", 2);
                    Game.Session.Puzzle.puzzleStatus.AddResourceValue(PuzzleResourceType.AFFECTION, 999999, false);
                    Game.Session.Puzzle.puzzleStatus.AddResourceValue(PuzzleResourceType.AFFECTION, -1, false);
                    Game.Session.Puzzle.puzzleStatus.CheckChanges();
                }
                else
                {
                    HP2SR.ShowNotif("Fruit Given!", 2);
                    Game.Persistence.playerFile.AddFruitCount(PuzzleAffectionType.FLIRTATION, 100);
                    Game.Persistence.playerFile.AddFruitCount(PuzzleAffectionType.ROMANCE, 100);
                    Game.Persistence.playerFile.AddFruitCount(PuzzleAffectionType.SEXUALITY, 100);
                    Game.Persistence.playerFile.AddFruitCount(PuzzleAffectionType.TALENT, 100);
                }
            }

            if (Input.GetKeyDown(KeyCode.F2))
            {
                if (!Game.Manager.Ui.currentCanvas.titleCanvas)
                {
                    HP2SR.ShowNotif("Stamina Gained!", 2);
                    Game.Session.Puzzle.puzzleStatus.AddResourceValue(PuzzleResourceType.STAMINA, 6, false);
                    Game.Session.Puzzle.puzzleStatus.AddResourceValue(PuzzleResourceType.STAMINA, 6, true);
                    Game.Session.Puzzle.puzzleStatus.CheckChanges();
                }
            }

            if (Input.GetKeyDown(KeyCode.F5))
            {
                if (!Game.Manager.Ui.currentCanvas.titleCanvas)
                {
                    HP2SR.ShowNotif("Girl Finder Refreshed!", 2);
                    Game.Persistence.playerFile.PopulateFinderSlots();
                    Game.Session.gameCanvas.cellphone.LoadOpenApp();
                }
            }

            if (Input.GetKeyDown(KeyCode.F6))
            {
                if (!Game.Manager.Ui.currentCanvas.titleCanvas)
                {
                    HP2SR.ShowNotif("Store Refreshed!", 2);
                    Game.Persistence.playerFile.PopulateStoreProducts();
                    Game.Session.gameCanvas.cellphone.LoadOpenApp();
                }
            }

            if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
            {
                if (Input.GetKeyDown(KeyCode.A) && !Game.Manager.Ui.currentCanvas.titleCanvas)
                {
                    CodeDefinition abiaHair = Game.Data.Codes.Get(HP2SR.ABIAHAIR);
                    if (!Game.Persistence.playerData.unlockedCodes.Contains(abiaHair))
                    {
                        Game.Persistence.playerData.unlockedCodes.Add(abiaHair);
                        HP2SR.ShowNotif("Abia's hair enabled!", 0);
                    }
                    else
                    {
                        Game.Persistence.playerData.unlockedCodes.Remove(abiaHair);
                        HP2SR.ShowNotif("Abia's hair disabled!", 0);
                    }
                    foreach (UiDoll doll in Game.Session.gameCanvas.dolls)
                    {
                        if (doll.girlDefinition && doll.girlDefinition.girlName == "Abia")
                        {
                            doll.ChangeHairstyle(doll.currentHairstyleIndex);
                        }
                    }
                }

                for (int i = (int)KeyCode.Alpha0; i <= (int)KeyCode.Alpha9; i++)
                {
                    //Alpha0 = 48, Keypad0 = 256
                    int num = i - 48;

                    if (!Game.Manager.Ui.currentCanvas.titleCanvas && (Input.GetKeyDown((KeyCode)i) || Input.GetKeyDown((KeyCode)(i + 208))))
                    {
                        foreach (UiDoll doll in Game.Session.gameCanvas.dolls)
                        {
                            HP2SR.ShowThreeNotif("Changed to Outfit #" + num);
                            doll.ChangeHairstyle(num);
                            doll.ChangeOutfit(num);
                        }
                    }
                }

                if (Input.GetKeyDown(KeyCode.N))
                {
                    HP2SR.nudePatch = !HP2SR.nudePatch;
                    if (HP2SR.nudePatch)
                    {
                        HP2SR.ShowNotif("AWOOOOOOOOOOGA", 2);
                        foreach (UiDoll doll in Game.Session.gameCanvas.dolls)
                        {
                            doll.partNipples.Show();
                            doll.partOutfit.Hide();
                        }
                    }
                    else
                    {
                        foreach (UiDoll doll in Game.Session.gameCanvas.dolls)
                        {
                            doll.partNipples.Hide();
                            doll.partOutfit.Show();
                        }
                    }
                }

                if (Input.GetKeyDown(KeyCode.M))
                {
                    if (!InputPatches.mashCheat)
                    {
                        HP2SR.ShowThreeNotif("MASH POWER ACTIVATED");
                    }
                    else
                    {
                        HP2SR.ShowThreeNotif("Mash power deactivated");
                    }
                    InputPatches.mashCheat = !InputPatches.mashCheat;
                }

                if (Input.GetKeyDown(KeyCode.L))
                {
                    //Datamining.LocationInfo();
                    CodeDefinition codeDefinition = Game.Data.Codes.Get(16);
                    if (!Game.Persistence.playerData.unlockedCodes.Contains(codeDefinition))
                    {
                        Game.Persistence.playerData.unlockedCodes.Add(codeDefinition);
                        HP2SR.ShowTooltip("Letterbox Code Enabled! (not that it does anything yet)", 2000);
                    }
                    else
                    {
                        Game.Persistence.playerData.unlockedCodes.Remove(codeDefinition);
                        HP2SR.ShowTooltip("Letterbox Code Disabled!", 2000);
                    }
                }

                //percent sign
                if (Input.GetKeyDown(KeyCode.Alpha5))
                {
                    Datamining.CheckPercentage();
                }

                if (Input.GetKeyDown(KeyCode.G))
                {
                    Datamining.GetGirlData();
                }

                if (Input.GetKeyDown(KeyCode.D))
                {
                    Datamining.GetAllDialogTriggers();
                    Datamining.GetAllCutsceneLines();
                }

                if (Input.GetKeyDown(KeyCode.R))
                {
                    PlayerFileGirlPair thePair = Game.Persistence.playerFile.GetPlayerFileGirlPair(Game.Persistence.playerFile.girlPairDefinition);
                    if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))
                    {
                        if (thePair.relationshipType != GirlPairRelationshipType.UNKNOWN)
                        {
                            thePair.relationshipType--;
                            HP2SR.ShowThreeNotif("Relationship Leveled Down to " + thePair.relationshipType + "!");
                            UiCellphoneAppStatus status = (UiCellphoneAppStatus)AccessTools.Field(typeof(UiCellphone), "_currentApp").GetValue(Game.Session.gameCanvas.cellphone);
                            status.Refresh();
                        }
                    }
                    else
                    {
                        if (thePair.relationshipType != GirlPairRelationshipType.LOVERS)
                        {
                            thePair.relationshipType++;
                            HP2SR.ShowThreeNotif("Relationship Leveled Up to " + thePair.relationshipType + "!");
                            UiCellphoneAppStatus status = (UiCellphoneAppStatus)AccessTools.Field(typeof(UiCellphone), "_currentApp").GetValue(Game.Session.gameCanvas.cellphone);
                            status.Refresh();
                        }
                    }
                }
            }

            /*if (Input.GetKey(KeyCode.F9))
             * {
             *  Game.Persistence.playerFile.alphaDateCount -= 100;
             *
             *  float num = 200f;
             *  float num2 = 25f;
             *  int num3 = Mathf.Min(Game.Persistence.playerFile.relationshipUpCount, 47);
             *  if (Game.Persistence.playerFile.storyProgress >= 14 && !Game.Persistence.playerData.unlockedCodes.Contains(Game.Session.Puzzle.noAlphaModeCode))
             *  {
             *      num3 += Game.Persistence.playerFile.alphaDateCount + 1;
             *  }
             *  for (int k = 0; k < num3; k++)
             *  {
             *      num += num2;
             *      num2 += 3.3525f;
             *  }
             *
             *  Datamining.Logger.LogDebug((Mathf.RoundToInt(num / 5f) * 5));
             * }
             *
             * if (Input.GetKey(KeyCode.F11))
             * {
             *  Game.Persistence.playerFile.alphaDateCount += 1000;
             *
             *  float num = 200f;
             *  float num2 = 25f;
             *  int num3 = Mathf.Min(Game.Persistence.playerFile.relationshipUpCount, 47);
             *  if (Game.Persistence.playerFile.storyProgress >= 14 && !Game.Persistence.playerData.unlockedCodes.Contains(Game.Session.Puzzle.noAlphaModeCode))
             *  {
             *      num3 += Game.Persistence.playerFile.alphaDateCount + 1;
             *  }
             *  for (int k = 0; k < num3; k++)
             *  {
             *      num += num2;
             *      num2 += 3.3525f;
             *  }
             *
             *  Datamining.Logger.LogDebug((Mathf.RoundToInt(num / 5f) * 5));
             * }
             *
             * if (Input.GetKeyDown(KeyCode.F10))
             * {
             *  Game.Persistence.playerFile.alphaDateCount = 35000;
             * }*/

            /*
             * i should still make a save toggle, on F3?
             * if (cheatsEnabled)
             * {
             *
             *  if (Input.GetKeyDown(KeyCode.F2))
             *  {
             *      if (savingDisabled)
             *      {
             *          savingDisabled = false;
             *          GameUtil.ShowNotification(CellNotificationType.MESSAGE, "Saving has been enabled");
             *      }
             *      else
             *      {
             *          savingDisabled = true;
             *          GameUtil.ShowNotification(CellNotificationType.MESSAGE, "Saving has been disabled");
             *      }
             *  }
             *
             * }
             */
        }