diff --git a/mod/slugbase/jillo.json b/mod/slugbase/jillo.json index 2fca346..ceab8b9 100644 --- a/mod/slugbase/jillo.json +++ b/mod/slugbase/jillo.json @@ -37,6 +37,7 @@ "world_state": "Spear", "jillo/bounce": 0.6, - "jillo/immune_to_dart_maggots": true + "jillo/immune_to_dart_maggots": true, + "jillo/has_mark": true } } \ No newline at end of file diff --git a/src/Plugin.cs b/src/Plugin.cs index 460c668..c00f102 100644 --- a/src/Plugin.cs +++ b/src/Plugin.cs @@ -18,6 +18,7 @@ class Plugin : BaseUnityPlugin { BounceFeature.AddHooks(); ImmuneToDartMaggotsFeature.AddHooks(); + MarkFeature.AddHooks(); } catch (Exception err) { Logger.LogError($"error initializing: {err}"); } diff --git a/src/features/MarkFeature.cs b/src/features/MarkFeature.cs new file mode 100644 index 0000000..3007dce --- /dev/null +++ b/src/features/MarkFeature.cs @@ -0,0 +1,21 @@ +using SlugBase.Features; +using static SlugBase.Features.FeatureTypes; +using SlugBase; + +namespace JilloSlug; + +internal static class MarkFeature { + public static readonly PlayerFeature Mark = PlayerBool("jillo/has_mark"); + + public static void AddHooks() { + On.SaveState.ctor += SaveState_ctor; + } + + private static void SaveState_ctor(On.SaveState.orig_ctor orig, SaveState self, SlugcatStats.Name slugcat, PlayerProgression progression) { + orig(self, slugcat, progression); + + if (SlugBaseCharacter.TryGet(slugcat, out var chara) && Mark.TryGet(chara, out bool hasMark) && hasMark) { + self.deathPersistentSaveData.theMark = true; + } + } +}