public static float TotalStableEssence(this BasicChar basicChar) { float baseStable = basicChar.Essence.StableEssence.Value; Perks perks = basicChar.Perks; if (perks.HasPerk(PerksTypes.EssenceHoarder)) { baseStable += perks.GetPerkLevel(PerksTypes.EssenceHoarder) * 300; } if (perks.HasPerk(PerksTypes.EssenceShaper)) { baseStable += perks.GetPerkLevel(PerksTypes.EssenceShaper) * 100; } return(baseStable); }
public void Digest(Action <ThePrey> digested, float toDigest = 2f) { float totalDigest = toDigest + (Perks.GetPerkLevel(VorePerks.DigestiveFluids) * 2f); for (int i = Preys.Count - 1; i >= 0; i--) { ThePrey prey = Preys[i]; DigestTo(prey.Digest(totalDigest)); // TODO test if working and implement way to toggle vore settings. if (Perks.HasPerk(VorePerks.OrgasmicFluids)) { float arusalGain = 5 * Perks.GetPerkLevel(VorePerks.OrgasmicFluids); if (prey.Prey.SexStats.GainArousal(arusalGain)) { if (Perks.HasPerk(VorePerks.DrainEssence)) { float toDrain = 6 * Perks.GetPerkLevel(VorePerks.DrainEssence); if (prey.Prey.CanDrainFemi() && prey.Prey.CanDrainMasc() && VoreSettings.DrainEss == ChooseEssence.Both) { pred.Essence.Masc.Gain(prey.Prey.Essence.Masc.Lose(toDrain / 2)); pred.Essence.Femi.Gain(prey.Prey.Essence.Femi.Lose(toDrain / 2)); } else if (prey.Prey.CanDrainMasc() && (VoreSettings.DrainEss == ChooseEssence.Masc || VoreSettings.DrainEss == ChooseEssence.Both)) { pred.Essence.Masc.Gain(prey.Prey.Essence.Masc.Lose(toDrain)); } else if (prey.Prey.CanDrainFemi() && (VoreSettings.DrainEss == ChooseEssence.Femi || VoreSettings.DrainEss == ChooseEssence.Both)) { pred.Essence.Femi.Gain(prey.Prey.Essence.Femi.Lose(toDrain)); } } } } if (prey.Prey.Body.Weight <= 1) { digested?.Invoke(prey); Preys.Remove(prey); } GainExp(Mathf.FloorToInt(totalDigest)); } }
public static float Discount(Perks perks) => perks.HasPerk(PerksTypes.Greedy) ? 0.02f * perks.GetPerkLevel(PerksTypes.Greedy) : 0f;
public static float ExtraGold(Perks perks) => perks.HasPerk(PerksTypes.Greedy) ? 0.05f * perks.GetPerkLevel(PerksTypes.Greedy) : 0f;
public static float AfterbattleHealPenalty(Perks perks) => perks.HasPerk(PerksTypes.Thug) ? 0.1f * perks.GetPerkLevel(PerksTypes.Thug) : 0;
public static float ExtraFatBurn(Perks perks) => perks.HasPerk(PerksTypes.Gluttony) ? 0.1f * perks.GetPerkLevel(PerksTypes.Gluttony) : 0;
public static float ExtraSensitive(Perks perks) => perks.HasPerk(PerksTypes.Delicate) ? 0.2f * perks.GetPerkLevel(PerksTypes.Delicate) : 0;
public static float LowerBurn(Perks perks) { return(perks.HasPerk(PerksTypes.LowMetabolism) ? 0.5f * perks.GetPerkLevel(PerksTypes.LowMetabolism) : 0); }
public static float ExtraStarvationPenalty(Perks perks) => perks.HasPerk(PerksTypes.Gluttony) ? 0.1f * perks.GetPerkLevel(PerksTypes.Gluttony) : 0;
public static float GetExtraDrained(Perks perks) => perks.HasPerk(PerksTypes.EssenceFlow) ? 10f * perks.GetPerkLevel(PerksTypes.EssenceFlow) : 0;
public static float ExtraGive(Perks perks) => perks.HasPerk(PerksTypes.EssenceShaper) ? 5f * perks.GetPerkLevel(PerksTypes.EssenceShaper) : 0;
public static float ExtraDrain(Perks perks) => perks.HasPerk(PerksTypes.EssenceThief) ? 5f * perks.GetPerkLevel(PerksTypes.EssenceThief) : 0;