using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using DiskCardGame; using HarmonyLib; using InscryptionAPI.Card; using InscryptionAPI.Helpers; using OLD_SA.Dialogue; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("OldSa_Dragon's Rumble_sigil")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("OldSa_Dragon's Rumble_sigil")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("bf186182-ce7f-4319-9508-a81b593ffaa4")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace OLD_SA.DragonsRumble; public class DragonRumbleAPI { public static FullAbility ability; public static void Init() { AbilityInfo val = ScriptableObject.CreateInstance(); ((Object)val).name = "DragonsRumble"; val.rulebookName = "Dragon's Rumble"; val.powerLevel = 4; Texture2D imageAsTexture = TextureHelper.GetImageAsTexture("OldSa_Dragons_Rumble.png", (FilterMode)0); ability = AbilityManager.Add("OLD_SA", val, typeof(DragonRumbleBehaviour), (Texture)(object)imageAsTexture); val.metaCategories = new List { (AbilityMetaCategory)0 }; FieldInfo field = typeof(AbilityInfo).GetField("rulebookDescription", BindingFlags.Instance | BindingFlags.NonPublic); if (field != null) { field.SetValue(val, "When [creature] dies, it deals 1 damage to a random enemy, increasing each time it takes damage."); } } public static IEnumerator DealDamage(PlayableCard source) { List targets = new List(); foreach (CardSlot slot in Singleton.Instance.OpponentSlotsCopy) { if ((Object)(object)slot.Card != (Object)null && !slot.Card.Dead) { targets.Add(slot); } } if (targets.Count != 0) { CardSlot target = targets[Random.Range(0, targets.Count)]; PlayableCard victim = target.Card; if (!((Object)(object)victim == (Object)null) && !victim.Dead) { yield return victim.TakeDamage(1, source); } } } } public class DragonRumbleBehaviour : AbilityBehaviour { public int triggerCount = 1; public override Ability Ability => DragonRumbleAPI.ability.Id; public void IncreaseTrigger() { triggerCount++; } public int GetTriggerCount() { return triggerCount; } public void ResetTrigger() { triggerCount = 1; } public override bool RespondsToDie(bool wasSacrifice, PlayableCard killer) { return !wasSacrifice; } public override IEnumerator OnDie(bool wasSacrifice, PlayableCard killer) { yield return ((AbilityBehaviour)this).PreSuccessfulTriggerSequence(); int count = triggerCount; for (int i = 0; i < count; i++) { yield return DragonRumbleAPI.DealDamage(((AbilityBehaviour)this).Card); } yield return SigilDialogueAPI.ShowFirstTime("DragonRumble", "It departs, leaving its enemies to suffer the consequences. But the Ring never ends, and neither does its return."); ResetTrigger(); } } [HarmonyPatch(typeof(PlayableCard), "TakeDamage")] public class DragonRumbleDamagePatch { public static void Prefix(PlayableCard __instance) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)__instance == (Object)null) && __instance.HasAbility(DragonRumbleAPI.ability.Id)) { DragonRumbleBehaviour component = ((Component)__instance).GetComponent(); if (!((Object)(object)component == (Object)null)) { component.IncreaseTrigger(); } } } } [BepInPlugin("oldsa.dragonsrumble", "Old SA Dragon's Rumble", "1.0.0")] public class Plugin : BaseUnityPlugin { private void Awake() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown DragonRumbleAPI.Init(); Harmony val = new Harmony("OLD_SA.DragonsRumble"); val.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Dragon's Rumble Loaded"); } }