예제 #1
0
        public ExtendedPerkModifiers(Creature parent)
        {
            source = parent ?? throw new ArgumentNullException(nameof(parent));
            parent.womb.onBirth += Womb_onBirth;

            numTransformsDelta = new SignedBytePerkModifier(0, -2, 2);

            itemForgeCostReduction = new BytePerkModifier(0, 0, 2);


            replaceMasturbateWithMeditate = new ConditionalPerkModifier(false);

            lustRequiredForSexOffset = new SignedBytePerkModifier(0, -50, 50);
            corruptionRequiredOffset = new SignedBytePerkModifier(0, -50, 50);
            purityRequiredOffset     = new SignedBytePerkModifier(0, -50, 50);

            teaseStrengthMultiplier = new DoublePerkModifier(1, 0.5, 3);

            isASlut = new ConditionalPerkModifier(false);

            resistsTFBadEnds = new ConditionalPerkModifier(false);
        }
예제 #2
0
        public BasePerkModifiers(Creature sourceCreature)
        {
            source = sourceCreature ?? throw new ArgumentNullException(nameof(sourceCreature));

            //stats
            minStrengthDelta       = new SignedBytePerkModifier(0, 0, 50, CheckStrengthChanged);
            maxStrengthDelta       = new SignedBytePerkModifier(0, -50, 50, CheckStrengthChanged);
            strengthGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            strengthLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            minSpeedDelta       = new SignedBytePerkModifier(0, 0, 50, CheckSpeedChanged);
            maxSpeedDelta       = new SignedBytePerkModifier(0, -50, 50, CheckSpeedChanged);
            speedGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            speedLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            minToughnessDelta       = new SignedBytePerkModifier(0, 0, 50, CheckToughnessChanged);
            maxToughnessDelta       = new SignedBytePerkModifier(0, -50, 50, CheckToughnessChanged);
            toughnessGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            toughnessLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            minIntelligenceDelta       = new SignedBytePerkModifier(0, 0, 50, CheckIntelligenceChanged);
            maxIntelligenceDelta       = new SignedBytePerkModifier(0, -50, 50, CheckIntelligenceChanged);
            intelligenceGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            intelligenceLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            minLustDelta       = new SignedBytePerkModifier(0, 0, 50, CheckLustChanged);
            maxLustDelta       = new SignedBytePerkModifier(0, -50, 50, CheckLustChanged);
            lustGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            lustLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            minLibidoDelta       = new SignedBytePerkModifier(0, 0, 50, CheckLibidoChanged);
            maxLibidoDelta       = new SignedBytePerkModifier(0, -50, 50, CheckLibidoChanged);
            libidoGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            libidoLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            minCorruptionDelta       = new SignedBytePerkModifier(0, 0, 50, CheckCorruptionChanged);
            maxCorruptionDelta       = new SignedBytePerkModifier(0, -50, 50, CheckCorruptionChanged);
            corruptionGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            corruptionLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            minSensitivityDelta       = new SignedBytePerkModifier(0, 0, 50, CheckSensitivityChanged);
            maxSensitivityDelta       = new SignedBytePerkModifier(0, -50, 50, CheckSensitivityChanged);
            sensitivityGainMultiplier = new DoublePerkModifier(1, 0.25, 4);
            sensitivityLossMultiplier = new DoublePerkModifier(1, 0.25, 4);

            maxFatigueDelta           = new SignedBytePerkModifier(0, -50, 50, CheckFatigueChanged);
            fatigueGainMultiplier     = new DoublePerkModifier(1, 0.25, 4);
            fatigueRecoveryMultiplier = new DoublePerkModifier(1, 0.25, 4);

            maxHungerDelta           = new SignedBytePerkModifier(0, -50, 50, CheckHungerChanged);
            hungerGainMultiplier     = new DoublePerkModifier(1, 0.25, 4);
            hungerRecoveryMultiplier = new DoublePerkModifier(1, 0.25, 4);

            gemsGainRate = new DoublePerkModifier(1, 0.66667, 1.5);


            healthGainMultiplier = new DoublePerkModifier(1, 0.5, 3);

            //NYI
            combatDamageModifier = new DoublePerkModifier(1, 0.1, 5);
            //NYI
            magicalSpellCost  = new DoublePerkModifier(1, .25, 2);
            physicalSpellCost = new DoublePerkModifier(1, .25, 2);
            //NYI
            armorEffectivenessMultiplier = new DoublePerkModifier(0.5, 3);
            //end NYIs.
            //Implemented.
            perkBonusMaxHp = new UnsignedShortPerkModifier(0, 0, 5000, CheckHpChanged);

            //default wetness
            defaultVaginalWetness = new VaginalWetnessPerkModifier(VaginalWetness.NORMAL, VaginalWetness.DRY, VaginalWetness.SLAVERING);
            minVaginalWetness     = new VaginalWetnessPerkModifier(VaginalWetness.DRY, VaginalWetness.DRY, VaginalWetness.DROOLING, CheckVaginalWetnessChanged);
            maxVaginalWetness     = new VaginalWetnessPerkModifier(VaginalWetness.SLAVERING, VaginalWetness.WET, VaginalWetness.SLAVERING, CheckVaginalWetnessChanged);

            defaultVaginalLooseness = new VaginalLoosenessPerkModifier(VaginalLooseness.TIGHT, VaginalLooseness.TIGHT, VaginalLooseness.CLOWN_CAR_WIDE);
            minVaginalLooseness     = new VaginalLoosenessPerkModifier(VaginalLooseness.TIGHT, VaginalLooseness.TIGHT, VaginalLooseness.GAPING, CheckVaginalLoosenessChanged);
            maxVaginalLooseness     = new VaginalLoosenessPerkModifier(VaginalLooseness.CLOWN_CAR_WIDE, VaginalLooseness.LOOSE, VaginalLooseness.CLOWN_CAR_WIDE, CheckVaginalLoosenessChanged);

            defaultAnalWetness = new AnalWetnessPerkModifier(AnalWetness.NORMAL, AnalWetness.NORMAL, AnalWetness.SLIME_DROOLING);
            minAnalWetness     = new AnalWetnessPerkModifier(AnalWetness.NORMAL, AnalWetness.NORMAL, AnalWetness.DROOLING, CheckAnalWetnessChanged);
            maxAnalWetness     = new AnalWetnessPerkModifier(AnalWetness.SLIME_DROOLING, AnalWetness.MOIST, AnalWetness.SLIME_DROOLING, CheckAnalWetnessChanged);

            defaultAnalLooseness = new AnalLoosenessPerkModifier(AnalLooseness.NORMAL, AnalLooseness.NORMAL, AnalLooseness.GAPING);
            minAnalLooseness     = new AnalLoosenessPerkModifier(AnalLooseness.NORMAL, AnalLooseness.NORMAL, AnalLooseness.STRETCHED, CheckAnalLoosenessChanged);
            maxAnalLooseness     = new AnalLoosenessPerkModifier(AnalLooseness.GAPING, AnalLooseness.LOOSE, AnalLooseness.GAPING, CheckAnalLoosenessChanged);


            treatCalculationsAsIfAtMaxLust   = new ConditionalPerkModifier(false);
            alwaysLactatingAtMaximumCapacity = new ConditionalPerkModifier(false);

            alwaysProducingMaxCum = new ConditionalPerkModifier(false, CheckCumMax);
            bonusAdditionalCum    = new UnsignedIntegerPerkModifier(0, 0, 5000, CheckCumAdd);
            bonusCumMultiplier    = new DoublePerkModifier(1, 0.25, 100, CheckCumMult);

            newCockSizeDelta     = new DoublePerkModifier(0);
            cockGrowthMultiplier = new DoublePerkModifier(1, 0.5, 3);
            cockShrinkMultiplier = new DoublePerkModifier(1, 0.5, 3);
            newCockDefaultSize   = new DoublePerkModifier(C**k.DEFAULT_COCK_LENGTH, C**k.DEFAULT_COCK_LENGTH);
            minCockSize          = new DoublePerkModifier(C**k.MIN_COCK_LENGTH, C**k.MIN_COCK_LENGTH, onChange: MinCockChanged);

            perkBonusVirilityMultiplier = new DoublePerkModifier(1, 0.2, 1.5);
            perkBonusVirility           = new SignedBytePerkModifier(0, -50, 50);

            perkBasedBonusVaginalCapacity = new UnsignedShortPerkModifier(0, 0, ushort.MaxValue, VaginalCapacityChanged);

            defaultNewClitSize = new DoublePerkModifier(C**t.DEFAULT_CLIT_SIZE, C**t.DEFAULT_CLIT_SIZE, C**t.MAX_CLIT_SIZE);
            newClitSizeDelta   = new DoublePerkModifier(0, -5, 5);

            clitGrowthMultiplier = new DoublePerkModifier(1, 0.5, 3);
            clitShrinkMultiplier = new DoublePerkModifier(1, 0.5, 3);

            minClitSize = new DoublePerkModifier(C**t.DEFAULT_CLIT_SIZE, C**t.DEFAULT_CLIT_SIZE, C**t.MAX_CLIT_SIZE, MinClitChanged);

            femaleNewBreastCupSizeDelta = new SignedBytePerkModifier(0, -5, 5);

            femaleNewBreastDefaultCupSize = new CupSizePerkModifier(CupSize.C, CupSize.FLAT, CupSize.JACQUES00);

            maleNewBreastCupSizeDelta = new SignedBytePerkModifier(0, -5, 5);

            maleNewBreastDefaultCupSize = new CupSizePerkModifier(CupSize.FLAT, CupSize.FLAT, CupSize.JACQUES00);
            femaleMinCupSize            = new CupSizePerkModifier(CupSize.FLAT, CupSize.FLAT, CupSize.JACQUES00, MinFemaleCupChanged);
            maleMinCupSize = new CupSizePerkModifier(CupSize.FLAT, CupSize.FLAT, CupSize.JACQUES00, MinMaleCupChanged);

            titsGrowthMultiplier = new DoublePerkModifier(1, 0.5, 3);
            titsShrinkMultiplier = new DoublePerkModifier(1, 0.5, 3);

            newNippleDefaultLength = new DoublePerkModifier(NippleAggregate.MALE_DEFAULT_NIPPLE, NippleAggregate.MALE_DEFAULT_NIPPLE, NippleAggregate.MAX_NIPPLE_LENGTH);
            newNippleSizeDelta     = new DoublePerkModifier(0, -2, 2);

            nippleGrowthMultiplier = new DoublePerkModifier(1, 0.5, 3);
            nippleShrinkMultiplier = new DoublePerkModifier(1, 0.5, 3);

            newBallsDefaultSize = new BytePerkModifier(Balls.DEFAULT_BALLS_SIZE, Balls.MIN_BALLS_SIZE, Balls.MAX_BALLS_SIZE);
            newBallsSizeDelta   = new SignedBytePerkModifier(0, -4, 4);

            ballsGrowthMultiplier = new DoublePerkModifier(1, 0.5, 2);
            ballsShrinkMultiplier = new DoublePerkModifier(1, 0.5, 2);

            perkBasedBonusAnalCapacity = new UnsignedShortPerkModifier(0, 0, ushort.MaxValue, AnalCapacityChanged);

            //fertility is annoying b/c it fires off an event when this changes. normally i'd just make the property there a read, but it needs to know the previous data
            //and that's not always easy to get unless stored there and just copied when this updates.
            bonusFertility = new BytePerkModifier(0, 0, 50, FertilityChanged);

            pregnancySpeedModifier = new SignedBytePerkModifier(0, -5, 10);

            minButtSize = new BytePerkModifier(Butt.TIGHT, Butt.TIGHT, Butt.INCONCEIVABLY_BIG, MinButtChanged);
            minHipsSize = new BytePerkModifier(0, 0, Hips.INHUMANLY_WIDE, MinHipsChanged);
        }