mirror of
https://github.com/amevarashi/RJW-Sexperience.git
synced 2024-08-14 23:54:08 +00:00
More sophisticated CumAddictPartKindUsageRule
This commit is contained in:
parent
9789c97612
commit
e70903c16e
1 changed files with 54 additions and 10 deletions
|
@ -1,8 +1,12 @@
|
||||||
using rjw.Modules.Interactions.Contexts;
|
using RimWorld;
|
||||||
|
using rjw.Modules.Interactions.Contexts;
|
||||||
using rjw.Modules.Interactions.Enums;
|
using rjw.Modules.Interactions.Enums;
|
||||||
using rjw.Modules.Interactions.Rules.PartKindUsageRules;
|
using rjw.Modules.Interactions.Rules.PartKindUsageRules;
|
||||||
using rjw.Modules.Shared;
|
using rjw.Modules.Shared;
|
||||||
|
using RJWSexperience.Logs;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
namespace RJWSexperience.Interactions
|
namespace RJWSexperience.Interactions
|
||||||
{
|
{
|
||||||
|
@ -10,22 +14,62 @@ namespace RJWSexperience.Interactions
|
||||||
{
|
{
|
||||||
public IEnumerable<Weighted<LewdablePartKind>> ModifiersForDominant(InteractionContext context)
|
public IEnumerable<Weighted<LewdablePartKind>> ModifiersForDominant(InteractionContext context)
|
||||||
{
|
{
|
||||||
if (context.Internals.Dominant.Pawn.health?.hediffSet?.HasHediff(VariousDefOf.CumAddiction) ?? false)
|
if (context.Internals.Submissive.Parts.Penises.Any())
|
||||||
{
|
return GetForCumAddict(context.Internals.Dominant.Pawn);
|
||||||
// Cum addicts are really eager to use mouth
|
|
||||||
yield return new Weighted<LewdablePartKind>(Multipliers.DoubledPlus, LewdablePartKind.Mouth);
|
if (AddictionUtility.IsAddicted(context.Internals.Submissive.Pawn, VariousDefOf.Cum))
|
||||||
}
|
return GetForPartner();
|
||||||
|
|
||||||
|
return Enumerable.Empty<Weighted<LewdablePartKind>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Weighted<LewdablePartKind>> ModifiersForSubmissive(InteractionContext context)
|
public IEnumerable<Weighted<LewdablePartKind>> ModifiersForSubmissive(InteractionContext context)
|
||||||
{
|
{
|
||||||
Logs.LogManager.GetLogger<CumAddictPartKindUsageRule, Logs.DebugLogProvider>().Warning($"Called for {context.Internals.Submissive.Pawn.NameShortColored}");
|
if (context.Internals.Dominant.Parts.Penises.Any())
|
||||||
|
return GetForCumAddict(context.Internals.Submissive.Pawn);
|
||||||
|
|
||||||
if (context.Internals.Submissive.Pawn.health?.hediffSet?.HasHediff(VariousDefOf.CumAddiction) ?? false)
|
if (AddictionUtility.IsAddicted(context.Internals.Dominant.Pawn, VariousDefOf.Cum))
|
||||||
|
return GetForPartner();
|
||||||
|
|
||||||
|
return Enumerable.Empty<Weighted<LewdablePartKind>>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Addict wants to use mouth
|
||||||
|
/// </summary>
|
||||||
|
private IEnumerable<Weighted<LewdablePartKind>> GetForCumAddict(Pawn pawn)
|
||||||
|
{
|
||||||
|
var log = LogManager.GetLogger<CumAddictPartKindUsageRule, DebugLogProvider>();
|
||||||
|
log.Message($"Called for {pawn.NameShortColored}");
|
||||||
|
|
||||||
|
if (!(pawn.needs.TryGetNeed(VariousDefOf.Chemical_Cum) is Need_Chemical cumNeed))
|
||||||
|
yield break;
|
||||||
|
|
||||||
|
log.Message($"{pawn.NameShortColored} is cum addict, current desire level: {cumNeed.CurCategory}");
|
||||||
|
|
||||||
|
yield return new Weighted<LewdablePartKind>(Multipliers.DoubledPlus, LewdablePartKind.Mouth);
|
||||||
|
|
||||||
|
// In dire need also they are also refuse to use other orifices
|
||||||
|
switch (cumNeed.CurCategory)
|
||||||
{
|
{
|
||||||
// Cum addicts are really eager to use mouth
|
case DrugDesireCategory.Desire:
|
||||||
yield return new Weighted<LewdablePartKind>(Multipliers.DoubledPlus, LewdablePartKind.Mouth);
|
yield return new Weighted<LewdablePartKind>(Multipliers.VeryRare, LewdablePartKind.Anus);
|
||||||
|
yield return new Weighted<LewdablePartKind>(Multipliers.VeryRare, LewdablePartKind.Vagina);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DrugDesireCategory.Withdrawal:
|
||||||
|
yield return new Weighted<LewdablePartKind>(Multipliers.Never, LewdablePartKind.Anus);
|
||||||
|
yield return new Weighted<LewdablePartKind>(Multipliers.Never, LewdablePartKind.Vagina);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Addict asks partner to use penis
|
||||||
|
/// </summary>
|
||||||
|
private IEnumerable<Weighted<LewdablePartKind>> GetForPartner()
|
||||||
|
{
|
||||||
|
yield return new Weighted<LewdablePartKind>(Multipliers.Common, LewdablePartKind.Penis);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue