public static uint MultiplyExperience(uint monsterXP, VariantHandler enemyVariant)
        {
            if (RunArtifactManager.instance.IsArtifactEnabled(Artifact.Variance))
            {
                if (ConfigLoader.ArtifactIncreasesRewards)
                {
                    RewardMultiplier = ConfigLoader.SpawnRateMultiplier;
                }
            }
            // Mult = Multiplier
            float xpMultCommon   = ConfigLoader.CommonXPMult * RewardMultiplier;
            float xpMultUncommon = ConfigLoader.UncommonXPMult * RewardMultiplier;
            float xpMultRare     = ConfigLoader.RareXPMult * RewardMultiplier;

            switch (enemyVariant.tier)
            {
            case MonsterVariantTier.Common:
                float commonXP = Convert.ToInt32(monsterXP);
                commonXP *= xpMultCommon;
                return(Convert.ToUInt32(commonXP));

            case MonsterVariantTier.Uncommon:
                float uncommonXP = Convert.ToInt32(monsterXP);
                uncommonXP *= xpMultUncommon;
                return(Convert.ToUInt32(uncommonXP));

            case MonsterVariantTier.Rare:
                float rareXP = Convert.ToInt32(monsterXP);
                rareXP *= xpMultRare;
                return(Convert.ToUInt32(rareXP));
            }
            //This return shouldnt even exist, but its needed for the code to work.
            return(monsterXP);
        }
Beispiel #2
0
        public static void MonsterVariantStartHook(Action <VariantHandler> orig, VariantHandler self)
        {
            orig(self);
            var variantCharacterBody = self.GetComponent <CharacterBody>();

            if (variantCharacterBody.baseNameToken == "Ghost of Kjaro")
            {
                GiveEnemyEquipment(variantCharacterBody, "AffixRed");
            }
            if (variantCharacterBody.baseNameToken == "Ghost of Runald")
            {
                GiveEnemyEquipment(variantCharacterBody, "AffixWhite");
            }
        }
        public static void MonsterVariantAwakeHook(Action <VariantHandler> orig, VariantHandler self)
        {
            var origRate = self.spawnRate;

            if (RunArtifactManager.instance.IsArtifactEnabled(Variance))
            {
                self.spawnRate *= ConfigLoader.SpawnRateMultiplier;
                //Avoid potentially bad spawn rates
                if (self.spawnRate < 0)
                {
                    self.spawnRate = 0;
                }
                else if (self.spawnRate > 100)
                {
                    self.spawnRate = 100;
                }
            }
            orig(self);
            self.spawnRate = origRate;
        }
        public static void TryExtraReward(VariantHandler enemyVariant, CharacterBody victimBody, CharacterBody playerBody)
        {
            if (RunArtifactManager.instance.IsArtifactEnabled(Artifact.Variance))
            {
                if (ConfigLoader.ArtifactIncreasesRewards)
                {
                    RewardMultiplier = ConfigLoader.SpawnRateMultiplier;
                }
            }
            var whiteItems     = Run.instance.availableTier1DropList;                    //Grabs all the possible white items.
            var nextWhiteItems = Run.instance.treasureRng.RangeInt(0, whiteItems.Count); //Picks a random white item from the list above
            var greenItems     = Run.instance.availableTier2DropList;
            var nextGreenItems = Run.instance.treasureRng.RangeInt(0, greenItems.Count);
            var redItems       = Run.instance.availableTier3DropList;
            var nextRedItems   = Run.instance.treasureRng.RangeInt(0, redItems.Count);

            if (enemyVariant.tier == MonsterVariantTier.Common)
            {
                float rng = Random.Range(0f, 100f);
                if (rng < ConfigLoader.CommonRedChance * RewardMultiplier)
                {
                    CreateDroplet(redItems, nextRedItems, victimBody, playerBody);
                }
                else if (rng < ConfigLoader.CommonGreenChance * RewardMultiplier + ConfigLoader.CommonRedChance * RewardMultiplier)
                {
                    CreateDroplet(greenItems, nextGreenItems, victimBody, playerBody);
                }
                else if (rng < ConfigLoader.CommonWhiteChance * RewardMultiplier + ConfigLoader.CommonGreenChance * RewardMultiplier + ConfigLoader.CommonRedChance * RewardMultiplier)
                {
                    CreateDroplet(whiteItems, nextWhiteItems, victimBody, playerBody);
                }
            }
            if (enemyVariant.tier == MonsterVariantTier.Uncommon)
            {
                float rng = Random.Range(0f, 100f);
                if (rng < ConfigLoader.UncommonRedChance * RewardMultiplier)
                {
                    CreateDroplet(redItems, nextRedItems, victimBody, playerBody);
                }
                else if (rng < ConfigLoader.UncommonGreenChance * RewardMultiplier + ConfigLoader.UncommonRedChance * RewardMultiplier)
                {
                    CreateDroplet(greenItems, nextGreenItems, victimBody, playerBody);
                }
                else if (rng < ConfigLoader.UncommonWhiteChance * RewardMultiplier + ConfigLoader.UncommonGreenChance * RewardMultiplier + ConfigLoader.UncommonRedChance * RewardMultiplier)
                {
                    CreateDroplet(whiteItems, nextWhiteItems, victimBody, playerBody);
                }
            }
            if (enemyVariant.tier == MonsterVariantTier.Rare)
            {
                float rng = Random.Range(0f, 100f);
                if (rng < ConfigLoader.RareRedChance * RewardMultiplier)
                {
                    CreateDroplet(redItems, nextRedItems, victimBody, playerBody);
                }
                else if (rng < ConfigLoader.RareGreenChance * RewardMultiplier + ConfigLoader.RareRedChance * RewardMultiplier)
                {
                    CreateDroplet(greenItems, nextGreenItems, victimBody, playerBody);
                }
                else if (rng < ConfigLoader.RareWhiteChance * RewardMultiplier + ConfigLoader.RareGreenChance * RewardMultiplier + ConfigLoader.RareRedChance * RewardMultiplier)
                {
                    CreateDroplet(whiteItems, nextWhiteItems, victimBody, playerBody);
                }
            }
        }