Compare commits

...

3 Commits

Author SHA1 Message Date
Vegapnk 2ad91a1076 Letter on Queen Birth 2023-06-04 17:03:11 +02:00
Vegapnk 1471eeea62 Notes about Gestation and Fertilization, #38 2023-06-04 16:48:45 +02:00
Vegapnk 5d35102338 Hardened Fertilin per Ingestion, should help with #39 2023-06-04 15:46:30 +02:00
3 changed files with 42 additions and 14 deletions

View File

@ -17,23 +17,29 @@ namespace RJW_Genes
public static void OffsetLifeForce(IGeneResourceDrain drain, float offset)
{
float old_value = drain.Resource.Value;
drain.Resource.Value += offset;
PostOffSetLifeForce(drain, old_value);
if (drain.Resource != null && drain.Resource.Active) {
float old_value = drain.Resource.Value;
drain.Resource.Value += offset;
PostOffSetLifeForce(drain, old_value);
}
}
public static void PostOffSetLifeForce(IGeneResourceDrain drain, float old_value)
{
if (old_value > 0.2f && drain.Resource.Value <= 0.2f)
{
//TODO: Mood debuff
}
else if (old_value > 0f && drain.Resource.Value <= 0f)
if (drain.Resource != null && drain.Resource.Active)
{
Pawn pawn = drain.Pawn;
if (!drain.Pawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_fertilin_craving))
if (old_value > 0.2f && drain.Resource.Value <= 0.2f)
{
drain.Pawn.health.AddHediff(HediffDefOf.rjw_genes_fertilin_craving);
//TODO: Mood debuff
}
else if (old_value > 0f && drain.Resource.Value <= 0f)
{
Pawn pawn = drain.Pawn;
if (!drain.Pawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_fertilin_craving))
{
drain.Pawn.health.AddHediff(HediffDefOf.rjw_genes_fertilin_craving);
}
}
}
}

View File

@ -33,6 +33,9 @@ namespace RJW_Genes
{
List<Hediff_InsectEgg> eggs = new List<Hediff_InsectEgg>();
pawn.health.hediffSet.GetHediffs<Hediff_InsectEgg>(ref eggs);
// This part works as intended and shows Non-Human Eggs too
//if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"Gene_InsectIncubator: Found {eggs.Count} Hediff_InsectEgg in {pawn}");
foreach (Hediff_InsectEgg egg in eggs)
{
@ -42,7 +45,17 @@ namespace RJW_Genes
if (!egg.fertilized && egg.implanter != null) {
egg.Fertilize(pawn);
if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"Gene_InsectIncubator: fertilized egg {egg} in {pawn}");
// DevNote Issue 38: Sometimes Eggs are not fertilized here, because the normal Fertilize Function is called which has an upper Limit on Gestation.
// I will not do anything about it here, maybe upstream, but I print here.
if (RJW_Genes_Settings.rjw_genes_detailed_debug)
{
if (egg.fertilized)
ModLog.Message($"Gene_InsectIncubator: fertilized egg {egg} in {pawn}");
else if (egg.GestationProgress > 0.5)
ModLog.Message($"Gene_InsectIncubator: Failed to fertilize {egg} in {pawn} due to high gestation progress");
else
ModLog.Message($"Gene_InsectIncubator: failed to fertiliz egg {egg} in {pawn}");
}
}
// DevNote: There is an issue with Eggs reaching too much gestation progress (>100%), which causes DownStream bugs. To avoid this, there are some extra checks in place.
else if (egg.fertilized && egg.GestationProgress <= .93)

View File

@ -50,8 +50,7 @@ namespace RJW_Genes
{
pawn.genes.SetXenotype(queenDef);
if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"{pawn} born as a new queen with xenotype {queenDef.defName} ({hiveOffspringChanceDef.queenChance * 100}% chance,rolled {roll})");
// TODO: Make a letter ? Letter doesn't show :(
Find.LetterStack.ReceiveLetter("New Queen", "A new Queen was born! Make sure to adress inheritance before the new queen reaches adolesence.", LetterDefOf.BabyBirth, (LookTargets)(Thing)pawn);
MakeQueenBornLetter(pawn);
}
// Case 2.b: New Drone born
else if (roll < hiveOffspringChanceDef.droneChance + hiveOffspringChanceDef.queenChance)
@ -115,6 +114,16 @@ namespace RJW_Genes
return null;
}
public static void MakeQueenBornLetter(Pawn bornQueen)
{
if (bornQueen == null) return;
var letter= LetterMaker.MakeLetter(
"New Queen", "A new Queen was born! Make sure to adress inheritance before the new queen reaches adolesence.", LetterDefOf.NeutralEvent, bornQueen
);
//letter.Start();
Find.LetterStack.ReceiveLetter(letter);
}
/// <summary>
/// Looks up if there is a Xenotype with Queen-Gene for the pawns parents.