Skip to content

Commit

Permalink
feat: rewrite to support mod bosses
Browse files Browse the repository at this point in the history
  • Loading branch information
Clazex committed Apr 5, 2022
1 parent f2a7eef commit 94ce8ab
Showing 1 changed file with 5 additions and 24 deletions.
29 changes: 5 additions & 24 deletions GodSeekerPlus/Modules/BossChallenge/P5Health.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,15 @@ namespace GodSeekerPlus.Modules.BossChallenge;
[Category(nameof(BossChallenge))]
[ToggleableLevel(ToggleableLevel.ChangeScene)]
internal sealed class P5Health : Module {
private static readonly Type scalerType = typeof(HealthManager)
.GetNestedType("HPScaleGG", BindingFlags.NonPublic);

private static readonly FieldInfo scalerField = ReflectionHelper
.GetFieldInfo(typeof(HealthManager), "hpScale");

private static readonly FieldInfo lv1Field = ReflectionHelper
.GetFieldInfo(scalerType, "level1");
private static readonly FieldInfo lv2Field = ReflectionHelper
.GetFieldInfo(scalerType, "level2");
private static readonly FieldInfo lv3Field = ReflectionHelper
.GetFieldInfo(scalerType, "level3");

private protected override void Load() =>
On.HealthManager.Start += NerfHP;
On.BossSceneController.Awake += OverrideLevel;

private protected override void Unload() =>
On.HealthManager.Start -= NerfHP;

private void NerfHP(On.HealthManager.orig_Start orig, HealthManager self) {
object scaler = scalerField.GetValue(self);

object hp = lv1Field.GetValue(scaler);
lv2Field.SetValue(scaler, hp);
lv3Field.SetValue(scaler, hp);

scalerField.SetValue(self, scaler);
On.BossSceneController.Awake -= OverrideLevel;

private void OverrideLevel(On.BossSceneController.orig_Awake orig, BossSceneController self) {
orig(self);

self.BossLevel = 0;
}
}

0 comments on commit 94ce8ab

Please sign in to comment.