public static bool FindAllHerPairs(UiCellphoneAppPairs __instance) { if (currentGirl != null) { int num = 0; List <GirlPairDefinition> stockPairs = Game.Data.GirlPairs.GetAllBySpecial(false); for (int i = 0; i < stockPairs.Count; i++) { if (stockPairs[i].HasGirlDef(currentGirl)) { __instance.pairSlots[num].rectTransform.anchoredPosition = new Vector2((float)(num % 4) * 256f, (float)Mathf.FloorToInt((float)num / 4f) * -90f); __instance.pairSlots[num].Populate(stockPairs[i], null); __instance.pairSlots[num].profileLinked = true; __instance.pairSlots[num].PairSlotPressedEvent += BasePatches.OnPairSlotPressed; __instance.pairSlots[num].button.Enable(); num++; } } for (int i = num; i < __instance.pairSlots.Length; i++) { __instance.pairSlots[i].Populate(null, null); } __instance.pairSlotsContainer.anchoredPosition += new Vector2((float)Mathf.Min(num - 1, 3) * -128f, (float)Mathf.Max(Mathf.CeilToInt((float)num / 4f) - 1, 0) * 45f); currentGirl = null; return(false); } return(true); }
public static string GetQuestionQuizlet(GirlDefinition g) { string questions = ""; List <DialogTriggerDefinition> lines = Game.Data.DialogTriggers.GetAll(); List <DialogLine> herQuestions = lines[51].dialogLineSets[g.id].dialogLines; List <GirlQuestionSubDefinition> herAnswers = g.herQuestions; List <string> QandAs = new List <string>(); for (int a = 0; a < herQuestions.Count; a++) { string tempq = PurifyDialogText(herQuestions[a].dialogText) + "\n "; foreach (GirlQuestionAnswerSubDefinition gqa in g.herQuestions[a].answers) { if (gqa.responseIndex == -1) { tempq += gqa.answerText; } } QandAs.Add(tempq); } QandAs.Sort((x, y) => x.CompareTo(y)); foreach (string s in QandAs) { questions += s + "\n"; } return(questions); }
public static void SpecialCharactersSmallHead(UiAppHeadSlot __instance, GirlDefinition ____girlDefinition) { //what a stupid way to resize Moxie and Jewn if (____girlDefinition.id >= 14) { __instance.itemIcon.sprite = Game.Data.Girls.Get(1).GetHead(false); __instance.itemIcon.SetNativeSize(); __instance.itemIcon.sprite = ____girlDefinition.GetHead(false); } }
public static void OnGirlHeadPressed(ButtonBehavior b) { tooltip.Hide(); Game.Manager.Audio.Play(AudioCategory.SOUND, click, Game.Session.gameCanvas.cellphone.pauseBehavior.pauseDefinition); currentGirl = Game.Data.Girls.Get(Game.Session.gameCanvas.cellphone.GetCellFlag("profile_girl_id")); UiCellphoneAppPairs p = (Game.Session.gameCanvas.cellphone.appPrefabs.FirstOrDefault((UiCellphoneApp a) => a is UiCellphoneAppPairs) as UiCellphoneAppPairs); Game.Session.gameCanvas.cellphone.LoadApp(Game.Session.gameCanvas.cellphone.appPrefabs.IndexOf(p)); }
private static void AddNumber(UiGirlSlot __instance) { GirlDefinition girlDefinition = __instance.girlDefinition; PlayerFileGirl girlFile = Game.Persistence.playerFile.GetPlayerFileGirl(girlDefinition); __instance.nameLabel.richText = true; //__instance.nameLabel.text = "<size=75%><color=#FFFFFF>" + uniques[(int)girlFile.girlDefinition.shoesType] + "<line-height=75%>\n</line-height>" + shoes[(int)girlFile.girlDefinition.shoesType] + "</color></size>\n\n<voffset=3.25em> " + girlDefinition.GetNickName().ToUpper() + "</voffset>"; __instance.nameLabel.text = "<size=230%>" + girlFile.relationshipPoints + "</size>\n<voffset=3em>" + girlDefinition.GetNickName().ToUpper() + "</voffset>"; //__instance.nameLabel.text = " " + girlDefinition.GetNickName().ToUpper(); }
public static void ShuffleSpecialBaggage(ref bool arriveWithGirls) { if (Game.Session.Location.currentLocation.id <= 8) { GirlDefinition[] gs = new GirlDefinition[] { Game.Session.Location.currentGirlLeft, Game.Session.Location.currentGirlRight }; foreach (GirlDefinition g in gs) { if (g.id >= 13) { g.baggageItemDefs.Clear(); g.baggageItemDefs.Add(Game.Data.Ailments.Get(UnityEngine.Random.Range(1, 37)).itemDefinition); g.baggageItemDefs.Add(Game.Data.Ailments.Get(UnityEngine.Random.Range(1, 37)).itemDefinition); g.baggageItemDefs.Add(Game.Data.Ailments.Get(UnityEngine.Random.Range(1, 37)).itemDefinition); } } } }
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); }
public static void CensorLewdOutfits(UiDoll __instance, ref int outfitIndex, ref int ____currentOutfitIndex, ref GirlDefinition ____girlDefinition, ref int __state) { if (____girlDefinition == null) { return; } //set state to the intended outfit index, and change outfitIndex if lewd __state = outfitIndex; if (outfitIndex == -1) { __state = Game.Persistence.playerFile.GetPlayerFileGirl(____girlDefinition).outfitIndex; } if (____girlDefinition.girlName == "Kyu" && outfitIndex == -1) { __state = HP2SR.KyuOutfit; outfitIndex = HP2SR.KyuOutfit; } if (!Game.Persistence.playerData.uncensored && HP2SR.CensorshipEnabled.Value) { foreach (int i in lewdOutfits[____girlDefinition.id - 1]) { if (i == __state) { outfitIndex = ____girlDefinition.defaultOutfitIndex; break; } } } //the ChangeOutfit function should now change the outfit to the girl's default outfit, and then the postfix allows lewd outfits to still be unlocked }
public static void ForGarrett(UiDoll __instance, ref int hairstyleIndex, ref int ____currentHairstyleIndex, ref GirlDefinition ____girlDefinition, ref int __state) { if (____girlDefinition == null) { return; } if (____girlDefinition.girlName == "Kyu" && hairstyleIndex == -1) { hairstyleIndex = HP2SR.KyuHairstyle; } }
public static void Nippy(UiDoll __instance, ref int outfitIndex, ref int ____currentOutfitIndex, ref GirlDefinition ____girlDefinition, ref int __state) { if (____girlDefinition == null) { return; } //Datamining.Logger.LogDebug("outfit change to " + outfitIndex + "; changed to " + __instance.currentOutfitIndex); //FileLog.Log("outfit changed to " + outfitIndex); if (HP2SR.nudePatch) { __instance.partNipples.Show(); __instance.partOutfit.Hide(); } else { __instance.partOutfit.Show(); } //set outfit index to whatever it was supposed to be, for outfit unlocking purposes if (__state != -1) { __state = Mathf.Clamp(__state, 0, ____girlDefinition.outfits.Count - 1); ____currentOutfitIndex = __state; } }