This commit is contained in:
moreoreganostodump 2021-10-03 16:56:57 +09:00
parent 3f94c3b94d
commit 72dfde81d9
11 changed files with 184 additions and 21 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest> <Manifest>
<identifier>RJW Sexperience</identifier> <identifier>RJW Sexperience</identifier>
<version>1.0.2.1</version> <version>1.0.2.2</version>
<dependencies> <dependencies>
</dependencies> </dependencies>
<incompatibleWith /> <incompatibleWith />

Binary file not shown.

View File

@ -55,6 +55,9 @@
<RS_CumAddictiveness>Cum addictiveness</RS_CumAddictiveness> <RS_CumAddictiveness>Cum addictiveness</RS_CumAddictiveness>
<RS_CumAddictiveness_Tooltip>More likely to get addicted to cum.</RS_CumAddictiveness_Tooltip> <RS_CumAddictiveness_Tooltip>More likely to get addicted to cum.</RS_CumAddictiveness_Tooltip>
<RS_NumofTimes>times</RS_NumofTimes> <RS_NumofTimes>times</RS_NumofTimes>
<RS_Ago>ago</RS_Ago>
<RS_LastSex>last sex</RS_LastSex>
<RS_HadBestSexDaysAgo>Had best sex {0}.</RS_HadBestSexDaysAgo>
<RSOption_1_Label>Enable record randomizer</RSOption_1_Label> <RSOption_1_Label>Enable record randomizer</RSOption_1_Label>
<RSOption_1_Desc>Randomize pawn's sex records.</RSOption_1_Desc> <RSOption_1_Desc>Randomize pawn's sex records.</RSOption_1_Desc>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Sex.description>상대를 보내버리는 기술</Sex.description>
<Sex.skillLabel>섹스</Sex.skillLabel>
<Sex.label>섹스</Sex.label>
</LanguageData>

View File

@ -83,7 +83,15 @@
<Virgin_Shameful_Taken.stages.2.description>드디어!</Virgin_Shameful_Taken.stages.2.description> <Virgin_Shameful_Taken.stages.2.description>드디어!</Virgin_Shameful_Taken.stages.2.description>
<Virgin_OnlyForSpouse_Know_Taken.stages.0.description>걸레</Virgin_OnlyForSpouse_Know_Taken.stages.0.description> <Virgin_OnlyForSpouse_Know_Taken.stages.0.description>걸레</Virgin_OnlyForSpouse_Know_Taken.stages.0.description>
<CumWithdrawal.stages.1.label>정액 금단증상</CumWithdrawal.stages.1.label> <CumWithdrawal.stages.1.label>정액 금단증상</CumWithdrawal.stages.1.label>
<CumWithdrawal.stages.1.description>정액이 필요해.</CumWithdrawal.stages.1.description> <CumWithdrawal.stages.1.description>정액이 필요해.</CumWithdrawal.stages.1.description>
<AteCum.stages.0.label>정액을 먹음</AteCum.stages.0.label>
<AteCum.stages.0.description>역겨워.</AteCum.stages.0.description>
<AteCum.stages.1.label>정액을 먹음</AteCum.stages.1.label>
<AteCum.stages.1.descrption>냄새나고 맛없어.</AteCum.stages.1.descrption>
<AteCum.stages.2.label>정액을 먹음</AteCum.stages.2.label>
<AteCum.stages.2.description>맛없지만 좋아.</AteCum.stages.2.description>
<AteCum.stages.3.label>정액을 먹음</AteCum.stages.3.label>
<AteCum.stages.3.description>맛있어.</AteCum.stages.3.description>
</LanguageData> </LanguageData>

View File

