mirror of
https://github.com/chev2/RoR2-Mods.git
synced 2025-10-30 08:11:54 +00:00
SacrificeDropRate v1.1.0
Add weights modifiers to the config, remove ModEnabled as it was causing issues
This commit is contained in:
parent
9df7d09fba
commit
3d9cfef6e2
4 changed files with 70 additions and 12 deletions
|
|
@ -3,25 +3,32 @@ using BepInEx.Configuration;
|
|||
using RoR2;
|
||||
using Mono.Cecil.Cil;
|
||||
using MonoMod.Cil;
|
||||
using R2API.Utils;
|
||||
using System.Reflection;
|
||||
using System.Collections.Generic;
|
||||
using System.Net.NetworkInformation;
|
||||
|
||||
namespace ChevRoR
|
||||
{
|
||||
[BepInDependency("com.bepis.r2api")]
|
||||
[BepInPlugin("com.ChevRoR.AlteredSacrificeArtifactRate", "Sacrifice Artifact Drop Rate Changer", "1.0.0")]
|
||||
[BepInPlugin("com.ChevRoR.AlteredSacrificeArtifactRate", "Sacrifice Artifact Drop Rate Changer", "1.1.0")]
|
||||
public class AlteredSacrificeArtifactRate : BaseUnityPlugin
|
||||
{
|
||||
public static ConfigEntry<bool> ModEnabled { get; set; }
|
||||
public static ConfigEntry<float> DropRateModifier { get; set; }
|
||||
public static ConfigEntry<bool> CustomWeightsEnabled { get; set; }
|
||||
public static ConfigEntry<float> Tier1Weight { get; set; }
|
||||
public static ConfigEntry<float> Tier2Weight { get; set; }
|
||||
public static ConfigEntry<float> Tier3Weight { get; set; }
|
||||
public static ConfigEntry<float> EquipmentWeight { get; set; }
|
||||
public static ConfigEntry<float> LunarWeight { get; set; }
|
||||
public static ConfigEntry<float> BossWeight { get; set; }
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
ModEnabled = Config.Bind("Main", "ModEnabled", true, "Changes whether or not the mod is enabled.");
|
||||
DropRateModifier = Config.Bind("Main", "SacrificeArtifactDropRate", 5f, "The modifier used for drop rate. 1 is 1% drop rate, 100 is 100%, etc.");
|
||||
DropRateModifier = Config.Bind("Main", "SacrificeArtifactDropRate", 5f, "Percent chance an item will drop from a monster on death. 1 is 1% drop rate, 100 is 100%, etc.");
|
||||
CustomWeightsEnabled = Config.Bind("Weights", "CustomWeightsEnabled", true, "If custom weights are enabled. Weights change how often some tiers of items will drop versus others.");
|
||||
|
||||
if (!ModEnabled.Value)
|
||||
return;
|
||||
|
||||
IL.RoR2.Artifacts.SacrificeArtifactManager.OnServerCharacterDeath += (il) =>
|
||||
IL.RoR2.Artifacts.SacrificeArtifactManager.OnServerCharacterDeath += (il) => // modification for overall drop % chance
|
||||
{
|
||||
ILCursor c = new ILCursor(il);
|
||||
c.GotoNext(
|
||||
|
|
@ -33,7 +40,44 @@ namespace ChevRoR
|
|||
c.Next.Operand = DropRateModifier.Value; // set to config value
|
||||
};
|
||||
|
||||
Console.print("\'Sacrifice Artifact Drop Rate Changer\' mod loaded");
|
||||
if (CustomWeightsEnabled.Value)
|
||||
{
|
||||
On.RoR2.BasicPickupDropTable.GenerateWeightedSelection += (orig, self, run) => // modification to add boss items to the droptable
|
||||
{
|
||||
orig(self, run); // call original code first
|
||||
if (BossWeight.Value > 0f)
|
||||
{
|
||||
WeightedSelection<List<PickupIndex>> pi = self.GetFieldValue<WeightedSelection<List<PickupIndex>>>("selector"); // get BasicPickupDropTable.selector
|
||||
print("Adding boss items to the drop table.");
|
||||
pi.AddChoice(run.availableBossDropList, BossWeight.Value);
|
||||
}
|
||||
};
|
||||
|
||||
On.RoR2.Artifacts.SacrificeArtifactManager.Init += (orig) => // modification for individual item tier weights
|
||||
{
|
||||
orig(); // call original code first
|
||||
|
||||
FieldInfo droptb = typeof(RoR2.Artifacts.SacrificeArtifactManager).GetField("dropTable", BindingFlags.NonPublic | BindingFlags.Static);
|
||||
var dropTb = droptb.GetValue(null);
|
||||
|
||||
float getFieldVal(string name) => dropTb.GetFieldValue<float>(name);
|
||||
void setFieldVal(string name, float val) { dropTb.SetFieldValue<float>(name, val); }
|
||||
|
||||
// config default values use the game's values in case the devs ever change the weights in the future
|
||||
Tier1Weight = Config.Bind("Weights", "Tier1Weight", getFieldVal("tier1Weight"), "Weight of Tier 1 (white) items.");
|
||||
Tier2Weight = Config.Bind("Weights", "Tier2Weight", getFieldVal("tier2Weight"), "Weight of Tier 2 (lime) items.");
|
||||
Tier3Weight = Config.Bind("Weights", "Tier3Weight", getFieldVal("tier3Weight"), "Weight of Tier 3 (red) items.");
|
||||
EquipmentWeight = Config.Bind("Weights", "EquipmentWeight", getFieldVal("equipmentWeight"), "Weight of Equipment (orange) items.");
|
||||
LunarWeight = Config.Bind("Weights", "LunarWeight", getFieldVal("lunarWeight"), "Weight of Lunar (cyan) items.");
|
||||
BossWeight = Config.Bind("Weights", "BossWeight", 0f, "Weight of Boss (yellow) items.");
|
||||
|
||||
setFieldVal("tier1Weight", Tier1Weight.Value);
|
||||
setFieldVal("tier2Weight", Tier2Weight.Value);
|
||||
setFieldVal("tier3Weight", Tier3Weight.Value);
|
||||
setFieldVal("equipmentWeight", EquipmentWeight.Value);
|
||||
setFieldVal("lunarWeight", LunarWeight.Value);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,24 @@ Configuration
|
|||
------------
|
||||
The mod config file can be found under `BepInEx/config/com.ChevRoR.AlteredSacrificeArtifactRate.cfg`.
|
||||
|
||||
**ModEnabled (boolean) - Default: true** - Enables/disables the entire mod.
|
||||
**SacrificeArtifactDropRate** - The percent chance that a monster will drop an item on death. Default is 5, which is a 5% chance.
|
||||
|
||||
**CustomWeightsEnabled** - If custom weights are enabled. Weights change how often some tiers of items will drop versus others.
|
||||
|
||||
**Tier1Weight** - Weight of Tier 1 (white) items.
|
||||
|
||||
**Tier2Weight** - Weight of Tier 2 (lime) items.
|
||||
|
||||
**Tier3Weight** - Weight of Tier 3 (red) items.
|
||||
|
||||
**EquipmentWeight** - Weight of Equipment (orange) items.
|
||||
|
||||
**LunarWeight** - Weight of Lunar (cyan) items.
|
||||
|
||||
**BossWeight** - Weight of Boss (yellow) items.
|
||||
|
||||
**SacrificeArtifactDropRate (float) Default: 5** - The percent chance that a monster will drop an item on death. Default is 5, which is a 5% chance.
|
||||
|
||||
Changelog
|
||||
------------
|
||||
1.1.0 - Added the ability to use custom weights for items in the config. Removed ModEnabled as it caused issues.
|
||||
1.0.0 - Initial mod
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "SacrificeArtifactRateChanger",
|
||||
"version_number": "1.0.0",
|
||||
"version_number": "1.1.0",
|
||||
"website_url": "https://github.com/chev2/RoR2-Mods",
|
||||
"description": "Lets you change the rate at which items drop from enemies when using the sacrifice artifact.",
|
||||
"dependencies": [
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Add table
Reference in a new issue