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); }
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); } } }