Compare commits
3 Commits
b9a2466425
...
2ad91a1076
Author | SHA1 | Date |
---|---|---|
Vegapnk | 2ad91a1076 | |
Vegapnk | 1471eeea62 | |
Vegapnk | 5d35102338 |
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue