Decompiled source of EX Rumia v0.2.0
lvalonexrumia.dll
Decompiled 4 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Cysharp.Threading.Tasks; using HarmonyLib; using LBoL.Base; using LBoL.Base.Extensions; using LBoL.ConfigData; using LBoL.Core; using LBoL.Core.Battle; using LBoL.Core.Battle.BattleActions; using LBoL.Core.Battle.Interactions; using LBoL.Core.Cards; using LBoL.Core.Intentions; using LBoL.Core.Randoms; using LBoL.Core.Stations; using LBoL.Core.StatusEffects; using LBoL.Core.Units; using LBoL.EntityLib.Cards.Character.Reimu; using LBoL.EntityLib.Cards.Enemy; using LBoL.EntityLib.Cards.Neutral.Black; using LBoL.EntityLib.Exhibits; using LBoL.EntityLib.StatusEffects.ExtraTurn; using LBoL.EntityLib.StatusEffects.Neutral.TwoColor; using LBoL.Presentation; using LBoLEntitySideloader; using LBoLEntitySideloader.Attributes; using LBoLEntitySideloader.Entities; using LBoLEntitySideloader.Resource; using LBoLEntitySideloader.Utils; using UnityEngine; using UnityEngine.Experimental.Rendering; using lvalonexrumia.Cards; using lvalonexrumia.Cards.Template; using lvalonexrumia.Config; using lvalonexrumia.Enemies; using lvalonexrumia.Enemies.Template; using lvalonexrumia.GunName; using lvalonexrumia.ImageLoader; using lvalonexrumia.Localization; using lvalonexrumia.Patches; using lvalonexrumia.StatusEffects; using lvalonmeme.StatusEffects; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("LBoL.Base")] [assembly: IgnoresAccessChecksTo("LBoL.ConfigData")] [assembly: IgnoresAccessChecksTo("LBoL.Core")] [assembly: IgnoresAccessChecksTo("LBoL.EntityLib")] [assembly: IgnoresAccessChecksTo("LBoL.Presentation")] [assembly: IgnoresAccessChecksTo("Untitled.ConfigDataBuilder.Base")] [assembly: AssemblyCompany("lvalonexrumia")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("lvalonexrumia")] [assembly: AssemblyTitle("lvalonexrumia")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace lvalonmeme.StatusEffects { public sealed class sedecreaseDef : lvalonexrumiaStatusEffectTemplate { public override Sprite LoadSprite() { return null; } } [EntityLogic(typeof(sedecreaseDef))] public sealed class sedecrease : StatusEffect { } public sealed class seincreaseDef : lvalonexrumiaStatusEffectTemplate { public override Sprite LoadSprite() { return null; } } [EntityLogic(typeof(seincreaseDef))] public sealed class seincrease : StatusEffect { } public sealed class sebosshealDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.RelativeEffects = new List<string> { "seincrease" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebosshealDef))] public sealed class sebossheal : StatusEffect { public override bool ForceNotShowDownText => true; } } namespace lvalonexrumia { [BepInPlugin("llbol.char.exrumia", "EX Rumia", "0.2.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInProcess("LBoL.exe")] public class BepinexPlugin : BaseUnityPlugin { public static string modUniqueID = "lvalonexrumia"; public static string playerName = "EXRumia"; public static bool useInGameModel = false; public static string modelName = "Youmu"; public static bool modelIsFlipped = true; public static List<ManaColor> offColors = new List<ManaColor> { (ManaColor)6, (ManaColor)1, (ManaColor)2, (ManaColor)5 }; public static ConfigEntry<bool> enableAct1Boss; public static CustomConfigEntry<bool> enableAct1BossEntry = new CustomConfigEntry<bool>(value: false, "Act 1 Boss", "EnableAct1Boss", "Act 1 Boss"); private static readonly Harmony harmony = PInfo.harmony; internal static ManualLogSource log; internal static TemplateSequenceTable sequenceTable = new TemplateSequenceTable(0); internal static IResourceSource embeddedSource = (IResourceSource)new EmbeddedSource(Assembly.GetExecutingAssembly()); internal static DirectorySource directorySource = new DirectorySource("llbol.char.exrumia", ""); private void Awake() { log = ((BaseUnityPlugin)this).Logger; enableAct1Boss = ((BaseUnityPlugin)this).Config.Bind<bool>(enableAct1BossEntry.Section, enableAct1BossEntry.Key, enableAct1BossEntry.Value, enableAct1BossEntry.Description); Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; CardIndexGenerator.PromiseClearIndexSet(); EntityManager.RegisterSelf(); harmony.PatchAll(); Func<Sprite> func = () => ResourceLoader.LoadSprite("BossIcon.png", (IResourceSource)(object)directorySource, (Rect?)null, 1, (Vector2?)null); EnemyUnitTemplate.AddBossNodeIcon("lvalonexrumia", func, (Assembly)null); } private void OnDestroy() { if (harmony != null) { harmony.UnpatchSelf(); } } } public static class PInfo { public const string GUID = "llbol.char.exrumia"; public const string Name = "EX Rumia"; public const string version = "0.2.0"; public static readonly Harmony harmony = new Harmony("llbol.char.exrumia"); } public class lvalonexrumiaLoadouts { public static string UltimateSkillA = "exulta"; public static string UltimateSkillB = "exultb"; public static string ExhibitA = "exexa"; public static string ExhibitB = "exexb"; public static List<string> DeckA = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "cardexaa", "cardexaa", "cardexab", "cardexab", "cardbite", "cardbloodwork" }; public static List<string> DeckB = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "cardexba", "cardexba", "cardexbb", "cardexbb", "cardexbb", "cardblooduse" }; public static PlayerUnitConfig playerUnitConfig; static lvalonexrumiaLoadouts() { //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Expected O, but got Unknown string modUniqueID = BepinexPlugin.modUniqueID; int? num = 0; ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).Black = 2; ((ManaGroup)(ref val)).Red = 2; ManaGroup val2 = val; playerUnitConfig = new PlayerUnitConfig(modUniqueID, true, "", 0, 1000, num, true, (int?)0, (ManaColor)3, (ManaColor)4, val2, "#FF0808", 100, 50, 0, UltimateSkillA, UltimateSkillB, ExhibitA, ExhibitB, (IReadOnlyList<string>)DeckA, (IReadOnlyList<string>)DeckB, 3, 3); } } public sealed class lvalonexrumiaDef : PlayerUnitTemplate { [EntityLogic(typeof(lvalonexrumiaDef))] public sealed class lvalonexrumia : PlayerUnit { } public UniTask<Sprite>? LoadSpellPortraitAsync { get; private set; } public override IdContainer GetId() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(BepinexPlugin.modUniqueID); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)lvalonexrumiaLocalization.PlayerUnitBatchLoc.AddEntity((EntityDefinition)(object)this); } public override PlayerImages LoadPlayerImages() { return lvalonexrumiaImageLoader.LoadPlayerImages(BepinexPlugin.playerName); } public override EikiSummonInfo AssociateEikiSummon() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown return new EikiSummonInfo(typeof(global::lvalonexrumia.Enemies.lvalonexrumia), (string)null); } public override PlayerUnitConfig MakeConfig() { return lvalonexrumiaLoadouts.playerUnitConfig; } } public abstract class toolbox { public static int hpfrompercent(Unit unit, int percent, bool maxhp) { if (unit == null) { return 0; } if (maxhp) { return Convert.ToInt32(Math.Round((double)unit.MaxHp * (double)percent / 100.0, MidpointRounding.AwayFromZero)); } return Convert.ToInt32(Math.Round((double)unit.Hp * (double)percent / 100.0, MidpointRounding.AwayFromZero)); } public static Card[] RollCardsCustomIgnore(RandomGen rng, CardWeightTable weightTable, int count, ManaGroup? manaLimit = null, bool colorLimit = false, bool applyFactors = false, bool battleRolling = false, bool ensureCount = false, Predicate<Card> filter = null) { GameMaster instance = Singleton<GameMaster>.Instance; GameRunController val = ((instance != null) ? instance.CurrentGameRun : null); if (val == null) { throw new InvalidOperationException("Rolling cards when run is not started."); } UniqueRandomPool<Type> val2 = val.CreateValidCardsPool(weightTable, manaLimit, colorLimit, applyFactors, battleRolling, (Predicate<CardConfig>)null); UniqueRandomPool<Card> val3 = new UniqueRandomPool<Card>(false); foreach (RandomPoolEntry<Type> item in val2) { Card val4 = Library.CreateCard(item.Elem); if (filter(val4)) { ((GameEntity)val4).GameRun = val; val3.Add(val4, item.Weight); } } return val3.SampleMany(rng, count, ensureCount); } public static Card[] RollCardsCustom(RandomGen rng, CardWeightTable weightTable, int count, ManaGroup? manaLimit = null, bool colorLimit = false, bool applyFactors = false, bool battleRolling = false, bool ensureCount = false, Predicate<Card> filter = null) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) GameMaster instance = Singleton<GameMaster>.Instance; GameRunController val = ((instance != null) ? instance.CurrentGameRun : null); if (val == null) { throw new InvalidOperationException("Rolling cards when run is not started."); } UniqueRandomPool<Type> val2 = val.CreateValidCardsPool(weightTable, manaLimit, colorLimit, applyFactors, battleRolling, (Predicate<CardConfig>)null); UniqueRandomPool<Card> val3 = new UniqueRandomPool<Card>(false); foreach (RandomPoolEntry<Type> item in val2) { Card val4 = Library.CreateCard(item.Elem); if (filter(val4)) { ManaGroup baseMana = val.BaseMana; if (((ManaGroup)(ref baseMana)).CanAfford(val4.Cost)) { ((GameEntity)val4).GameRun = val; val3.Add(val4, item.Weight); } } } return val3.SampleMany(rng, count, ensureCount); } public static Card[] RepeatableAllCards(RandomGen rng, CardWeightTable weightTable, int count, bool ensureCount = false, Predicate<Card> filter = null) { GameMaster instance = Singleton<GameMaster>.Instance; GameRunController val = ((instance != null) ? instance.CurrentGameRun : null); if (val == null) { throw new InvalidOperationException("Rolling cards when run is not started."); } UniqueRandomPool<Type> val2 = CreateAllCardsPool(weightTable); RepeatableRandomPool<Card> val3 = new RepeatableRandomPool<Card>(); foreach (RandomPoolEntry<Type> item in val2) { Card val4 = Library.CreateCard(item.Elem); if (filter(val4)) { ((GameEntity)val4).GameRun = val; val3.Add(val4, item.Weight); } } return val3.SampleMany(rng, count, ensureCount); } public static Card[] UniqueAllCards(RandomGen rng, CardWeightTable weightTable, int count, bool ensureCount = false, Predicate<Card> filter = null) { GameMaster instance = Singleton<GameMaster>.Instance; GameRunController val = ((instance != null) ? instance.CurrentGameRun : null); if (val == null) { throw new InvalidOperationException("Rolling cards when run is not started."); } UniqueRandomPool<Type> val2 = CreateAllCardsPool(weightTable); UniqueRandomPool<Card> val3 = new UniqueRandomPool<Card>(false); foreach (RandomPoolEntry<Type> item in val2) { Card val4 = Library.CreateCard(item.Elem); if (filter(val4)) { ((GameEntity)val4).GameRun = val; val3.Add(val4, item.Weight); } } return val3.SampleMany(rng, count, ensureCount); } public static UniqueRandomPool<Type> CreateAllCardsPool(CardWeightTable weightTable, [MaybeNull] Predicate<CardConfig> filter = null) { GameRunController currentGameRun = Singleton<GameMaster>.Instance.CurrentGameRun; HashSet<string> hashSet = new HashSet<string>(from e in currentGameRun.Player.Exhibits where e.OwnerId != null select e.OwnerId); UniqueRandomPool<Type> val = new UniqueRandomPool<Type>(false); foreach (var (type, obj) in EnumerateALLCardTypes()) { if (filter == null || filter(obj)) { val.Add(type, 1f); } } return val; } public static IEnumerable<(Type, CardConfig)> EnumerateALLCardTypes() { foreach (CardConfig item in CardConfig.AllConfig()) { Type type2 = TypeFactory<Card>.TryGetType(item.Id); if ((object)type2 != null) { yield return (type2, item); } } } public static IEnumerable<(Type, ExhibitConfig)> EnumerateALLExhibitTypes() { foreach (ExhibitConfig item in ExhibitConfig.AllConfig()) { Type type = TypeFactory<Exhibit>.TryGetType(item.Id); if ((object)type != null) { yield return (type, item); } } } public static UniqueRandomPool<Type> CreateAllExhibitsPool(ExhibitWeightTable weightTable, [MaybeNull] Predicate<ExhibitConfig> filter = null) { UniqueRandomPool<Type> result = new UniqueRandomPool<Type>(false); foreach (var item2 in EnumerateALLExhibitTypes()) { ExhibitConfig item = item2.Item2; if (filter != null && filter(item)) { } } return result; } public static Card createcardwithidBACKUP(string id) { UniqueRandomPool<Type> val = new UniqueRandomPool<Type>(false); foreach (var (type, val2) in EnumerateALLCardTypes()) { if (val2.Id == id) { val.Add(type, 1f); } } UniqueRandomPool<Card> val3 = new UniqueRandomPool<Card>(false); foreach (RandomPoolEntry<Type> item in val) { Card val4 = Library.CreateCard(item.Elem); val3.Add(val4, item.Weight); } return val3.Sample(RandomGen.InitGen); } public static Card createcardwithid(string id) { return TypeFactory<Card>.CreateInstance(TypeFactory<Card>.TryGetType(id)); } } } namespace lvalonexrumia.lvalonexrumiaUlt { public sealed class exultaDef : lvalonexrumiaUltTemplate { public override UltimateSkillConfig MakeConfig() { UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig(); defaulUltConfig.Damage = 10; defaulUltConfig.Value1 = 2; defaulUltConfig.Value2 = 3; defaulUltConfig.RelativeEffects = new List<string> { "sebloodmark" }; return defaulUltConfig; } } [EntityLogic(typeof(exultaDef))] public sealed class exulta : UltimateSkill { public exulta() { ((UltimateSkill)this).TargetType = (TargetType)1; ((UltimateSkill)this).GunName = GunNameID.GetGunFromId(7021); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { yield return (BattleAction)(object)PerformAction.Spell((Unit)(object)((UltimateSkill)this).Battle.Player, "exulta"); EnemyUnit enemy = selector.GetEnemy(((UltimateSkill)this).Battle); if (!((Unit)enemy).IsAlive || ((UltimateSkill)this).Battle.BattleShouldEnd) { yield break; } yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodmark>((Unit)(object)enemy, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true); for (int i = 0; i < ((UltimateSkill)this).Value2; i++) { if (((Unit)enemy).IsAlive && !((UltimateSkill)this).Battle.BattleShouldEnd) { yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (Unit)(object)enemy, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0); } } } } public sealed class exultbDef : lvalonexrumiaUltTemplate { public override UltimateSkillConfig MakeConfig() { UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig(); defaulUltConfig.Damage = 10; defaulUltConfig.Value1 = 1; defaulUltConfig.Value2 = 2; defaulUltConfig.RelativeEffects = new List<string> { "sebleed" }; return defaulUltConfig; } } [EntityLogic(typeof(exultbDef))] public sealed class exultb : UltimateSkill { public exultb() { ((UltimateSkill)this).TargetType = (TargetType)2; ((UltimateSkill)this).GunName = GunNameID.GetGunFromId(7071); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { yield return (BattleAction)(object)PerformAction.Spell((Unit)(object)((UltimateSkill)this).Battle.Player, "exultb"); foreach (EnemyUnit unit in ((UltimateSkill)this).Battle.AllAliveEnemies) { if (!((UltimateSkill)this).Battle.BattleShouldEnd) { yield return (BattleAction)(object)new ApplyStatusEffectAction<sebleed>((Unit)(object)unit, (int?)1, (int?)0, (int?)0, (int?)0, 0.2f, true); continue; } yield break; } if (!((UltimateSkill)this).Battle.BattleShouldEnd) { for (int i = 0; i < ((UltimateSkill)this).Value2; i++) { yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (IEnumerable<Unit>)((UltimateSkill)this).Battle.AllAliveEnemies, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0); } } } } public sealed class extenshadedDef : lvalonexrumiaUltTemplate { } [EntityLogic(typeof(extenshadedDef))] public sealed class extenshaded : UltimateSkill { protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { yield break; } } public sealed class exshadowcutDef : lvalonexrumiaUltTemplate { } [EntityLogic(typeof(exshadowcutDef))] public sealed class exshadowcut : UltimateSkill { protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { yield break; } } public sealed class exgojoDef : lvalonexrumiaUltTemplate { } [EntityLogic(typeof(exgojoDef))] public sealed class exgojo : UltimateSkill { protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { yield break; } } public class lvalonexrumiaUltTemplate : UltimateSkillTemplate { public override IdContainer GetId() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(lvalonexrumiaDefaultConfig.DefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)lvalonexrumiaLocalization.UltimateSkillsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return lvalonexrumiaImageLoader.LoadUltLoader((UltimateSkillTemplate)(object)this); } public override UltimateSkillConfig MakeConfig() { throw new NotImplementedException(); } public UltimateSkillConfig GetDefaulUltConfig() { return lvalonexrumiaDefaultConfig.DefaultUltConfig(); } } } namespace lvalonexrumia.StatusEffects { public sealed class seaccelDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "Graze" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seaccelDef))] public sealed class seaccel : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarting); } private IEnumerable<BattleAction> OnOwnerTurnStarting(UnitEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd) { yield break; } ((StatusEffect)this).NotifyActivating(); Unit owner = ((StatusEffect)this).Owner; if (owner != null && !owner.IsDead) { if (((StatusEffect)this).Level <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); yield break; } yield return (BattleAction)(object)new ApplyStatusEffectAction<Graze>(((StatusEffect)this).Owner, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class seadrenalineDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "seatkincrease", "sebloodclot" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seadrenalineDef))] public sealed class seadrenaline : sereact { public int atkincrease { get { if (((StatusEffect)this).Owner == null) { return 0; } return ((StatusEffect)this).Level * 5; } } protected override IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (!((StatusEffect)this).Battle.BattleShouldEnd && actionSource != this && amount < 0 && (receive == null || receive == ((StatusEffect)this).Battle.Player) && !((StatusEffect)this).Battle.BattleShouldEnd && ((Unit)((StatusEffect)this).Battle.Player).Hp < toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 50, maxhp: true)) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<seatkincrease>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)(((StatusEffect)this).Level * 5), (int?)0, (int?)0, (int?)0, 0.2f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodclot>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class seatkincreaseDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.Order = 20; defaultStatusEffectConfig.HasCount = true; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seatkincreaseDef))] public sealed class seatkincrease : StatusEffect { private int truecount = 0; public int truecounter => truecount; public override bool ForceNotShowDownText => true; protected override void OnAdded(Unit unit) { if (truecount == 0) { truecount = ((StatusEffect)this).Level; ((StatusEffect)this).Count = truecount; } ((StatusEffect)this).Level = 0; ((StatusEffect)this).HandleOwnerEvent<DamageDealingEventArgs>(((StatusEffect)this).Owner.DamageDealing, (GameEventHandler<DamageDealingEventArgs>)OnDamageDealing); ((StatusEffect)this).HandleOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdded, (GameEventHandler<StatusEffectApplyEventArgs>)OnStatusEffectAdded); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnTurnEnded); } private void OnStatusEffectAdded(StatusEffectApplyEventArgs args) { if (args.Effect is seatkincrease) { truecount += args.Effect.Level; ((StatusEffect)this).Count = truecount; ((StatusEffect)this).Level = 0; } } private IEnumerable<BattleAction> OnTurnEnded(UnitEventArgs args) { truecount = (int)((double)truecount / 10.0) * 5; ((StatusEffect)this).Count = truecount; if (((StatusEffect)this).Count <= 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } ((StatusEffect)this).NotifyActivating(); } private void OnDamageDealing(DamageDealingEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2) { damageInfo = args.DamageInfo; args.DamageInfo = ((DamageInfo)(ref damageInfo)).MultiplyBy((float)truecount * 1f / 100f + 1f); ((GameEventArgs)args).AddModifier((GameEntity)(object)this); if ((int)((GameEventArgs)args).Cause != 20) { ((StatusEffect)this).NotifyActivating(); } } } } public sealed class sebewaterDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebewaterDef))] public sealed class sebewater : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd || (!(args.Card is cardredblood) && !(args.Card is carddarkblood))) { yield break; } ((StatusEffect)this).NotifyActivating(); if (((StatusEffect)this).Battle.DiscardZone.Count > 0) { SelectCardInteraction interaction = new SelectCardInteraction(0, ((StatusEffect)this).Level, (IEnumerable<Card>)((StatusEffect)this).Battle.DiscardZone, (SelectedCardHandling)0) { Source = (GameEntity)(object)this }; yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false); IReadOnlyList<Card> cards = interaction.SelectedCards; if (cards.Count > 0) { foreach (Card card in cards) { yield return (BattleAction)new MoveCardToDrawZoneAction(card, (DrawZoneTarget)2); } } } yield return (BattleAction)new DrawManyCardAction(((StatusEffect)this).Level); } } public sealed class sebleedDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)1; defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sedecrease" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebleedDef))] public sealed class sebleed : StatusEffect { public int truecount { get { if (((StatusEffect)this).Owner != null) { return (int)Math.Ceiling((float)((StatusEffect)this).Owner.MaxHp * 0.01f); } return 0; } } public int lifenow { get { if (((StatusEffect)this).Owner != null) { return ((StatusEffect)this).Owner.Hp; } return 0; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).Count = (int)Math.Ceiling((float)unit.MaxHp * 0.01f); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(unit.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnTurnEnding); } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2) { ((StatusEffect)this).NotifyActivating(); if (!args.Target.IsNotAlive) { yield return (BattleAction)(object)new ChangeLifeAction(-(int)Math.Ceiling((float)args.Target.MaxHp * 0.01f), args.Target); } } } private IEnumerable<BattleAction> OnTurnEnding(UnitEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { ((StatusEffect)this).NotifyActivating(); if (((StatusEffect)this).Level > 1) { int level = ((StatusEffect)this).Level; ((StatusEffect)this).Level = level - 1; } else { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } } public sealed class sebleedslashDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodsword", "sebloodmark" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebleedslashDef))] public sealed class sebleedslash : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnded, (GameEventHandler<UnitEventArgs>)OnTurnEnded); } private void OnTurnEnded(UnitEventArgs args) { } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd && args.Card.Config.Colors.Contains((ManaColor)3)) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodsword>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class sebloodcircleDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodcircleDef))] public sealed class sebloodcircle : StatusEffect { public override bool ForceNotShowDownText => true; protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { List<Card> list = ((StatusEffect)this).Battle.ExileZone.Where((Card card) => card is carddarkblood || card is cardredblood).ToList(); if (((StatusEffect)this).Battle.BattleShouldEnd || list.Count == 0) { yield break; } ((StatusEffect)this).NotifyActivating(); SelectCardInteraction interaction = new SelectCardInteraction(0, list.Count, (IEnumerable<Card>)list, (SelectedCardHandling)0) { Source = (GameEntity)(object)this }; yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false); IReadOnlyList<Card> cards = interaction.SelectedCards; if (cards.Count <= 0) { yield break; } foreach (Card card2 in cards) { if (!((StatusEffect)this).Battle.HandIsFull) { yield return (BattleAction)new MoveCardAction(card2, (CardZone)2); } } } } public sealed class sebloodcircle2Def : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodcircle2Def))] public sealed class sebloodcircle2 : StatusEffect { public int heal { get { if (((StatusEffect)this).Owner == null) { return 0; } if (((StatusEffect)this).Level == 0) { return 0; } return toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, ((StatusEffect)this).Level, maxhp: true); } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).Highlight = true; ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnEnded, (GameEventHandler<UnitEventArgs>)OnTurnEnded); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageDealt, (EventSequencedReactor<DamageEventArgs>)OnDamageDealt); } private void OnTurnEnded(UnitEventArgs args) { ((StatusEffect)this).Highlight = true; } private IEnumerable<BattleAction> OnDamageDealt(DamageEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd && args.Target.StatusEffects != null && ((StatusEffect)this).Highlight) { DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2 && args.Target.HasStatusEffect<sebloodmark>()) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ChangeLifeAction(heal); ((StatusEffect)this).Highlight = false; } damageInfo = default(DamageInfo); } } } public sealed class sebloodclotDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 9; defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodclotDef))] public sealed class sebloodclot : StatusEffect { public int Value { get { if (((StatusEffect)this).Owner == null) { return 5; } if (((StatusEffect)this).Level == 0) { return 5; } return Math.Min(5 * ((StatusEffect)this).Level, 100); } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<DamageEventArgs>(unit.DamageReceiving, (GameEventHandler<DamageEventArgs>)OnDamageReceiving); ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.RoundEnded, (EventSequencedReactor<GameEventArgs>)OnRoundEnded); } private IEnumerable<BattleAction> OnRoundEnded(GameEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } private void OnDamageReceiving(DamageEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2) { ((DamageInfo)(ref damageInfo)).Damage = ((DamageInfo)(ref damageInfo)).Amount * (1f - (float)Value / 100f); args.DamageInfo = damageInfo; ((GameEventArgs)args).AddModifier((GameEntity)(object)this); } } } public sealed class sebloodcontractDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodsword" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodcontractDef))] public sealed class sebloodcontract : sereact { protected override IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (!((StatusEffect)this).Battle.BattleShouldEnd && actionSource != this && amount < 0 && (receive == null || receive == ((StatusEffect)this).Battle.Player) && !((StatusEffect)this).Battle.BattleShouldEnd) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodsword>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class sebloodmarkDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 9; defaultStatusEffectConfig.Type = (StatusEffectType)1; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodmarkDef))] public sealed class sebloodmark : StatusEffect { public int Value { get { if (((StatusEffect)this).Owner == null) { return 20; } if (((StatusEffect)this).Level == 0) { return 20; } return 20 * ((StatusEffect)this).Level; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<DamageEventArgs>(unit.DamageReceiving, (GameEventHandler<DamageEventArgs>)OnDamageReceiving); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnStarting, (EventSequencedReactor<UnitEventArgs>)OnTurnEnding); } private void OnDamageReceiving(DamageEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_003b: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2) { ((DamageInfo)(ref damageInfo)).Damage = ((DamageInfo)(ref damageInfo)).Amount * (1f + (float)Value / 100f); args.DamageInfo = damageInfo; ((GameEventArgs)args).AddModifier((GameEntity)(object)this); } } private IEnumerable<BattleAction> OnTurnEnding(UnitEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { ((StatusEffect)this).NotifyActivating(); if (((StatusEffect)this).Level > 1) { int level = ((StatusEffect)this).Level; ((StatusEffect)this).Level = level - 1; } else { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } } public sealed class sebloodofmyswordDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodsword" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodofmyswordDef))] public sealed class sebloodofmysword : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (((GameEntity)args.Card).Id != "cardbloodsword" && (int)args.Card.Config.Type == 1) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodsword>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class sebloodstormDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)2; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodstormDef))] public sealed class sebloodstorm : StatusEffect { public int lim => 4; protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(unit.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded); } private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args) { if (args.Effect is sebloodstorm && ((StatusEffect)this).Level >= lim) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<cardbloodstorm>(((StatusEffect)this).Level / lim, false), (AddCardsType)0); ((StatusEffect)this).Level = ((StatusEffect)this).Level % lim; if (((StatusEffect)this).Level == 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } } public sealed class sebloodswordDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)2; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodswordDef))] public sealed class sebloodsword : StatusEffect { public int lim => 5; protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(unit.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded); } private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args) { if (args.Effect is sebloodsword && ((StatusEffect)this).Level >= lim) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<cardbloodsword>(((StatusEffect)this).Level / lim, false), (AddCardsType)0); ((StatusEffect)this).Level = ((StatusEffect)this).Level % lim; if (((StatusEffect)this).Level == 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } } public sealed class sebloodyhellDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "seatkincrease" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sebloodyhellDef))] public sealed class sebloodyhell : StatusEffect { public int atkincrease { get { if (((StatusEffect)this).Owner == null) { return 0; } return ((StatusEffect)this).Level * 5; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (args.Card.Config.Colors.Contains((ManaColor)4)) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<seatkincrease>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)(((StatusEffect)this).Level * 5), (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class secorruptedbloodDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 1; defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(secorruptedbloodDef))] public sealed class secorruptedblood : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<ChangeLifeEventArgs>(CustomGameEventManager.PostChangeLifeEvent, (EventSequencedReactor<ChangeLifeEventArgs>)OnLifeChanged); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { int num; if (!((StatusEffect)this).Battle.BattleShouldEnd) { DamageInfo damageInfo = args.DamageInfo; num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0); } else { num = 0; } if (num == 0) { yield break; } foreach (BattleAction item in dosmth()) { yield return item; } } private IEnumerable<BattleAction> OnLifeChanged(ChangeLifeEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd || (args.argsunit != ((StatusEffect)this).Battle.Player && args.argsunit != null) || args.Amount >= 0) { yield break; } foreach (BattleAction item in dosmth()) { yield return item; } } private IEnumerable<BattleAction> dosmth() { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sedarkblood>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } public sealed class sedarkbloodDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = 2; defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sedarkbloodDef))] public sealed class sedarkblood : StatusEffect { private bool go = false; private bool turnending = false; public ManaGroup mana => ManaGroup.Blacks(1); protected override void OnAdded(Unit unit) { ((StatusEffect)this).Highlight = true; go = false; turnending = false; ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnding, (GameEventHandler<UnitEventArgs>)OnTurnEnding); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnTurnEnded); ((StatusEffect)this).ReactOwnerEvent<ChangeLifeEventArgs>(CustomGameEventManager.PostChangeLifeEvent, (EventSequencedReactor<ChangeLifeEventArgs>)OnLifeChanged); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarting, (GameEventHandler<UnitEventArgs>)OnOwnerTurnStarting); } private IEnumerable<BattleAction> OnTurnEnded(UnitEventArgs args) { if (go) { foreach (BattleAction item in dosmth()) { yield return item; } go = false; } turnending = false; } private void OnTurnEnding(UnitEventArgs args) { turnending = true; } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { int num; if (!((StatusEffect)this).Battle.BattleShouldEnd && ((StatusEffect)this).Highlight) { DamageInfo damageInfo = args.DamageInfo; num = ((((DamageInfo)(ref damageInfo)).Damage > 0f) ? 1 : 0); } else { num = 0; } if (num == 0) { yield break; } if (turnending) { go = true; yield break; } foreach (BattleAction item in dosmth()) { yield return item; } } private void OnOwnerTurnStarting(UnitEventArgs args) { ((StatusEffect)this).Highlight = true; } private IEnumerable<BattleAction> OnLifeChanged(ChangeLifeEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd || !((StatusEffect)this).Highlight || (args.argsunit != ((StatusEffect)this).Battle.Player && args.argsunit != null) || args.Amount >= 0) { yield break; } if (turnending) { go = true; yield break; } foreach (BattleAction item in dosmth()) { yield return item; } } private IEnumerable<BattleAction> dosmth() { ((StatusEffect)this).NotifyActivating(); if (((StatusEffect)this).Level <= 0) { ((StatusEffect)this).Level = 0; yield break; } int level = ((StatusEffect)this).Level; ((StatusEffect)this).Level = level - 1; ((StatusEffect)this).Highlight = false; if (((StatusEffect)this).Battle.HandZone.Count < ((StatusEffect)this).Battle.MaxHand) { yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<carddarkblood>(1, false), (AddCardsType)0); if (((StatusEffect)this).Level <= 0) { ((StatusEffect)this).Level = 0; yield break; } level = ((StatusEffect)this).Level; ((StatusEffect)this).Level = level - 1; } yield return (BattleAction)new GainManaAction(ManaGroup.Blacks(1)); if (((StatusEffect)this).Level <= 0) { ((StatusEffect)this).Level = 0; } } } public sealed class sedearswordDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sedearswordDef))] public sealed class sedearsword : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted); } private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<cardredblood>(((StatusEffect)this).Level, false), (AddCardsType)0); yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<cardbloodstorm>(((StatusEffect)this).Level, false), (AddCardsType)0); } } public sealed class sedeepbleedDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)1; defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sedecrease" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sedeepbleedDef))] public sealed class sedeepbleed : StatusEffect { public int truecount { get { if (((StatusEffect)this).Owner != null) { return (int)Math.Ceiling((float)((StatusEffect)this).Owner.MaxHp * 0.02f); } return 0; } } public int lifenow { get { if (((StatusEffect)this).Owner != null) { return ((StatusEffect)this).Owner.Hp; } return 0; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).Count = (int)Math.Ceiling((float)unit.MaxHp * 0.02f); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(unit.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(unit.TurnEnding, (EventSequencedReactor<UnitEventArgs>)OnTurnEnding); } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2) { ((StatusEffect)this).NotifyActivating(); if (!args.Target.IsNotAlive) { yield return (BattleAction)(object)new ChangeLifeAction(-(int)Math.Ceiling((float)args.Target.MaxHp * 0.02f), args.Target); } } } private IEnumerable<BattleAction> OnTurnEnding(UnitEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { ((StatusEffect)this).NotifyActivating(); if (((StatusEffect)this).Level > 1) { int level = ((StatusEffect)this).Level; ((StatusEffect)this).Level = level - 1; } else { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } } public sealed class seenduranceDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.HasCount = true; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seenduranceDef))] public sealed class seendurance : sereact { protected override IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { if (((StatusEffect)this).Count > 0) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<cardredblood>(((StatusEffect)this).Count, false), (AddCardsType)0); } ((StatusEffect)this).Count = 0; } } protected override IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (!((StatusEffect)this).Battle.BattleShouldEnd && actionSource != this && amount < 0 && (receive == null || receive == ((StatusEffect)this).Battle.Player) && !((StatusEffect)this).Battle.BattleShouldEnd && ((Unit)((StatusEffect)this).Battle.Player).Hp < toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 50, maxhp: true)) { ((StatusEffect)this).NotifyActivating(); ((StatusEffect)this).Count = ((StatusEffect)this).Count + ((StatusEffect)this).Level; } yield break; } } public sealed class seetudeDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.IsStackable = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seetudeDef))] public sealed class seetude : StatusEffect { public override bool ForceNotShowDownText => true; public int heal { get { if (((StatusEffect)this).Owner == null) { return 0; } if (((StatusEffect)this).Level == 0) { return 0; } return toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 5, maxhp: false); } } public DamageInfo Damage => DamageInfo.Attack((float)((StatusEffect)this).Level, true); protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnOwnerTurnStarted); } private IEnumerable<BattleAction> OnOwnerTurnStarted(UnitEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd) { yield break; } ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ChangeLifeAction(-heal); yield return (BattleAction)(object)new ApplyStatusEffectAction<seatkincrease>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)30, (int?)0, (int?)0, (int?)0, 0.2f, true); for (int i = 0; i < 3; i++) { if (((StatusEffect)this).Battle.BattleShouldEnd) { yield break; } yield return (BattleAction)new DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (Unit)(object)((StatusEffect)this).Battle.RandomAliveEnemy, Damage, GunNameID.GetGunFromId(7041), (GunType)0); } if (!((StatusEffect)this).Battle.BattleShouldEnd) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class sefuckyouDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sedecrease" }; defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.Order = 1; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sefuckyouDef))] public sealed class sefuckyou : sereact { public override bool ForceNotShowDownText => true; protected override IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (!((StatusEffect)this).Battle.BattleShouldEnd && actionSource != this && amount < 0 && (receive == null || receive == ((StatusEffect)this).Battle.Player) && !((StatusEffect)this).Battle.BattleShouldEnd && -amount >= toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 1, maxhp: true)) { int pct = -amount * 100 / ((Unit)Singleton<GameMaster>.Instance.CurrentGameRun.Player).MaxHp; ((StatusEffect)this).Count = Math.Max(0, ((StatusEffect)this).Count - pct); if (((StatusEffect)this).Count == 0) { ((StatusEffect)this).NotifyActivating(); ((StatusEffect)this).Battle.RequestDebugAction((BattleAction)new InstantWinAction(), "lvalonexrumia: Mutual Depletion+ instawin effect"); } } yield break; } } public sealed class segojoDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Order = int.MaxValue; defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "ExtraTurn" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(segojoDef))] public sealed class segojo : StatusEffect { public override bool ForceNotShowDownText => true; protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<DamageEventArgs>(unit.DamageTaking, (GameEventHandler<DamageEventArgs>)OnDamageTaking); ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.RoundEnded, (EventSequencedReactor<GameEventArgs>)OnTurnEnded); } private IEnumerable<BattleAction> OnTurnEnded(GameEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } private void OnDamageTaking(DamageEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = args.DamageInfo; int num = MathExtensions.RoundToInt(((DamageInfo)(ref damageInfo)).Damage); if (num > 0) { ((StatusEffect)this).NotifyActivating(); damageInfo = args.DamageInfo; args.DamageInfo = ((DamageInfo)(ref damageInfo)).ReduceActualDamageBy(num); ((GameEventArgs)args).AddModifier((GameEntity)(object)this); } } } public sealed class seidliveDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.Order = int.MaxValue; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seidliveDef))] public sealed class seidlive : StatusEffect { public override bool ForceNotShowDownText => true; protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<ChangeLifeEventArgs>(CustomGameEventManager.PostChangeLifeEvent, (EventSequencedReactor<ChangeLifeEventArgs>)OnLifeChanged); foreach (Unit allAliveUnit in ((StatusEffect)this).Battle.AllAliveUnits) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(allAliveUnit.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); } ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((StatusEffect)this).Battle.EnemySpawned, (GameEventHandler<UnitEventArgs>)OnEnemySpawned); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); ((StatusEffect)this).HandleOwnerEvent<DieEventArgs>(((StatusEffect)this).Owner.Dying, (GameEventHandler<DieEventArgs>)OnDying); ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding); ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.RoundEnded, (EventSequencedReactor<GameEventArgs>)OnRoundEnded); } private IEnumerable<BattleAction> OnRoundEnded(GameEventArgs args) { if (((Unit)((GameEntity)this).GameRun.Player).Hp <= 0) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new ForceKillAction((Unit)(object)((StatusEffect)this).Battle.Player, (Unit)(object)((StatusEffect)this).Battle.Player); } yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args) { if (((Unit)((GameEntity)this).GameRun.Player).Hp <= 0) { ((StatusEffect)this).NotifyActivating(); ((GameEntity)this).GameRun.SetHpAndMaxHp(1, ((Unit)((GameEntity)this).GameRun.Player).MaxHp, true); } yield break; } private void OnDying(DieEventArgs args) { ((StatusEffect)this).NotifyActivating(); ((GameEventArgs)args).CancelBy((GameEntity)(object)this); } private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args) { yield break; } private void OnEnemySpawned(UnitEventArgs args) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(args.Unit.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if (((DamageInfo)(ref damageInfo)).Damage == 0f) { yield break; } seidlive obj = this; Unit target = args.Target; damageInfo = args.DamageInfo; foreach (BattleAction item in obj.HandleLifeChanged(target, (int)((DamageInfo)(ref damageInfo)).Damage * -1, args.Source, ((GameEventArgs)args).Cause, ((GameEventArgs)args).ActionSource)) { yield return item; } } private IEnumerable<BattleAction> OnLifeChanged(ChangeLifeEventArgs args) { if (args.Amount == 0) { yield break; } foreach (BattleAction item in HandleLifeChanged(args.argsunit, args.Amount, (Unit)(object)((StatusEffect)this).Battle.Player, ((GameEventArgs)args).Cause, ((GameEventArgs)args).ActionSource)) { yield return item; } } private IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) yield break; } } public sealed class seimmerseDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodstorm" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seimmerseDef))] public sealed class seimmerse : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnTurnEnded); } private IEnumerable<BattleAction> OnTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if ((int)args.Card.Config.Type == 1) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodstorm>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class seinfuseddarknessDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seinfuseddarknessDef))] public sealed class seinfuseddarkness : StatusEffect { public override bool ForceNotShowDownText => true; public ManaGroup Mana { get { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) ManaGroup result = default(ManaGroup); ((ManaGroup)(ref result)).Philosophy = 1; return result; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnTurnEnded); } private IEnumerable<BattleAction> OnTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (args.Card is carddarkblood) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new GainManaAction(Mana); } } } public sealed class semagiaDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodsword" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(semagiaDef))] public sealed class semagia : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.RoundEnded, (EventSequencedReactor<GameEventArgs>)OnTurnEnding); } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodsword>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } private IEnumerable<BattleAction> OnTurnEnding(GameEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class semarkbloodDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.Order = 2; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodmark" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(semarkbloodDef))] public sealed class semarkblood : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((StatusEffect)this).Owner.TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted); ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageDealt, (EventSequencedReactor<DamageEventArgs>)OnDamageDealt); } private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args) { yield break; } private IEnumerable<BattleAction> OnDamageDealt(DamageEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd && args.Target.IsAlive) { DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2 && !args.Target.HasStatusEffect<sebloodmark>()) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodmark>(args.Target, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0f, true); } damageInfo = default(DamageInfo); } } } public sealed class semissribbonDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodmark" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(semissribbonDef))] public sealed class semissribbon : StatusEffect { protected override void OnAdded(Unit unit) { foreach (EnemyUnit allAliveEnemy in ((StatusEffect)this).Battle.AllAliveEnemies) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((Unit)allAliveEnemy).StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnEnemyStatusEffectAdded); } ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((StatusEffect)this).Battle.EnemySpawned, (GameEventHandler<UnitEventArgs>)OnEnemySpawned); } private IEnumerable<BattleAction> OnEnemyStatusEffectAdded(StatusEffectApplyEventArgs args) { if (((GameEventArgs)args).ActionSource != this && args.Effect is sebloodmark) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodsword>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } private void OnEnemySpawned(UnitEventArgs args) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(args.Unit.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnEnemyStatusEffectAdded); } } public sealed class semixedbloodDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sedarkblood" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(semixedbloodDef))] public sealed class semixedblood : StatusEffect { private readonly List<(Card, CardUsingEventArgs)> AttackEchoArgs = new List<(Card, CardUsingEventArgs)>(); protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsing, (GameEventHandler<CardUsingEventArgs>)OnCardUsing); ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnTurnEnded); } private void OnCardUsing(CardUsingEventArgs args) { if (args.Card is carddarkblood) { for (int i = 0; i < ((StatusEffect)this).Level; i++) { Card val = (Card)(object)Library.CreateCard<cardredblood>(); val.IsPlayTwiceToken = true; val.PlayTwiceSourceCard = args.Card; AttackEchoArgs.Add((val, args.Clone())); } } } private IEnumerable<BattleAction> OnTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { foreach (var (card, aargs) in AttackEchoArgs) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new PlayTwiceAction(card, aargs); } if (((GameEventArgs)args).ActionSource != this && args.Card is cardredblood) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sedarkblood>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } AttackEchoArgs.Clear(); } } public sealed class semutualdepletionDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sedecrease" }; defaultStatusEffectConfig.Order = 1; return defaultStatusEffectConfig; } } [EntityLogic(typeof(semutualdepletionDef))] public sealed class semutualdepletion : sereact { public override bool ForceNotShowDownText => true; protected override IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (((StatusEffect)this).Battle.BattleShouldEnd || actionSource == this || amount >= 0 || (receive != null && receive != ((StatusEffect)this).Battle.Player) || ((StatusEffect)this).Battle.BattleShouldEnd || -amount < toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 1, maxhp: true)) { yield break; } int pct = -amount * 100 / ((Unit)Singleton<GameMaster>.Instance.CurrentGameRun.Player).MaxHp; ((StatusEffect)this).NotifyActivating(); foreach (EnemyUnit unit in ((StatusEffect)this).Battle.AllAliveEnemies) { if (((Unit)unit).IsAlive && !((StatusEffect)this).Battle.BattleShouldEnd) { yield return (BattleAction)(object)new ChangeLifeAction(-toolbox.hpfrompercent((Unit)(object)unit, pct, maxhp: true), (Unit)(object)unit); } } } } public sealed class senightfallsDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodsword" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(senightfallsDef))] public sealed class senightfalls : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnTurnEnded); } private IEnumerable<BattleAction> OnTurnEnded(UnitEventArgs args) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (args.Card.Config.Colors.Contains((ManaColor)3)) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodsword>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class sepastpresentDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.IsStackable = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sepastpresentDef))] public sealed class sepastpresent : StatusEffect { private readonly List<(Card, CardUsingEventArgs)> AttackEchoArgs = new List<(Card, CardUsingEventArgs)>(); public override bool ForceNotShowDownText => true; protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsing, (GameEventHandler<CardUsingEventArgs>)OnCardUsing); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted); } private void OnCardUsing(CardUsingEventArgs args) { Card val = args.Card.CloneTwiceToken(); val.IsPlayTwiceToken = true; val.PlayTwiceSourceCard = args.Card; AttackEchoArgs.Add((val, args.Clone())); } private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args) { foreach (var (card, aargs) in AttackEchoArgs) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)new PlayTwiceAction(card, aargs); continue; } yield break; } AttackEchoArgs.Clear(); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class sequickrestoreDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)2; defaultStatusEffectConfig.HasCount = true; return defaultStatusEffectConfig; } } [EntityLogic(typeof(sequickrestoreDef))] public sealed class sequickrestore : StatusEffect { private int truecount = 0; public override bool ForceNotShowDownText => true; public int truecounter => truecount; protected override void OnAdded(Unit unit) { if (((StatusEffect)this).Count != 0) { truecount = ((StatusEffect)this).Count; } else { truecount = ((StatusEffect)this).Owner.Hp; ((StatusEffect)this).Count = truecount; } ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.RoundEnded, (EventSequencedReactor<GameEventArgs>)OnTurnEnding); ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding); } private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args) { seidlive seidlive2 = default(seidlive); if (((Unit)((StatusEffect)this).Battle.Player).TryGetStatusEffect<seidlive>(ref seidlive2)) { ((StatusEffect)this).NotifyActivating(); ((GameEntity)this).GameRun.SetHpAndMaxHp(truecount, ((Unit)((GameEntity)this).GameRun.Player).MaxHp, true); } yield break; } private IEnumerable<BattleAction> OnTurnEnding(GameEventArgs args) { if (((StatusEffect)this).Battle.BattleShouldEnd) { yield break; } if (truecount > 0) { if (truecount > ((Unit)((GameEntity)this).GameRun.Player).MaxHp) { truecount = ((Unit)((GameEntity)this).GameRun.Player).MaxHp; } ((StatusEffect)this).NotifyActivating(); ((GameEntity)this).GameRun.SetHpAndMaxHp(truecount, ((Unit)((GameEntity)this).GameRun.Player).MaxHp, true); } yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } public sealed class seshadowcutDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.IsStackable = false; defaultStatusEffectConfig.RelativeEffects = new List<string> { "ExtraTurn" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seshadowcutDef))] public sealed class seshadowcut : ExtraTurnPartner { public DamageInfo Damage => DamageInfo.Attack((float)((StatusEffect)this).Level, true); protected override void OnAdded(Unit unit) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown if (!(unit is PlayerUnit)) { BepinexPlugin.log.LogWarning((object)(((GameEntity)this).DebugName + " should not apply to non-player unit.")); ((GameEntity)this).React(Reactor.op_Implicit((BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f))); return; } ((ExtraTurnPartner)this).ThisTurnActivating = false; ((StatusEffect)this).ShowCount = false; ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarting, (GameEventHandler<UnitEventArgs>)delegate { if (((Unit)((StatusEffect)this).Battle.Player).IsExtraTurn && !((StatusEffect)this).Battle.Player.IsSuperExtraTurn && ((Unit)((StatusEffect)this).Battle.Player).GetStatusEffectExtend<ExtraTurnPartner>() == this) { ((ExtraTurnPartner)this).ThisTurnActivating = true; ((StatusEffect)this).ShowCount = true; ((StatusEffect)this).Highlight = true; } }); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnEnded); } private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args) { if (!((ExtraTurnPartner)this).ThisTurnActivating) { yield break; } for (int i = 0; i < ((StatusEffect)this).Level; i++) { if (((StatusEffect)this).Battle.BattleShouldEnd) { yield break; } if (i == 0) { yield return (BattleAction)new DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (IEnumerable<Unit>)((StatusEffect)this).Battle.AllAliveEnemies, Damage, GunNameID.GetGunFromId(7161), (GunType)0); } else { yield return (BattleAction)new DamageAction((Unit)(object)((StatusEffect)this).Battle.Player, (IEnumerable<Unit>)((StatusEffect)this).Battle.AllAliveEnemies, Damage, GunNameID.GetGunFromId(520), (GunType)0); } } yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } private IEnumerable<BattleAction> OnPlayerTurnEnded(UnitEventArgs args) { if (((ExtraTurnPartner)this).ThisTurnActivating) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class setearmedoDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebloodstorm", "seatkincrease" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(setearmedoDef))] public sealed class setearmedo : sereact { public int atkincrease { get { if (((StatusEffect)this).Owner == null) { return 0; } return ((StatusEffect)this).Level * 10; } } protected override IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (!((StatusEffect)this).Battle.BattleShouldEnd && actionSource != this && amount < 0 && (receive == null || receive == ((StatusEffect)this).Battle.Player) && !((StatusEffect)this).Battle.BattleShouldEnd) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodstorm>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<seatkincrease>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)(((StatusEffect)this).Level * 10), (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class setornDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "seatkincrease", "seincrease" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(setornDef))] public sealed class setorn : StatusEffect { public int lifeneed { get { if (((StatusEffect)this).Owner == null) { return 0; } return toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 50, maxhp: true); } } public int increase { get { if (((StatusEffect)this).Owner == null) { return 0; } return ((StatusEffect)this).Level * 10; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((Unit)((StatusEffect)this).Battle.Player).DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnPlayerDamageReceived); } private IEnumerable<BattleAction> OnPlayerDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if (((DamageInfo)(ref damageInfo)).IsGrazed && !((StatusEffect)this).Battle.BattleShouldEnd && ((Unit)((StatusEffect)this).Battle.Player).Hp < toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 50, maxhp: true)) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<seatkincrease>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)(((StatusEffect)this).Level * 10), (int?)0, (int?)0, (int?)0, 0.2f, true); yield return (BattleAction)(object)new ChangeLifeAction(toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, ((StatusEffect)this).Level * 10, maxhp: true)); } } } public sealed class seworldburnDef : lvalonexrumiaStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = lvalonexrumiaStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)0; defaultStatusEffectConfig.RelativeEffects = new List<string> { "sebleed", "sebloodmark" }; return defaultStatusEffectConfig; } } [EntityLogic(typeof(seworldburnDef))] public sealed class seworldburn : StatusEffect { protected override void OnAdded(Unit unit) { foreach (EnemyUnit allAliveEnemy in ((StatusEffect)this).Battle.AllAliveEnemies) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((Unit)allAliveEnemy).StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnEnemyStatusEffectAdded); } ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((StatusEffect)this).Battle.EnemySpawned, (GameEventHandler<UnitEventArgs>)OnEnemySpawned); } private IEnumerable<BattleAction> OnEnemyStatusEffectAdded(StatusEffectApplyEventArgs args) { if (((GameEventArgs)args).ActionSource != this) { if (args.Effect is sebloodmark) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebleed>(args.Unit, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } if (args.Effect is sebleed) { ((StatusEffect)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<sebloodmark>(args.Unit, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } private void OnEnemySpawned(UnitEventArgs args) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(args.Unit.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnEnemyStatusEffectAdded); } } public abstract class sereact : StatusEffect { public int lifeneed { get { if (Singleton<GameMaster>.Instance.CurrentGameRun == null) { return 0; } return toolbox.hpfrompercent((Unit)(object)Singleton<GameMaster>.Instance.CurrentGameRun.Player, 50, maxhp: true); } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<ChangeLifeEventArgs>(CustomGameEventManager.PostChangeLifeEvent, (EventSequencedReactor<ChangeLifeEventArgs>)OnLifeChanged); foreach (Unit allAliveUnit in ((StatusEffect)this).Battle.AllAliveUnits) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(allAliveUnit.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); } ((StatusEffect)this).HandleOwnerEvent<UnitEventArgs>(((StatusEffect)this).Battle.EnemySpawned, (GameEventHandler<UnitEventArgs>)OnEnemySpawned); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); } protected virtual IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args) { yield break; } protected virtual void OnEnemySpawned(UnitEventArgs args) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(args.Unit.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); } protected virtual IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if (((DamageInfo)(ref damageInfo)).Damage == 0f) { yield break; } sereact obj = this; Unit target = args.Target; damageInfo = args.DamageInfo; foreach (BattleAction item in obj.HandleLifeChanged(target, (int)((DamageInfo)(ref damageInfo)).Damage * -1, args.Source, ((GameEventArgs)args).Cause, ((GameEventArgs)args).ActionSource)) { yield return item; } } protected virtual IEnumerable<BattleAction> OnLifeChanged(ChangeLifeEventArgs args) { if (args.Amount == 0) { yield break; } foreach (BattleAction item in HandleLifeChanged(args.argsunit, args.Amount, (Unit)(object)((StatusEffect)this).Battle.Player, ((GameEventArgs)args).Cause, ((GameEventArgs)args).ActionSource)) { yield return item; } } protected abstract IEnumerable<BattleAction> HandleLifeChanged(Unit receive, int amount, Unit source, ActionCause cause, GameEntity actionSource); } public class lvalonexrumiaStatusEffectTemplate : StatusEffectTemplate { public override IdContainer GetId() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return IdContainer.op_Implicit(lvalonexrumiaDefaultConfig.DefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)lvalonexrumiaLocalization.StatusEffectsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return lvalonexrumiaImageLoader.LoadStatusEffectLoader((StatusEffectTemplate)(object)this); } public override StatusEffectConfig MakeConfig() { return GetDefaultStatusEffectConfig(); } public static StatusEffectConfig GetDefaultStatusEffectConfig() { return lvalonexrumiaDefaultConfig.DefaultStatusEffectConfig(); } } } namespace lvalonexrumia.Patches { public class ChangeLifeEventArgs : GameEventArgs { public int Amount { get; set; } public Unit argsunit { get; set; } public override string GetBaseDebugString() { return "Life Changed: " + Amount + " for " + ((argsunit != null) ? ((GameEntity)argsunit).Name : "Player"); } } [HarmonyPatch] public sealed class ChangeLifeAction : SimpleEventBattleAction<ChangeLifeEventArgs> { internal ChangeLifeAction(int amount = 1, Unit unit = null) { ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args = new ChangeLifeEventArgs { Amount = amount, argsunit = unit }; } public override void PreEventPhase() { base.Trigger(CustomGameEventManager.PreChangeLifeEvent); } public override void MainPhase() { //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected O, but got Unknown //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Expected O, but got Unknown //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Expected O, but got Unknown BattleAction val = null; GameRunController currentGameRun = Singleton<GameMaster>.Instance.CurrentGameRun; Unit argsunit = ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.argsunit; EnemyUnit val2 = (EnemyUnit)(object)((argsunit is EnemyUnit) ? argsunit : null); if (((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.argsunit == null || ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.argsunit == ((BattleAction)this).Battle.Player) { if (((Unit)currentGameRun.Player).Hp + ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.Amount > ((Unit)currentGameRun.Player).MaxHp) { currentGameRun.SetHpAndMaxHp(((Unit)currentGameRun.Player).MaxHp, ((Unit)currentGameRun.Player).MaxHp, true); return; } if (((Unit)currentGameRun.Player).Hp + ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.Amount <= 0) { ((BattleAction)this).React(Reactor.op_Implicit((BattleAction)new ForceKillAction((Unit)(object)((BattleAction)this).Battle.Player, (Unit)(object)((BattleAction)this).Battle.Player)), (GameEntity)null, (ActionCause?)null); } else { currentGameRun.SetHpAndMaxHp(((Unit)currentGameRun.Player).Hp + ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.Amount, ((Unit)currentGameRun.Player).MaxHp, true); } } else if (val2 != null && ((Unit)val2).IsAlive) { if (((Unit)val2).Hp + ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.Amount > ((Unit)val2).MaxHp) { currentGameRun.SetEnemyHpAndMaxHp(((Unit)val2).MaxHp, ((Unit)val2).MaxHp, val2, true); return; } if (((Unit)val2).Hp + ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.Amount <= 0) { ((BattleAction)this).React(Reactor.op_Implicit((BattleAction)new ForceKillAction((Unit)(object)((BattleAction)this).Battle.Player, (Unit)(object)val2)), (GameEntity)null, (ActionCause?)null); } else { currentGameRun.SetEnemyHpAndMaxHp(((Unit)val2).Hp + ((EventBattleAction<ChangeLifeEventArgs>)(object)this).Args.Amount, ((Unit)val2).MaxHp, val2, true); } } if (val != null) { ((BattleAction)this).React(new Reactor(val), (GameEntity)null, (ActionCause?)null); } } public override void PostEventPhase() { base.Trigger(CustomGameEventManager.PostChangeLifeEvent); } } [HarmonyPatch] internal class CustomGameEventManager { [HarmonyPatch(typeof(AudioManager), "PlayBossBgm")] internal class AudioManager_PlayBossBgm_Patch_exrumia { private static bool Prefix(AudioManager __instance) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown GameMaster instance = Singleton<GameMaster>.Instance; object obj; if ((Object)(object)instance == (Object)null) { obj = null; } else { GameRunController currentGameRun = instance.CurrentGameRun; obj = ((currentGameRun != null) ? currentGameRun.CurrentStation : null); } Station val = (Station)obj; BossStation val2 = (BossStation)((val is BossStation) ? val : null); if (val2 != null) { EnemyGroup enemyGroup = ((BattleStation)val2).EnemyGroup; if (((enemyGroup != null) ? enemyGroup.Id : null) == BepinexPlugin.modUniqueID) { BepinexPlugin.log.LogInfo((object)"now playing exrumia bgm"); AudioManager.PlayInLayer1("lvalonexrumiabgm"); return false; } } return true; } } public static GameEvent<ChangeLifeEventArgs> PreChangeLifeEvent { get; set; } public static GameEvent<ChangeLifeEventArgs> PostChangeLifeEvent { get; set; } [HarmonyPatch(typeof(GameRunController), "EnterBattle")] private static bool Prefix(GameRunController __instance) { PreChangeLifeEvent = new Ga