@ -18,6 +18,7 @@ namespace RJWSexperience
public static string RS_LostVirgin(string pawn, string partner) => "RS_LostVirgin".Translate(pawn.Colorize(Color.yellow),partner.Colorize(Color.yellow)); public static string RS_LostVirgin(string pawn, string partner) => "RS_LostVirgin".Translate(pawn.Colorize(Color.yellow),partner.Colorize(Color.yellow));
public static string RS_Sex_Info(string sextype, string sexcount) => "RS_Sex_Info".Translate(sextype, sexcount); public static string RS_Sex_Info(string sextype, string sexcount) => "RS_Sex_Info".Translate(sextype, sexcount);
public static string RS_SAT_AVG(string avgsat) => "RS_SAT_AVG".Translate(avgsat); public static string RS_SAT_AVG(string avgsat) => "RS_SAT_AVG".Translate(avgsat);
public static string RS_HadBestSexDaysAgo(string days) => "RS_HadBestSexDaysAgo".Translate(days);
public static readonly string Mod_Title = "RS_Mod_Title".Translate(); public static readonly string Mod_Title = "RS_Mod_Title".Translate();
public static readonly string SlaveStatFactorDefault = "SlaveStatFactorDefault".Translate(); public static readonly string SlaveStatFactorDefault = "SlaveStatFactorDefault".Translate();
@ -72,6 +73,8 @@ namespace RJWSexperience
public static readonly string RS_CumAddictiveness = "RS_CumAddictiveness".Translate(); public static readonly string RS_CumAddictiveness = "RS_CumAddictiveness".Translate();
public static readonly string RS_CumAddictiveness_Tooltip = "RS_CumAddictiveness_Tooltip".Translate(); public static readonly string RS_CumAddictiveness_Tooltip = "RS_CumAddictiveness_Tooltip".Translate();
public static readonly string RS_NumofTimes = "RS_NumofTimes".Translate(); public static readonly string RS_NumofTimes = "RS_NumofTimes".Translate();
public static readonly string RS_Ago = "RS_Ago".Translate();
public static readonly string RS_LastSex = "RS_LastSex".Translate();
public static readonly string Option_1_Label = "RSOption_1_Label".Translate(); public static readonly string Option_1_Label = "RSOption_1_Label".Translate();

View File

@ -191,7 +191,7 @@ namespace RJWSexperience
{ {
public static void Postfix(Pawn pawn, ref Job __result) public static void Postfix(Pawn pawn, ref Job __result)
{ {
if (RJWPreferenceSettings.FapEverywhere && __result != null) if (RJWPreferenceSettings.FapEverywhere && (pawn.Faction?.IsPlayer ?? false) && __result != null)
{ {
Building_CumBucket bucket = pawn.FindClosestBucket(); Building_CumBucket bucket = pawn.FindClosestBucket();
if (bucket != null) if (bucket != null)

View File

@ -24,11 +24,13 @@ namespace RJWSexperience
protected string recentpartner = ""; protected string recentpartner = "";
protected int[] sextypecount = new int[ARRLEN]; protected int[] sextypecount = new int[ARRLEN];
protected float[] sextypesat = new float[ARRLEN]; protected float[] sextypesat = new float[ARRLEN];
protected int[] sextyperecenttickabs = new int[ARRLEN];
protected int virginstaken = 0; protected int virginstaken = 0;
protected int incestuous = 0; protected int incestuous = 0;
protected int bestiality = 0; protected int bestiality = 0;
protected int corpsefuck = 0; protected int corpsefuck = 0;
protected int interspecies = 0; protected int interspecies = 0;
protected int firstsextickabs = 0;
protected string mostpartnercache = ""; protected string mostpartnercache = "";
protected xxx.rjwSextype mostsextypecache = xxx.rjwSextype.None; protected xxx.rjwSextype mostsextypecache = xxx.rjwSextype.None;
@ -43,11 +45,15 @@ namespace RJWSexperience
protected int preferracesexcountcache = 0; protected int preferracesexcountcache = 0;
protected Pawn preferracepawncache = null; protected Pawn preferracepawncache = null;
protected float avtsatcache = 0; protected float avtsatcache = 0;
protected int recentsextickabscache = 0;
protected int mostsextickabscache = 0;
protected int bestsextickabscache = 0;
private List<SexHistory> partnerlistcache; private List<SexHistory> partnerlistcache;
private List<int> sextypecountsave; private List<int> sextypecountsave;
private List<float> sextypesatsave; private List<float> sextypesatsave;
private List<int> sextyperecenttickabssave;
public SexHistory GetFirstPartnerHistory public SexHistory GetFirstPartnerHistory
@ -198,6 +204,68 @@ namespace RJWSexperience
return sextypesat.Sum() / totalsexcache; return sextypesat.Sum() / totalsexcache;
} }
} }
public int RecentSexElapsedTicks
{
get
{
return GenTicks.TicksAbs - recentsextickabscache;
}
}
public string RecentSexDays
{
get
{
if (recentsextickabscache != 0) return GenDate.ToStringTicksToDays(RecentSexElapsedTicks) + " " + Keyed.RS_Ago;
return "";
}
}
public int FirstSexElapsedTicks
{
get
{
return GenTicks.TicksAbs - firstsextickabs;
}
}
public string FirstSexDays
{
get
{
if (firstsextickabs != 0) return GenDate.ToStringTicksToDays(FirstSexElapsedTicks) + " " + Keyed.RS_Ago;
return "";
}
}
public int MostSexElapsedTicks
{
get
{
return GenTicks.TicksAbs - mostsextickabscache;
}
}
public string MostSexDays
{
get
{
if (mostsextickabscache != 0) return GenDate.ToStringTicksToDays(MostSexElapsedTicks) + " " + Keyed.RS_Ago;
return "";
}
}
public int BestSexElapsedTicks
{
get
{
return GenTicks.TicksAbs - bestsextickabscache;
}
}
public string BestSexDays
{
get
{
if (bestsextickabscache != 0) return GenDate.ToStringTicksToDays(BestSexElapsedTicks) + " " + Keyed.RS_Ago;
return "";
}
}
public Texture GetPreferRaceIcon(Vector2 size) public Texture GetPreferRaceIcon(Vector2 size)
{ {
Update(); Update();
@ -220,6 +288,13 @@ namespace RJWSexperience
return recentsat; return recentsat;
} }
public string SextypeRecentDays(int sextype)
{
int index = (int)sextype;
if (sextyperecenttickabs[index] != 0) return GenDate.ToStringTicksToDays(GenTicks.TicksAbs - sextyperecenttickabs[index]) + " " + Keyed.RS_Ago;
return Keyed.Unknown;
}
public SexHistory this[Pawn pawn] public SexHistory this[Pawn pawn]
{ {
get get
@ -253,6 +328,7 @@ namespace RJWSexperience
{ {
sextypecountsave = sextypecount.ToList(); sextypecountsave = sextypecount.ToList();
sextypesatsave = sextypesat.ToList(); sextypesatsave = sextypesat.ToList();
sextyperecenttickabssave = sextyperecenttickabs.ToList();
} }
Scribe_Collections.Look(ref histories, "histories", LookMode.Value, LookMode.Deep); Scribe_Collections.Look(ref histories, "histories", LookMode.Value, LookMode.Deep);
@ -265,14 +341,17 @@ namespace RJWSexperience
Scribe_Values.Look(ref bestiality, "bestiality", bestiality, true); Scribe_Values.Look(ref bestiality, "bestiality", bestiality, true);
Scribe_Values.Look(ref corpsefuck, "corpsefuck", corpsefuck, true); Scribe_Values.Look(ref corpsefuck, "corpsefuck", corpsefuck, true);
Scribe_Values.Look(ref interspecies, "interspecies", interspecies, true); Scribe_Values.Look(ref interspecies, "interspecies", interspecies, true);
Scribe_Values.Look(ref firstsextickabs, "firstsextickabs", firstsextickabs, true);
Scribe_Collections.Look(ref sextypecountsave, "sextypecountsave", LookMode.Value); Scribe_Collections.Look(ref sextypecountsave, "sextypecountsave", LookMode.Value);
Scribe_Collections.Look(ref sextypesatsave, "sextypesatsave", LookMode.Value); Scribe_Collections.Look(ref sextypesatsave, "sextypesatsave", LookMode.Value);
Scribe_Collections.Look(ref sextyperecenttickabssave, "sextyperecenttickabssave", LookMode.Value);
//Scribe_Values.Look(ref sextypecount, "sextypecount", new int[ARRLEN], true); // not work //Scribe_Values.Look(ref sextypecount, "sextypecount", new int[ARRLEN], true); // not work
//Scribe_Values.Look(ref sextypesat, "sextypesat", new float[ARRLEN], true); //Scribe_Values.Look(ref sextypesat, "sextypesat", new float[ARRLEN], true);
if (Scribe.mode == LoadSaveMode.LoadingVars) if (Scribe.mode == LoadSaveMode.LoadingVars)
{ {
sextypecount = sextypecountsave?.ToArray() ?? new int[ARRLEN]; sextypecount = sextypecountsave?.ToArray() ?? new int[ARRLEN];
sextypesat = sextypesatsave?.ToArray() ?? new float[ARRLEN]; sextypesat = sextypesatsave?.ToArray() ?? new float[ARRLEN];
sextyperecenttickabs = sextyperecenttickabssave?.ToArray() ?? new int[ARRLEN];
} }
if (histories == null) histories = new Dictionary<string, SexHistory>(); if (histories == null) histories = new Dictionary<string, SexHistory>();
@ -290,6 +369,7 @@ namespace RJWSexperience
history?.RecordSex(props); history?.RecordSex(props);
recentsex = props.sexType; recentsex = props.sexType;
sextypecount[(int)props.sexType]++; sextypecount[(int)props.sexType]++;
sextyperecenttickabs[(int)props.sexType] = GenTicks.TicksAbs;
if (partner.IsIncest(pawn)) incestuous++; if (partner.IsIncest(pawn)) incestuous++;
if (partner.Dead) corpsefuck++; if (partner.Dead) corpsefuck++;
if (props.IsBestiality()) bestiality++; if (props.IsBestiality()) bestiality++;
@ -331,6 +411,7 @@ namespace RJWSexperience
TryAddHistory(partner); TryAddHistory(partner);
first = partner.ThingID; first = partner.ThingID;
SexPartnerHistory history = partner.GetPartnerHistory(); SexPartnerHistory history = partner.GetPartnerHistory();
firstsextickabs = GenTicks.TicksAbs;
if (history != null) if (history != null)
{ {
history.TakeSomeonesVirgin(parent as Pawn); history.TakeSomeonesVirgin(parent as Pawn);
@ -366,6 +447,7 @@ namespace RJWSexperience
int maxindex = 0; int maxindex = 0;
string mostID = Keyed.Unknown; string mostID = Keyed.Unknown;
string bestID = Keyed.Unknown; string bestID = Keyed.Unknown;
totalsexcache = 0; totalsexcache = 0;
totalrapedcache = 0; totalrapedcache = 0;
totalbeenrapedcache = 0; totalbeenrapedcache = 0;
@ -431,6 +513,10 @@ namespace RJWSexperience
mostpartnercache = mostID; mostpartnercache = mostID;
bestpartnercache = bestID; bestpartnercache = bestID;
recentsextickabscache = histories.TryGetValue(recentpartner)?.RecentSexTickAbs ?? 0;
mostsextickabscache = histories.TryGetValue(mostpartnercache)?.RecentSexTickAbs ?? 0;
bestsextickabscache = histories.TryGetValue(bestpartnercache)?.BestSexTickAbs ?? 0;
racetotalsat.Clear(); racetotalsat.Clear();
allpartners.Clear(); allpartners.Clear();
} }
@ -492,6 +578,8 @@ namespace RJWSexperience
protected float bestsatisfaction = 0; protected float bestsatisfaction = 0;
protected bool itookvirgin = false; protected bool itookvirgin = false;
protected bool incest = false; protected bool incest = false;
protected int recentsextickabs = 0;
protected int bestsextickabs = 0;
public string Label public string Label
{ {
@ -578,7 +666,35 @@ namespace RJWSexperience
return rapedme; return rapedme;
} }
} }
public int RecentSexTickAbs
{
get
{
return recentsextickabs;
}
}
public int BestSexTickAbs
{
get
{
return bestsextickabs;
}
}
public int BestSexElapsedTicks
{
get
{
return GenTicks.TicksAbs - bestsextickabs;
}
}
public string BestSexDays
{
get
{
if (bestsextickabs != 0) return Keyed.RS_HadBestSexDaysAgo(GenDate.ToStringTicksToDays(BestSexElapsedTicks) + " " + Keyed.RS_Ago);
return "";
}
}
public SexHistory() { } public SexHistory() { }
public SexHistory(Pawn pawn, bool incest = false) public SexHistory(Pawn pawn, bool incest = false)
@ -601,6 +717,8 @@ namespace RJWSexperience
Scribe_Values.Look(ref bestsatisfaction, "bestsatisfaction", bestsatisfaction, true); Scribe_Values.Look(ref bestsatisfaction, "bestsatisfaction", bestsatisfaction, true);
Scribe_Values.Look(ref itookvirgin, "itookvirgin", itookvirgin, true); Scribe_Values.Look(ref itookvirgin, "itookvirgin", itookvirgin, true);
Scribe_Values.Look(ref incest, "incest", incest, true); Scribe_Values.Look(ref incest, "incest", incest, true);
Scribe_Values.Look(ref recentsextickabs, "recentsextickabs", recentsextickabs, true);
Scribe_Values.Look(ref bestsextickabs, "bestsextickabs", bestsextickabs, true);
} }
public void RecordSex(SexProps props) public void RecordSex(SexProps props)
@ -617,6 +735,8 @@ namespace RJWSexperience
raped++; raped++;
} }
} }
recentsextickabs = GenTicks.TicksAbs;
} }
public void RecordSatisfaction(SexProps props, float satisfaction) public void RecordSatisfaction(SexProps props, float satisfaction)
@ -626,6 +746,7 @@ namespace RJWSexperience
orgasms++; orgasms++;
bestsextype = props.sexType; bestsextype = props.sexType;
bestsatisfaction = satisfaction; bestsatisfaction = satisfaction;
bestsextickabs = GenTicks.TicksAbs;
} }
} }

View File

@ -81,9 +81,18 @@ namespace RJWSexperience.UI
public static string GetStatExplanation(Pawn pawn, StatDef stat, float val) public static string GetStatExplanation(Pawn pawn, StatDef stat, float val)
{ {
if (!pawn.Dead)
return stat.description + "\n" + return stat.description + "\n" +
stat.Worker.GetExplanationFull(StatRequest.For(pawn), ToStringNumberSense.Undefined, val); stat.Worker.GetExplanationFull(StatRequest.For(pawn), ToStringNumberSense.Undefined, val);
return "Dead".Translate();
} }
public static string GetSexDays(int absticks, bool printUnknown = false)
{
if (absticks != 0) return GenDate.ToStringTicksToDays(GenTicks.TicksAbs - absticks) + " " + Keyed.RS_Ago;
else if (printUnknown) return Keyed.Unknown;
else return "";
}
} }
} }

View File

@ -212,9 +212,10 @@ namespace RJWSexperience.UI
FillableBarLabeled(bestsexRect,String.Format(Keyed.RS_Best_Sextype+": {0}", Keyed.Sextype[(int)history.BestSextype]), p / 2, HistoryUtility.SextypeColor[(int)history.BestSextype], Texture2D.blackTexture, null, String.Format("{0:P2}", p)); FillableBarLabeled(bestsexRect,String.Format(Keyed.RS_Best_Sextype+": {0}", Keyed.Sextype[(int)history.BestSextype]), p / 2, HistoryUtility.SextypeColor[(int)history.BestSextype], Texture2D.blackTexture, null, String.Format("{0:P2}", p));
if (history.IamFirst) str += "\n" + Keyed.RS_LostVirgin(history.Label, pawn.LabelShort); if (history.IamFirst) str += "\n" + Keyed.RS_LostVirgin(history.Label, pawn.LabelShort);
str += "\n" + history.BestSexDays;
TooltipHandler.TipRegion(rect, str); TooltipHandler.TipRegion(rect, str);
} }
else else
{ {
@ -226,11 +227,12 @@ namespace RJWSexperience.UI
} }
} }
protected void DrawSexInfoCard(Rect rect, SexHistory history, string label, string tooltip) protected void DrawSexInfoCard(Rect rect, SexHistory history, string label, string tooltip, string rightlabel = "")
{ {
Rect labelRect = new Rect(rect.x, rect.y, rect.width, FONTHEIGHT); Rect labelRect = new Rect(rect.x, rect.y, rect.width, FONTHEIGHT);
Rect infoRect = new Rect(rect.x, rect.y + FONTHEIGHT, rect.width, rect.height - FONTHEIGHT); Rect infoRect = new Rect(rect.x, rect.y + FONTHEIGHT, rect.width, rect.height - FONTHEIGHT);
GUI.Label(labelRect, label, fontstyleleft); GUI.Label(labelRect, label, fontstyleleft);
GUI.Label(labelRect, rightlabel, fontstyleright);
DrawInfoWithPortrait(infoRect,history, tooltip); DrawInfoWithPortrait(infoRect,history, tooltip);
@ -243,10 +245,10 @@ namespace RJWSexperience.UI
{ {
Listing_Standard listmain = new Listing_Standard(); Listing_Standard listmain = new Listing_Standard();
listmain.Begin(rect.ContractedBy(4f)); listmain.Begin(rect.ContractedBy(4f));
DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetRecentPartnersHistory, Keyed.RS_Recent_Sex_Partner, Keyed.RS_Recent_Sex_Partner_ToolTip); DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetRecentPartnersHistory, Keyed.RS_Recent_Sex_Partner, Keyed.RS_Recent_Sex_Partner_ToolTip, history.RecentSexDays);
DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetFirstPartnerHistory, Keyed.RS_First_Sex_Partner, Keyed.RS_First_Sex_Partner_ToolTip); DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetFirstPartnerHistory, Keyed.RS_First_Sex_Partner, Keyed.RS_First_Sex_Partner_ToolTip, history.FirstSexDays);
DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetMostPartnerHistory, Keyed.RS_Most_Sex_Partner, Keyed.RS_Most_Sex_Partner_ToolTip); DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetMostPartnerHistory, Keyed.RS_Most_Sex_Partner, Keyed.RS_Most_Sex_Partner_ToolTip, history.MostSexDays);
DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetBestSexPartnerHistory, Keyed.RS_Best_Sex_Partner, Keyed.RS_Best_Sex_Partner_ToolTip); DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), history.GetBestSexPartnerHistory, Keyed.RS_Best_Sex_Partner, Keyed.RS_Best_Sex_Partner_ToolTip, history.BestSexDays);
GUI.Label(listmain.GetRect(FONTHEIGHT), Keyed.RS_PreferRace, fontstyleleft); GUI.Label(listmain.GetRect(FONTHEIGHT), Keyed.RS_PreferRace, fontstyleleft);
DrawPreferRace(listmain.GetRect(66f+15f)); DrawPreferRace(listmain.GetRect(66f+15f));
listmain.GetRect(15f); listmain.GetRect(15f);
@ -354,11 +356,11 @@ namespace RJWSexperience.UI
tmp = listmain.GetRect(FONTHEIGHT); tmp = listmain.GetRect(FONTHEIGHT);
p = pawn.records.GetValue(VariousDefOf.Lust); p = pawn.records.GetValue(VariousDefOf.Lust);
FillableBarLabeled(tmp, String.Format(Keyed.Lust +": {0:0.00}", p), Mathf.Clamp01(p.Normalization(-Configurations.LustLimit*3, Configurations.LustLimit*3)), HistoryUtility.Slaanesh, Texture2D.blackTexture, null, String.Format(xxx.sex_drive_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.GetStatValue(xxx.sex_drive_stat))); FillableBarLabeled(tmp, String.Format(Keyed.Lust +": {0:0.00}", p), Mathf.Clamp01(p.Normalization(-Configurations.LustLimit*3, Configurations.LustLimit*3)), HistoryUtility.Slaanesh, Texture2D.blackTexture, null, String.Format(xxx.sex_drive_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.Dead ? 0 : pawn.GetStatValue(xxx.sex_drive_stat)));
listmain.Gap(1f); listmain.Gap(1f);
if (Mouse.IsOver(tmp)) if (Mouse.IsOver(tmp))
{ {
TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.sex_drive_stat, pawn.GetStatValue(xxx.sex_drive_stat))); TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.sex_drive_stat, pawn.Dead ? 0 : pawn.GetStatValue(xxx.sex_drive_stat)));
} }
p = history.GetBestSextype(out xxx.rjwSextype sextype) / BASESAT; p = history.GetBestSextype(out xxx.rjwSextype sextype) / BASESAT;
@ -414,27 +416,27 @@ namespace RJWSexperience.UI
if (p < history.BeenRapedCount) if (p < history.BeenRapedCount)
{ {
p = history.BeenRapedCount; p = history.BeenRapedCount;
FillableBarLabeled(tmp, String.Format(Keyed.RS_BeenRaped + ": {0}", p), p / 50, Texture2D.grayTexture, Texture2D.blackTexture, null, String.Format(xxx.vulnerability_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.GetStatValue(xxx.vulnerability_stat))); FillableBarLabeled(tmp, String.Format(Keyed.RS_BeenRaped + ": {0}", p), p / 50, Texture2D.grayTexture, Texture2D.blackTexture, null, String.Format(xxx.vulnerability_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.Dead ? 0 : pawn.GetStatValue(xxx.vulnerability_stat)));
listmain.Gap(1f); listmain.Gap(1f);
} }
else else
{ {
FillableBarLabeled(tmp, String.Format(Keyed.RS_RapedSomeone + ": {0}", p), p / 50, HistoryUtility.Khorne, Texture2D.blackTexture, null, String.Format(xxx.vulnerability_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.GetStatValue(xxx.vulnerability_stat))); FillableBarLabeled(tmp, String.Format(Keyed.RS_RapedSomeone + ": {0}", p), p / 50, HistoryUtility.Khorne, Texture2D.blackTexture, null, String.Format(xxx.vulnerability_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.Dead ? 0 : pawn.GetStatValue(xxx.vulnerability_stat)));
listmain.Gap(1f); listmain.Gap(1f);
} }
if (Mouse.IsOver(tmp)) if (Mouse.IsOver(tmp))
{ {
TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.vulnerability_stat, pawn.GetStatValue(xxx.vulnerability_stat))); TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.vulnerability_stat, pawn.Dead ? 0 : pawn.GetStatValue(xxx.vulnerability_stat)));
} }
p = pawn.GetStatValue(xxx.sex_satisfaction); p = pawn.Dead ? 0 : pawn.GetStatValue(xxx.sex_satisfaction);
tmp = listmain.GetRect(FONTHEIGHT); tmp = listmain.GetRect(FONTHEIGHT);
FillableBarLabeled(tmp, String.Format(xxx.sex_satisfaction.LabelCap.CapitalizeFirst() + ": {0:P2}", p), p/2, HistoryUtility.Satisfaction, Texture2D.blackTexture); FillableBarLabeled(tmp, String.Format(xxx.sex_satisfaction.LabelCap.CapitalizeFirst() + ": {0:P2}", p), p/2, HistoryUtility.Satisfaction, Texture2D.blackTexture);
listmain.Gap(1f); listmain.Gap(1f);
if (Mouse.IsOver(tmp)) if (Mouse.IsOver(tmp))
{ {
TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.sex_satisfaction, pawn.GetStatValue(xxx.sex_satisfaction))); TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.sex_satisfaction, pawn.Dead ? 0 : pawn.GetStatValue(xxx.sex_satisfaction)));
} }
//p = pawn.GetStatValue(xxx.vulnerability_stat); //p = pawn.GetStatValue(xxx.vulnerability_stat);
@ -444,16 +446,16 @@ namespace RJWSexperience.UI
SkillRecord skill = pawn.skills?.GetSkill(VariousDefOf.SexSkill); SkillRecord skill = pawn.skills?.GetSkill(VariousDefOf.SexSkill);
p = skill?.Level ?? 0; p = skill?.Level ?? 0;
tmp = listmain.GetRect(FONTHEIGHT); tmp = listmain.GetRect(FONTHEIGHT);
FillableBarLabeled(tmp, String.Format(Keyed.RS_SexSkill + ": {0}, {1:P2}", p, skill?.xpSinceLastLevel/ skill?.XpRequiredForLevelUp), p / 20, HistoryUtility.Tzeentch, Texture2D.blackTexture, null, String.Format(xxx.sex_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.GetStatValue(xxx.sex_stat)), HistoryUtility.PassionBG[(int)(skill?.passion ?? 0)]); FillableBarLabeled(tmp, String.Format(Keyed.RS_SexSkill + ": {0}, {1:P2}", p, skill?.xpSinceLastLevel/ skill?.XpRequiredForLevelUp), p / 20, HistoryUtility.Tzeentch, Texture2D.blackTexture, null, String.Format(xxx.sex_stat.LabelCap.CapitalizeFirst() + ": {0:P2}", pawn.Dead ? 0 : pawn.GetStatValue(xxx.sex_stat)), HistoryUtility.PassionBG[(int)(skill?.passion ?? 0)]);
if (Mouse.IsOver(tmp)) if (Mouse.IsOver(tmp))
{ {
TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.sex_stat, pawn.GetStatValue(xxx.sex_stat))); TooltipHandler.TipRegion(tmp, RJWUIUtility.GetStatExplanation(pawn, xxx.sex_stat, pawn.Dead ? 0 : pawn.GetStatValue(xxx.sex_stat)));
} }
listmain.Gap(1f); listmain.Gap(1f);
if (selectedPawn != null) DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), selectedPawn, Keyed.RS_Selected_Partner, Keyed.RS_Selected_Partner); if (selectedPawn != null) DrawSexInfoCard(listmain.GetRect(CARDHEIGHT), selectedPawn, Keyed.RS_Selected_Partner, Keyed.RS_Selected_Partner, RJWUIUtility.GetSexDays(selectedPawn.RecentSexTickAbs));
else DrawExtraInfo(listmain.GetRect(CARDHEIGHT)); else DrawExtraInfo(listmain.GetRect(CARDHEIGHT));
listmain.End(); listmain.End();
@ -498,7 +500,13 @@ namespace RJWSexperience.UI
int sexindex = Sextype[i]; int sexindex = Sextype[i];
p = history.GetAVGSat(sexindex) / BASESAT; p = history.GetAVGSat(sexindex) / BASESAT;
string label = Keyed.RS_Sex_Info(Keyed.Sextype[sexindex], history.GetSexCount(sexindex).ToString()); string label = Keyed.RS_Sex_Info(Keyed.Sextype[sexindex], history.GetSexCount(sexindex).ToString());
FillableBarLabeled(listmain.GetRect(FONTHEIGHT),label, p / 2, HistoryUtility.SextypeColor[sexindex], Texture2D.blackTexture, null, Keyed.RS_SAT_AVG(String.Format("{0:P2}", p))); Rect tmpRect = listmain.GetRect(FONTHEIGHT);
FillableBarLabeled(tmpRect,label, p / 2, HistoryUtility.SextypeColor[sexindex], Texture2D.blackTexture, null, Keyed.RS_SAT_AVG(String.Format("{0:P2}", p)));
if (Mouse.IsOver(tmpRect))
{
TooltipHandler.TipRegion(tmpRect, Keyed.RS_LastSex.CapitalizeFirst() + ": " + history.SextypeRecentDays(Sextype[i]));
}
listmain.Gap(1f); listmain.Gap(1f);
} }

View File

@ -1,3 +1,8 @@
Version Beta 1.0.2.2
- non-player faction pawns no longer use cum buckets
- fixed sex history error with dead pawns
- added recent sex time
Version Beta 1.0.2.1 Version Beta 1.0.2.1
- messages about virginity loss will not be shown if the record randomizer is off - messages about virginity loss will not be shown if the record randomizer is off
- fixed rituals not worked properly - fixed rituals not worked properly