Decompiled source of Sanae Kochiya v0.7.5
Sanae_Kochiya.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AddWatermark; using BepInEx; using BepInEx.Bootstrap; 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.Randoms; using LBoL.Core.StatusEffects; using LBoL.Core.Units; using LBoL.EntityLib.Cards; using LBoL.EntityLib.Cards.Adventure; using LBoL.EntityLib.Cards.Character.Reimu; using LBoL.EntityLib.Cards.Enemy; using LBoL.EntityLib.Cards.Neutral.NoColor; using LBoL.EntityLib.Cards.Neutral.TwoColor; using LBoL.EntityLib.Cards.Tool; using LBoL.EntityLib.EnemyUnits.Character; using LBoL.EntityLib.Exhibits; using LBoL.EntityLib.StatusEffects.Basic; using LBoL.EntityLib.StatusEffects.Enemy; using LBoL.EntityLib.StatusEffects.ExtraTurn; using LBoL.EntityLib.StatusEffects.Neutral.TwoColor; using LBoL.EntityLib.StatusEffects.Others; using LBoL.Presentation; using LBoLEntitySideloader; using LBoLEntitySideloader.Attributes; using LBoLEntitySideloader.Entities; using LBoLEntitySideloader.Resource; using LBoLEntitySideloader.Utils; using Sanae_Kochiya.Cards.Template; using Sanae_Kochiya.Exhibits; using Sanae_Kochiya.GunName; using Sanae_Kochiya.ImageLoader; using Sanae_Kochiya.Source.Boss; using Sanae_Kochiya.Source.Cards.Offcolor; using Sanae_Kochiya.Source.Cards.Starter; using Sanae_Kochiya.Source.Config; using Sanae_Kochiya.Source.Loadouts; using Sanae_Kochiya.Source.Localization; using Sanae_Kochiya.Source.StatusEffects; using UnityEngine; using UnityEngine.Experimental.Rendering; [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("Sanae_Kochiya")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Sanae_Kochiya")] [assembly: AssemblyTitle("Sanae_Kochiya")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [HarmonyPatch(typeof(Siji))] internal class Siji_OnBattleStarted_Patch { [HarmonyPatch("OnBattleStarted", new Type[] { typeof(GameEventArgs) })] private static bool Prefix(Siji __instance, ref IEnumerable<BattleAction> __result, GameEventArgs arg) { //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Expected O, but got Unknown string id = ((GameEntity)((GameEntity)__instance).GameRun.Player).Id; if (id == "Sanae_Kochiya") { string text = "净颇梨审判"; text += " -博丽灵梦-"; Type typeFromHandle = typeof(Sanae_KochiyaBossDef.Sanae_Kochiya); string text2 = LocalizationExtensions.LocalizeFormat("Chat.Siji2", new object[1] { ((Unit)((Unit)__instance).Battle.Player).GetName() }); int count = ((Unit)__instance).Battle.Player.Exhibits.Count; int value = 1; if (count >= 20) { value = 3; } else if (count >= 10) { value = 2; } __result = new List<BattleAction> { (BattleAction)(object)PerformAction.Chat((Unit)(object)__instance, LocalizationExtensions.Localize("Chat.Siji1", true), 3f, 0f, 3.2f, true), (BattleAction)(object)PerformAction.Animation((Unit)(object)__instance, "shoot2", 0f, (string)null, 0f, -1), (BattleAction)(object)PerformAction.Chat((Unit)(object)__instance, text2, 3f, 0f, 3.2f, true), (BattleAction)(object)PerformAction.Animation((Unit)(object)__instance, "spell", 0f, (string)null, 0f, -1), (BattleAction)(object)PerformAction.Spell((Unit)(object)__instance, text), (BattleAction)new SpawnEnemyAction((EnemyUnit)(object)__instance, typeFromHandle, 2, 0f, 0.3f, false), (BattleAction)(object)new ApplyStatusEffectAction<SijiZui>((Unit)(object)__instance, (int?)value, (int?)null, (int?)null, (int?)null, 0f, true) }; return false; } return true; } } namespace Sanae_Kochiya { [BepInPlugin("xeno.lbol.character.Sanae_Kochiya", "Sanae_Kochiya", "0.7.5")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInProcess("LBoL.exe")] public class BepinexPlugin : BaseUnityPlugin { public static string modUniqueID = "Sanae_Kochiya"; public static string playerName = "Sanae"; public static bool useInGameModel = true; public static string model_name = "Sanae"; public static bool model_is_flipped = false; 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("xeno.lbol.character.Sanae_Kochiya", ""); public static ConfigEntry<bool> modExclusiveConfig; private void Awake() { log = ((BaseUnityPlugin)this).Logger; modExclusiveConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("Act1Boss", "Act1Boss", true, "Enables the Act 1 Sanae boss and Sanae common Exhibits, for non-Sanae characters."); 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("BossIconSanae.png", (IResourceSource)(object)directorySource, (Rect?)null, 1, (Vector2?)null); EnemyUnitTemplate.AddBossNodeIcon("Sanae_Kochiya", func, (Assembly)null); if (Chainloader.PluginInfos.ContainsKey("neo.lbol.tools.watermark")) { WatermarkWrapper.ActivateWatermark(); } } private void OnDestroy() { if (harmony != null) { harmony.UnpatchSelf(); } } } public static class PInfo { public const string GUID = "xeno.lbol.character.Sanae_Kochiya"; public const string Name = "Sanae_Kochiya"; public const string version = "0.7.5"; public static readonly Harmony harmony = new Harmony("xeno.lbol.character.Sanae_Kochiya"); } public sealed class SampleCharacterPlayerDef : PlayerUnitTemplate { [EntityLogic(typeof(SampleCharacterPlayerDef))] public sealed class Sanae_Kochiya : 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)SampleCharacterLocalization.PlayerUnitBatchLoc.AddEntity((EntityDefinition)(object)this); } public override PlayerImages LoadPlayerImages() { return SampleCharacterImageLoader.LoadPlayerImages(BepinexPlugin.playerName); } public override PlayerUnitConfig MakeConfig() { return SampleCharacterLoadouts.playerUnitConfig; } } internal class WatermarkWrapper { [MethodImpl(MethodImplOptions.NoInlining)] internal static void ActivateWatermark() { API.ActivateWatermark(); } } } namespace Sanae_Kochiya.SampleCharacterUlt { public sealed class SanaeUltUDef : SampleCharacterUltTemplate { public override UltimateSkillConfig MakeConfig() { UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig(); defaulUltConfig.PowerCost = 50; defaulUltConfig.PowerPerLevel = 100; defaulUltConfig.MaxPowerLevel = 2; defaulUltConfig.RepeatableType = (UsRepeatableType)0; defaulUltConfig.Damage = 12; defaulUltConfig.Value1 = 1; defaulUltConfig.RelativeEffects = new List<string> { "Amulet", "AmuletForCard" }; return defaulUltConfig; } } [EntityLogic(typeof(SanaeUltUDef))] public sealed class SanaeUltU : UltimateSkill { public override DamageInfo Damage => CalculateDamage(); public SanaeUltU() { ((UltimateSkill)this).TargetType = (TargetType)2; ((UltimateSkill)this).GunName = GunNameID.GetGunFromId(39050); } private DamageInfo CalculateDamage() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) DamageInfo damage; if (((UltimateSkill)this).Battle == null || !((Unit)((UltimateSkill)this).Owner).HasStatusEffect<OmikujiBonusSe>()) { damage = ((UltimateSkill)this).Damage; return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount, true); } damage = ((UltimateSkill)this).Damage; return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount + (float)((StatusEffect)((Unit)((UltimateSkill)this).Owner).GetStatusEffect<OmikujiBonusSe>()).Level, true); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { Unit[] targets = selector.GetUnits(((UltimateSkill)this).Battle); yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, (IEnumerable<Unit>)targets, ((UltimateSkill)this).Damage, ((UltimateSkill)this).GunName, (GunType)0); if (!((UltimateSkill)this).Battle.BattleShouldEnd) { yield return (BattleAction)(object)new ApplyStatusEffectAction<AmuletForCard>((Unit)(object)((UltimateSkill)this).Owner, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true); yield return (BattleAction)(object)new ApplyStatusEffectAction<Amulet>((Unit)(object)((UltimateSkill)this).Owner, (int?)((UltimateSkill)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true); } } } public sealed class SanaeUltRDef : SampleCharacterUltTemplate { public override UltimateSkillConfig MakeConfig() { UltimateSkillConfig defaulUltConfig = GetDefaulUltConfig(); defaulUltConfig.PowerCost = 60; defaulUltConfig.PowerPerLevel = 120; defaulUltConfig.MaxPowerLevel = 2; defaulUltConfig.RepeatableType = (UsRepeatableType)0; defaulUltConfig.Damage = 20; defaulUltConfig.Value1 = 2; return defaulUltConfig; } } [EntityLogic(typeof(SanaeUltRDef))] public sealed class SanaeUltR : UltimateSkill { public int GrowthCount => ((GameEntity)this).GameRun.UltimateUseCount; public override DamageInfo Damage => CalculateDamage(); public SanaeUltR() { ((UltimateSkill)this).TargetType = (TargetType)1; ((UltimateSkill)this).GunName = GunNameID.GetGunFromId(13000); } private DamageInfo CalculateDamage() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) DamageInfo damage; if (((UltimateSkill)this).Battle == null || !((Unit)((UltimateSkill)this).Owner).HasStatusEffect<OmikujiBonusSe>()) { damage = ((UltimateSkill)this).Damage; return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount, true); } damage = ((UltimateSkill)this).Damage; return DamageInfo.Attack(((DamageInfo)(ref damage)).Amount + (float)((StatusEffect)((Unit)((UltimateSkill)this).Owner).GetStatusEffect<OmikujiBonusSe>()).Level, true); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector) { ManaGroup manaA = ManaGroup.Single(CollectionsExtensions.Sample<ManaColor>((IEnumerable<ManaColor>)ManaColors.Colors, ((GameEntity)this).GameRun.BattleRng)); ManaGroup manaB = ManaGroup.Single(CollectionsExtensions.Sample<ManaColor>((IEnumerable<ManaColor>)ManaColors.Colors, ((GameEntity)this).GameRun.BattleRng)); Unit enemy = (Unit)(object)selector.GetEnemy(((UltimateSkill)this).Battle); if (((ManaGroup)(ref manaA)).HasColor((ManaColor)1)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(801), 0.05f); } else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)2)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(802), 0.05f); } else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)3)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(804), 0.05f); } else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)4)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(803), 0.05f); } else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)5)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(805), 0.05f); } else if (((ManaGroup)(ref manaA)).HasColor((ManaColor)6)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(806), 0.05f); } else { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(807), 0.05f); } if (((ManaGroup)(ref manaB)).HasColor((ManaColor)1)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(801), 0.1f); } else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)2)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(802), 0.1f); } else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)3)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(804), 0.1f); } else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)4)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(803), 0.1f); } else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)5)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(805), 0.1f); } else if (((ManaGroup)(ref manaB)).HasColor((ManaColor)6)) { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(806), 0.1f); } else { yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)((UltimateSkill)this).Owner, enemy, GunNameID.GetGunFromId(807), 0.1f); } yield return (BattleAction)new DamageAction((Unit)(object)((UltimateSkill)this).Owner, enemy, ((UltimateSkill)this).Damage, GunNameID.GetGunFromId(13180), (GunType)0); if (!((UltimateSkill)this).Battle.BattleShouldEnd) { yield return (BattleAction)new GainManaAction(manaA); yield return (BattleAction)new GainManaAction(manaB); } } } public class SampleCharacterUltTemplate : 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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)SampleCharacterLocalization.UltimateSkillsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return SampleCharacterImageLoader.LoadUltLoader((UltimateSkillTemplate)(object)this); } public override UltimateSkillConfig MakeConfig() { throw new NotImplementedException(); } public UltimateSkillConfig GetDefaulUltConfig() { return SampleCharacterDefaultConfig.GetDefaultUltConfig(); } } } namespace Sanae_Kochiya.model { public sealed class SampleCharacterModel : UnitModelTemplate { public static bool useInGameModel = BepinexPlugin.useInGameModel; public static string model_name = (useInGameModel ? BepinexPlugin.model_name : "SampleCharacterModel.png"); public static string spellsprite_name = "SampleCharacterStand.png"; 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 ((EntityDefinition)new SampleCharacterPlayerDef()).UniqueId; } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)SampleCharacterLocalization.UnitModelBatchLoc.AddEntity((EntityDefinition)(object)this); } public override ModelOption LoadModelOptions() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown if (useInGameModel) { return new ModelOption(ResourcesHelper.LoadSpineUnitAsync(model_name)); } return new ModelOption(ResourceLoader.LoadSpriteAsync(model_name, BepinexPlugin.directorySource, 565, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://")); } public override UniTask<Sprite> LoadSpellSprite() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (useInGameModel) { return ResourcesHelper.LoadSpellPortraitAsync(model_name); } return ResourceLoader.LoadSpriteAsync(spellsprite_name, BepinexPlugin.directorySource, 100, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://"); } public override UnitModelConfig MakeConfig() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) if (useInGameModel) { UnitModelConfig val = ObjectExtensions.Copy<UnitModelConfig>(UnitModelConfig.FromName(model_name)); val.Flip = BepinexPlugin.model_is_flipped; return val; } UnitModelConfig val2 = ObjectExtensions.Copy<UnitModelConfig>(((UnitModelTemplate)this).DefaultConfig()); val2.Flip = BepinexPlugin.model_is_flipped; val2.Type = 0; val2.Offset = new Vector2(0f, -0.1f); val2.HasSpellPortrait = true; return val2; } } } namespace Sanae_Kochiya.ImageLoader { public sealed class SampleCharacterImageLoader { public static string file_extension = ".png"; public static PlayerImages LoadPlayerImages(string name) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown PlayerImages val = new PlayerImages(); val.AutoLoad(name, (Func<string, Sprite>)((string s) => ResourceLoader.LoadSprite(s, (IResourceSource)(object)BepinexPlugin.directorySource, 100, 1, (FilterMode)1, true, (Rect?)null, (Vector2?)null)), (Func<string, UniTask<Sprite>>)((string s) => ResourceLoader.LoadSpriteAsync(s, BepinexPlugin.directorySource, 100, (GraphicsFormat)4, 1, (FilterMode)1, (SpriteMeshType)1, (Rect?)null, (Vector2?)null, "file://")), (UseSame)2, ".png", ""); return val; } public static CardImages LoadCardImages(CardTemplate cardTemplate) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown CardImages val = new CardImages(BepinexPlugin.embeddedSource); val.AutoLoad(cardTemplate, file_extension, "", false); return val; } public static ExhibitSprites LoadExhibitSprite(ExhibitTemplate exhibit) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown ExhibitSprites val = new ExhibitSprites(); Func<string, Sprite> func = (string s) => ResourceLoader.LoadSprite(IdContainer.op_Implicit(((EntityDefinition)exhibit).GetId()) + s + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); val.main = func(""); return val; } public static Sprite LoadUltLoader(UltimateSkillTemplate ult) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return LoadSprite(((EntityDefinition)ult).GetId()); } public static Sprite LoadStatusEffectLoader(StatusEffectTemplate status) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return LoadSprite(((EntityDefinition)status).GetId()); } public static Sprite LoadSprite(IdContainer ID) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return ResourceLoader.LoadSprite(IdContainer.op_Implicit(ID) + file_extension, BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); } } } namespace Sanae_Kochiya.GunName { public static class GunNameID { private static IReadOnlyList<GunConfig> gunConfig = GunConfig.AllConfig(); public static string GetGunFromId(int id) { string text = ""; try { return (from config in gunConfig where config.Id == id select config.Name).ToList()[0]; } catch { Debug.Log((object)("id: " + id + " doesn't exist. Check whether the ID is correct.")); return "Instant"; } } } } namespace Sanae_Kochiya.Exhibits { public class SampleCharacterExhibitTemplate : ExhibitTemplate { 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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)SampleCharacterLocalization.ExhibitsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override ExhibitSprites LoadSprite() { return SampleCharacterImageLoader.LoadExhibitSprite((ExhibitTemplate)(object)this); } public override ExhibitConfig MakeConfig() { return GetDefaultExhibitConfig(); } public ExhibitConfig GetDefaultExhibitConfig() { return SampleCharacterDefaultConfig.GetDefaultExhibitConfig(); } } } namespace Sanae_Kochiya.Cards.Template { public class SampleCharacterCard : Card { } public static class CardIndexGenerator { private static int? initial_offset = null; private static HashSet<int> uniqueIds = new HashSet<int>(); public const int milx1 = 1000000; public static HashSet<int> UniqueIds { get { if (uniqueIds == null) { uniqueIds = new HashSet<int>(); } return uniqueIds; } } public static int Initial_offset { get { if (!initial_offset.HasValue) { int num = 0; if (UniqueTracker.Instance.configIndexes.TryGetValue(typeof(CardConfig), out var value)) { num = value.Where((int i) => i >= 1000000).DefaultIfEmpty().Max() / 1000000; } num++; initial_offset = num * 1000000; } return initial_offset.Value; } } internal static void PromiseClearIndexSet() { EntityManager.AddPostLoadAction((Action)delegate { uniqueIds = null; }, (Assembly)null); } public static int GetUniqueIndex(CardConfig config) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Expected I4, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) int num = Initial_offset; num += ((!((Enum)config.Keywords).HasFlag((Enum)(object)(Keyword)1)) ? ((config.Rarity + 1) * 100000) : 0); int num2 = ((config.Colors.Count > 1) ? 9 : ((int)config.Colors[0])); num += num2 * 10000; int num3; if (!config.IsXCost && !((Enum)config.Keywords).HasFlag((Enum)(object)(Keyword)32768)) { ManaGroup cost = config.Cost; if (((ManaGroup)(ref cost)).Total <= 9) { cost = config.Cost; num3 = ((ManaGroup)(ref cost)).Total; goto IL_00a8; } } num3 = 9; goto IL_00a8; IL_00a8: int num4 = num3; num += num4 * 1000; num += config.Type * 100; if (UniqueTracker.Instance.configIndexes.TryGetValue(typeof(CardConfig), out var value)) { for (; value.Contains(num); num++) { } } return num; } } public abstract class SampleCharacterCardTemplate : CardTemplate { 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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override CardImages LoadCardImages() { return SampleCharacterImageLoader.LoadCardImages((CardTemplate)(object)this); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)SampleCharacterLocalization.CardsBatchLoc.AddEntity((EntityDefinition)(object)this); } public CardConfig GetCardDefaultConfig() { return SampleCharacterDefaultConfig.GetCardDefaultConfig(); } } } namespace Sanae_Kochiya.Source.StatusEffects { public sealed class AmuletForEnemyDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } public override Sprite LoadSprite() { return ResourceLoader.LoadSprite("Bulwark.png", BepinexPlugin.embeddedSource, (Rect?)null, 1, (Vector2?)null); } } [EntityLogic(typeof(AmuletForEnemyDef))] public sealed class AmuletForEnemy : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).Highlight = true; ((StatusEffect)this).HandleOwnerEvent<StatusEffectEventArgs>(((StatusEffect)this).Owner.StatusEffectChanged, (GameEventHandler<StatusEffectEventArgs>)OnChangeStatus); ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnAddCard); ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnAddCard); ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToExile, (EventSequencedReactor<CardsEventArgs>)OnAddCard); ((StatusEffect)this).ReactOwnerEvent<CardsAddingToDrawZoneEventArgs>(((StatusEffect)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone); } private void OnChangeStatus(StatusEffectEventArgs args) { if (args.Effect is AmuletForEnemy && ((StatusEffect)this).Level != 0) { ((StatusEffect)this).Highlight = true; } } private IEnumerable<BattleAction> OnAddCard(CardsEventArgs args) { return ExileCard(args.Cards); } private IEnumerable<BattleAction> OnCardsAddedToDrawZone(CardsAddingToDrawZoneEventArgs args) { return ExileCard(args.Cards); } private IEnumerable<BattleAction> ExileCard(IEnumerable<Card> cards) { if (((StatusEffect)this).Level == 0) { yield break; } List<Card> candidate = cards.Where((Card card) => (int)card.CardType != 7 && (int)card.Zone != 4).ToList(); if (candidate.Count == 0) { yield break; } if (((StatusEffect)this).Level < candidate.Count) { candidate.RemoveRange(((StatusEffect)this).Level, candidate.Count - ((StatusEffect)this).Level); } <>n__0(); if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<RainbowMarketSe>()) { foreach (Card card2 in candidate) { yield return (BattleAction)new MoveCardAction(card2, (CardZone)4); } } else { yield return (BattleAction)new ExileManyCardAction((IEnumerable<Card>)candidate); } ((StatusEffect)this).Level = ((StatusEffect)this).Level - candidate.Count; if (((StatusEffect)this).Level <= 0) { ((StatusEffect)this).Highlight = false; } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class GraceSetupDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(GraceSetupDef))] public sealed class GraceSetup : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { yield return ((StatusEffect)this).BuffAction<Grace>(((StatusEffect)this).Level, 0, 0, 0, 0.1f); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { yield return ((StatusEffect)this).BuffAction<Grace>(((StatusEffect)this).Level, 0, 0, 0, 0.1f); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class NextTurnLoseFireDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)1; return defaultStatusEffectConfig; } } [EntityLogic(typeof(NextTurnLoseFireDef))] public sealed class NextTurnLoseFire : 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) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { <>n__0(); yield return ((StatusEffect)this).DebuffAction<FirepowerNegative>(((StatusEffect)this).Owner, ((StatusEffect)this).Level, 0, 0, 0, true, 0.1f); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class NextTurnLosePowerDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)2; return defaultStatusEffectConfig; } } [EntityLogic(typeof(NextTurnLosePowerDef))] public sealed class NextTurnLosePower : 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) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { <>n__0(); yield return (BattleAction)new LosePowerAction(((StatusEffect)this).Level); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class OmikujiBonusSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(OmikujiBonusSeDef))] public sealed class OmikujiBonusSe : StatusEffect { } public sealed class SanaeAbilityManaSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasLevel = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaeAbilityManaSeDef))] public sealed class SanaeAbilityManaSe : StatusEffect { 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)).Any = 1; return result; } } 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 is SanaeAbilityMana || (int)args.Card.CardType != 4) { yield break; } Card card = args.Card.Clone(false); card.IsCopy = false; card.IsEthereal = true; ManaGroup cost = args.Card.Cost; int argsCost = ((ManaGroup)(ref cost)).Any; cost = card.Cost; int cardCost = ((ManaGroup)(ref cost)).Any; card.IncreaseBaseCost(Mana); if (argsCost != cardCost) { if (argsCost != 9) { for (int j = 0; j < argsCost - cardCost; j++) { card.IncreaseBaseCost(Mana); } } else { for (int i = 1; i < argsCost - cardCost; i++) { card.IncreaseBaseCost(Mana); } } } yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { card }); } } public sealed class SanaeAbilityShuffleSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasLevel = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaeAbilityShuffleSeDef))] public sealed class SanaeAbilityShuffleSe : StatusEffect { 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) { GameRunController gameRun = ((GameEntity)this).GameRun; int canViewDrawZoneActualOrder = gameRun.CanViewDrawZoneActualOrder + 1; gameRun.CanViewDrawZoneActualOrder = canViewDrawZoneActualOrder; ((StatusEffect)this).ReactOwnerEvent<CardUsingEventArgs>(((StatusEffect)this).Battle.CardUsed, (EventSequencedReactor<CardUsingEventArgs>)OnCardUsed); ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding); } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd && (int)args.Card.CardType != 3 && args.Card != Library.CreateCard(typeof(SanaeAbilityShuffle))) { yield return (BattleAction)new ReshuffleAction(); if ((int)args.Card.CardType == 4) { yield return (BattleAction)new GainManaAction(Mana); yield return (BattleAction)new DrawCardAction(); } } } private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args) { if (((Unit)((StatusEffect)this).Battle.Player).IsAlive) { GameRunController gameRun = ((GameEntity)this).GameRun; int num = gameRun.CanViewDrawZoneActualOrder - 1; gameRun.CanViewDrawZoneActualOrder = num; } yield break; } } public sealed class SanaeAttackBlockSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)1; defaultStatusEffectConfig.HasLevel = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaeAttackBlockSeDef))] public sealed class SanaeAttackBlockSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<BlockShieldEventArgs>(((Unit)((StatusEffect)this).Battle.Player).BlockShieldCasted, (EventSequencedReactor<BlockShieldEventArgs>)OnBlockShieldCasted); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted); } private IEnumerable<BattleAction> OnBlockShieldCasted(BlockShieldEventArgs args) { if (args.HasShield && args.Shield > 0f && ((StatusEffect)this).Owner.IsAlive) { yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, new DamageInfo(args.Shield, (DamageType)1, false, false, false), (args.Shield > 30f) ? GunNameID.GetGunFromId(401) : GunNameID.GetGunFromId(400), (GunType)0); } } private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd && ((StatusEffect)this).Owner.IsAlive) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } public sealed class SanaeAttackPowerSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.Type = (StatusEffectType)1; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaeAttackPowerSeDef))] public sealed class SanaeAttackPowerSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<DamageEventArgs>(((StatusEffect)this).Owner.DamageReceived, (EventSequencedReactor<DamageEventArgs>)OnDamageReceived); } private IEnumerable<BattleAction> OnDamageReceived(DamageEventArgs args) { DamageInfo damageInfo = args.DamageInfo; if ((int)((DamageInfo)(ref damageInfo)).DamageType == 2 && ((DamageInfo)(ref damageInfo)).Amount > 0f) { yield return (BattleAction)new GainPowerAction(((StatusEffect)this).Level); } } } public sealed class SanaeBlockSynergySeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.CountStackType = (StackType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaeBlockSynergySeDef))] public sealed class SanaeBlockSynergySe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); } private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { <>n__0(); yield return (BattleAction)new CastBlockShieldAction(((StatusEffect)this).Owner, ((StatusEffect)this).Count, ((StatusEffect)this).Level, (BlockShieldType)2, true); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class SanaeChooseAttackSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeChooseAttackSeDef))] public sealed class SanaeChooseAttackSe : StatusEffect { public bool Grace = false; 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); } private void OnCardUsing(CardUsingEventArgs args) { if (((Unit)((StatusEffect)this).Battle.Player).HasStatusEffect<Grace>()) { Grace = true; } else { Grace = false; } } private IEnumerable<BattleAction> OnCardUsed(CardUsingEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd && ((int)args.Card.CardType == 1 || (int)args.Card.CardType == 2) && !Grace) { <>n__0(); yield return ((StatusEffect)this).BuffAction<Grace>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class SanaeDrawDiscardSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeDrawDiscardSeDef))] public sealed class SanaeDrawDiscardSe : 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) { yield return (BattleAction)new DrawManyCardAction(((StatusEffect)this).Level); IReadOnlyList<Card> hand = ((StatusEffect)this).Battle.HandZone; if (hand != null && hand.Count > ((StatusEffect)this).Level && !((StatusEffect)this).Battle.BattleShouldEnd) { SelectCardInteraction interaction = new SelectCardInteraction(((StatusEffect)this).Level, ((StatusEffect)this).Level, (IEnumerable<Card>)hand, (SelectedCardHandling)0); yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false); IReadOnlyList<Card> discard = interaction.SelectedCards; yield return (BattleAction)new DiscardManyAction((IEnumerable<Card>)discard); } else if (hand != null && hand.Count > 0 && !((StatusEffect)this).Battle.BattleShouldEnd) { yield return (BattleAction)new DiscardManyAction((IEnumerable<Card>)hand); } } } public sealed class SanaeDrawDiscardZeroSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeDrawDiscardZeroSeDef))] public sealed class SanaeDrawDiscardZeroSe : 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) { yield return (BattleAction)new DrawManyCardAction(((StatusEffect)this).Level); IReadOnlyList<Card> hand = ((StatusEffect)this).Battle.HandZone; if (hand != null && hand.Count > 0 && !((StatusEffect)this).Battle.BattleShouldEnd) { SelectCardInteraction interaction = new SelectCardInteraction(0, ((StatusEffect)this).Level, (IEnumerable<Card>)hand, (SelectedCardHandling)0); yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false); IReadOnlyList<Card> discard = interaction.SelectedCards; if (discard.Count > 0) { yield return (BattleAction)new DiscardManyAction((IEnumerable<Card>)discard); } } } } public sealed class SanaeFavorFireSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasLevel = false; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaeFavorFireSeDef))] public sealed class SanaeFavorFireSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded); } private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args) { if (args.Effect is Grace) { <>n__0(); yield return ((StatusEffect)this).BuffAction<TempFirepower>(args.Effect.Level, 0, 0, 0, 0.2f); yield return ((StatusEffect)this).BuffAction<TempSpirit>(args.Effect.Level, 0, 0, 0, 0.2f); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class SanaeKanakoFriendSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeKanakoFriendSeDef))] public sealed class SanaeKanakoFriendSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { yield return (BattleAction)new ApplyStatusEffectAction(typeof(Firepower), (Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); yield return (BattleAction)new ApplyStatusEffectAction(typeof(Graze), (Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)0, (int?)0, (int?)0, 0.2f, true); } } public sealed class SanaeManaSpiritSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.IsStackable = false; defaultStatusEffectConfig.HasCount = true; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaeManaSpiritSeDef))] public sealed class SanaeManaSpiritSe : StatusEffect { protected override void OnAdded(Unit unit) { if (((StatusEffect)this).Count == 1) { ((StatusEffect)this).Highlight = true; } ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); } private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { int num = ((StatusEffect)this).Count - 1; ((StatusEffect)this).Count = num; if (((StatusEffect)this).Count == 1) { ((StatusEffect)this).Highlight = true; } if (((StatusEffect)this).Count <= 0) { <>n__0(); yield return (BattleAction)(object)new ApplyStatusEffectAction<Spirit>((Unit)(object)((StatusEffect)this).Battle.Player, (int?)((StatusEffect)this).Level, (int?)null, (int?)null, (int?)null, 0f, true); yield return (BattleAction)new AddCardsToHandAction((Card[])(object)new Card[1] { (Card)Library.CreateCard<WManaCard>() }); yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class SanaePowerLifeSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasCount = true; defaultStatusEffectConfig.CountStackType = (StackType)0; return defaultStatusEffectConfig; } } [EntityLogic(typeof(SanaePowerLifeSeDef))] public sealed class SanaePowerLifeSe : StatusEffect { private readonly int _value3 = 5; public int Value3 => _value3; protected override void OnAdded(Unit unit) { if (((Unit)((StatusEffect)this).Battle.Player).TurnCounter % 2 == 1) { ((StatusEffect)this).Highlight = true; } else { ((StatusEffect)this).Highlight = false; } ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); } private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { <>n__0(); if (((Unit)((StatusEffect)this).Battle.Player).TurnCounter % 2 == 1) { yield return (BattleAction)new GainPowerAction(((StatusEffect)this).Count); ((StatusEffect)this).Highlight = true; } else { yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, ((StatusEffect)this).Owner, DamageInfo.HpLose((float)Value3, false), "Instant", (GunType)0); yield return (BattleAction)new LosePowerAction(((StatusEffect)this).Level); ((StatusEffect)this).Highlight = false; } } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class SanaePowerPotatoSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaePowerPotatoSeDef))] public sealed class SanaePowerPotatoSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<GameEventArgs>(((StatusEffect)this).Battle.BattleEnding, (EventSequencedReactor<GameEventArgs>)OnBattleEnding); } private IEnumerable<BattleAction> OnBattleEnding(GameEventArgs args) { if (((Unit)((StatusEffect)this).Battle.Player).IsAlive) { <>n__0(); yield return (BattleAction)new GainPowerAction(((StatusEffect)this).Level); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class SanaeSpellAttackSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeSpellAttackSeDef))] public sealed class SanaeSpellAttackSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { for (int i = 0; i < ((StatusEffect)this).Level; i++) { yield return (BattleAction)new DamageAction(((StatusEffect)this).Owner, (Unit)(object)((StatusEffect)this).Battle.RandomAliveEnemy, DamageInfo.Attack(8f, false), GunNameID.GetGunFromId(12150), (GunType)0); } } } public sealed class SanaeSpellManaGreenSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeSpellManaGreenSeDef))] public sealed class SanaeSpellManaGreenSe : StatusEffect { 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)).Green = 2; return result; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).Green = 2 * ((StatusEffect)this).Level; yield return (BattleAction)new GainManaAction(val); } } public sealed class SanaeSpellManaPhiloSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeSpellManaPhiloSeDef))] public sealed class SanaeSpellManaPhiloSe : StatusEffect { 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 = 2; return result; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).Philosophy = 2 * ((StatusEffect)this).Level; yield return (BattleAction)new GainManaAction(val); } } public sealed class SanaeStatusTalismanSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeStatusTalismanSeDef))] public sealed class SanaeStatusTalismanSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); } private IEnumerable<BattleAction> OnPlayerTurnStarted(GameEventArgs args) { if (!((StatusEffect)this).Battle.BattleShouldEnd) { <>n__0(); yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((StatusEffect)this).Level, false), (DrawZoneTarget)2, (AddCardsType)0); yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((StatusEffect)this).Level, false), (AddCardsType)0); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public sealed class SanaeSuwakoFriendOneSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeSuwakoFriendOneSeDef))] public sealed class SanaeSuwakoFriendOneSe : StatusEffect { 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)).Any = 1; return result; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { Card[] Ability = ((StatusEffect)this).Battle.RollCards(new CardWeightTable(RarityWeightTable.AllOnes, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyAbility, false), ((StatusEffect)this).Level, (Predicate<CardConfig>)null); Card[] array = Ability; foreach (Card card in array) { card.SetTurnCost(Mana); card.IsEthereal = true; } yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Ability, (AddCardsType)0); } } public sealed class SanaeSuwakoFriendTwoSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeSuwakoFriendTwoSeDef))] public sealed class SanaeSuwakoFriendTwoSe : StatusEffect { 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)).Any = 2; return result; } } protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { Card[] Ability = ((StatusEffect)this).Battle.RollCards(new CardWeightTable(RarityWeightTable.AllOnes, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyAbility, false), ((StatusEffect)this).Level, (Predicate<CardConfig>)null); Card[] array = Ability; foreach (Card card in array) { card.SetTurnCost(Mana); card.IsEthereal = true; } yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Ability, (AddCardsType)0); } } public sealed class SanaeWardSpellSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeWardSpellSeDef))] public sealed class SanaeWardSpellSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<StatusEffectApplyEventArgs>(((StatusEffect)this).Owner.StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded); ((StatusEffect)this).ReactOwnerEvent<UsUsingEventArgs>(((StatusEffect)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args) { if (args.Effect is AmuletForCard) { yield return (BattleAction)new GainPowerAction(args.Effect.Level); } } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { yield return (BattleAction)new AddCardsToDiscardAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((StatusEffect)this).Level, false), (AddCardsType)0); } } public sealed class SanaeWardTalismanSeDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { return SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); } } [EntityLogic(typeof(SanaeWardTalismanSeDef))] public sealed class SanaeWardTalismanSe : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToDiscard, (EventSequencedReactor<CardsEventArgs>)OnAddCard); ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToHand, (EventSequencedReactor<CardsEventArgs>)OnAddCard); ((StatusEffect)this).ReactOwnerEvent<CardsEventArgs>(((StatusEffect)this).Battle.CardsAddedToExile, (EventSequencedReactor<CardsEventArgs>)OnAddCard); ((StatusEffect)this).ReactOwnerEvent<CardsAddingToDrawZoneEventArgs>(((StatusEffect)this).Battle.CardsAddedToDrawZone, (EventSequencedReactor<CardsAddingToDrawZoneEventArgs>)OnCardsAddedToDrawZone); } private IEnumerable<BattleAction> OnAddCard(CardsEventArgs args) { if ((int)((GameEventArgs)args).Cause == 17) { yield break; } <>n__0(); List<Card> list = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZone).Concat(((StatusEffect)this).Battle.DiscardZone) where card.CanUpgradeAndPositive select card).ToList(); if (list.Count == 0) { yield return ((StatusEffect)this).BuffAction<AmuletForCard>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); yield break; } Card[] cards = args.Cards; for (int i = 0; i < cards.Length; i++) { _ = cards[i]; List<Card> chosen = CollectionsExtensions.SampleManyOrAll<Card>((IEnumerable<Card>)list, 1, ((GameEntity)this).GameRun.BattleRng).ToList(); yield return (BattleAction)new UpgradeCardsAction((IEnumerable<Card>)chosen); foreach (Card card2 in chosen) { list.Remove(card2); } } } private IEnumerable<BattleAction> OnCardsAddedToDrawZone(CardsAddingToDrawZoneEventArgs args) { if ((int)((GameEventArgs)args).Cause == 17) { yield break; } <>n__0(); List<Card> list = (from card in ((StatusEffect)this).Battle.HandZone.Concat(((StatusEffect)this).Battle.DrawZone).Concat(((StatusEffect)this).Battle.DiscardZone) where card.CanUpgradeAndPositive select card).ToList(); if (list.Count == 0) { yield return ((StatusEffect)this).BuffAction<AmuletForCard>(((StatusEffect)this).Level, 0, 0, 0, 0.2f); yield break; } Card[] cards = args.Cards; for (int i = 0; i < cards.Length; i++) { _ = cards[i]; List<Card> chosen = CollectionsExtensions.SampleManyOrAll<Card>((IEnumerable<Card>)list, 1, ((GameEntity)this).GameRun.BattleRng).ToList(); yield return (BattleAction)new UpgradeCardsAction((IEnumerable<Card>)chosen); foreach (Card card2 in chosen) { list.Remove(card2); } } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((StatusEffect)this).NotifyActivating(); } } public class SampleCharacterStatusEffectTemplate : 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(SampleCharacterDefaultConfig.GetDefaultID((EntityDefinition)(object)this)); } public override LocalizationOption LoadLocalization() { return (LocalizationOption)(object)SampleCharacterLocalization.StatusEffectsBatchLoc.AddEntity((EntityDefinition)(object)this); } public override Sprite LoadSprite() { return SampleCharacterImageLoader.LoadStatusEffectLoader((StatusEffectTemplate)(object)this); } public override StatusEffectConfig MakeConfig() { return GetDefaultStatusEffectConfig(); } public static StatusEffectConfig GetDefaultStatusEffectConfig() { return SampleCharacterDefaultConfig.GetDefaultStatusEffectConfig(); } } public sealed class TurnStartDontLoseManaDef : SampleCharacterStatusEffectTemplate { public override StatusEffectConfig MakeConfig() { StatusEffectConfig defaultStatusEffectConfig = SampleCharacterStatusEffectTemplate.GetDefaultStatusEffectConfig(); defaultStatusEffectConfig.HasLevel = false; defaultStatusEffectConfig.HasDuration = true; return defaultStatusEffectConfig; } } [EntityLogic(typeof(TurnStartDontLoseManaDef))] public sealed class TurnStartDontLoseMana : StatusEffect { protected override void OnAdded(Unit unit) { ((StatusEffect)this).HandleOwnerEvent<ManaEventArgs>(((StatusEffect)this).Battle.ManaLosing, (GameEventHandler<ManaEventArgs>)OnManaLosing); ((StatusEffect)this).ReactOwnerEvent<UnitEventArgs>(((Unit)((StatusEffect)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnTurnStarted); } private void OnManaLosing(ManaEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Invalid comparison between Unknown and I4 //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) if ((int)((GameEventArgs)args).Cause == 13) { ManaGroup value = args.Value; if (!((ManaGroup)(ref value)).IsEmpty) { ((StatusEffect)this).NotifyActivating(); ((GameEventArgs)args).CancelBy((GameEntity)(object)this); } } } private IEnumerable<BattleAction> OnTurnStarted(UnitEventArgs args) { ((StatusEffect)this).Duration = ((StatusEffect)this).Duration - 1; if (((StatusEffect)this).Duration == 0) { yield return (BattleAction)new RemoveStatusEffectAction((StatusEffect)(object)this, true, 0.1f); } } } } namespace Sanae_Kochiya.Source.Localization { public sealed class SampleCharacterLocalization { public static string Cards = "Cards"; public static string Exhibits = "Exhibits"; public static string EnemyUnit = "EnemyUnit"; public static string PlayerUnit = "PlayerUnit"; public static string UnitModel = "UnitModel"; public static string UltimateSkills = "UltimateSkills"; public static string StatusEffects = "StatusEffects"; public static BatchLocalization CardsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(CardTemplate), Cards, (Locale)0, false); public static BatchLocalization ExhibitsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(ExhibitTemplate), Exhibits, (Locale)0, false); public static BatchLocalization EnemyUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(EnemyUnitTemplate), EnemyUnit, (Locale)0, false); public static BatchLocalization PlayerUnitBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(PlayerUnitTemplate), PlayerUnit, (Locale)0, false); public static BatchLocalization UnitModelBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(UnitModelTemplate), UnitModel, (Locale)0, false); public static BatchLocalization UltimateSkillsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(UltimateSkillTemplate), UltimateSkills, (Locale)0, false); public static BatchLocalization StatusEffectsBatchLoc = new BatchLocalization((IResourceSource)(object)BepinexPlugin.directorySource, typeof(StatusEffectTemplate), StatusEffects, (Locale)0, false); public static void Init() { CardsBatchLoc.DiscoverAndLoadLocFiles(Cards); ExhibitsBatchLoc.DiscoverAndLoadLocFiles(Exhibits); EnemyUnitBatchLoc.DiscoverAndLoadLocFiles(EnemyUnit); PlayerUnitBatchLoc.DiscoverAndLoadLocFiles(PlayerUnit); UnitModelBatchLoc.DiscoverAndLoadLocFiles(UnitModel); UltimateSkillsBatchLoc.DiscoverAndLoadLocFiles(UltimateSkills); StatusEffectsBatchLoc.DiscoverAndLoadLocFiles(StatusEffects); } } } namespace Sanae_Kochiya.Source.Loadouts { public class SampleCharacterLoadouts { public static string UltimateSkillA = "SanaeUltU"; public static string UltimateSkillB = "SanaeUltR"; public static string ExhibitA = "SanaeExhibitU"; public static string ExhibitB = "SanaeExhibitR"; public static List<string> DeckA = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "SanaeAttackW", "SanaeAttackW", "SanaeBlockG", "SanaeBlockG", "SanaeBlockG", "SanaeStarterU" }; public static List<string> DeckB = new List<string> { "Shoot", "Shoot", "Boundary", "Boundary", "SanaeAttackG", "SanaeAttackG", "SanaeBlockW", "SanaeBlockW", "SanaeBlockW", "SanaeStarterR" }; public static PlayerUnitConfig playerUnitConfig; static SampleCharacterLoadouts() { //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Expected O, but got Unknown string modUniqueID = BepinexPlugin.modUniqueID; int? num = 0; ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).White = 2; ((ManaGroup)(ref val)).Blue = 0; ((ManaGroup)(ref val)).Black = 0; ((ManaGroup)(ref val)).Red = 0; ((ManaGroup)(ref val)).Green = 2; ((ManaGroup)(ref val)).Colorless = 0; ((ManaGroup)(ref val)).Philosophy = 0; ManaGroup val2 = val; playerUnitConfig = new PlayerUnitConfig(modUniqueID, true, "", 0, 8, num, true, (int?)null, (ManaColor)2, (ManaColor)4, val2, "#28e25a", 80, 60, 0, UltimateSkillA, UltimateSkillB, ExhibitA, ExhibitB, (IReadOnlyList<string>)DeckA, (IReadOnlyList<string>)DeckB, 3, 2); } } } namespace Sanae_Kochiya.Source.Exhibits { public sealed class SanaeClayVolcanoDef : SampleCharacterExhibitTemplate { public override ExhibitConfig MakeConfig() { ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.IsPooled = true; defaultExhibitConfig.Appearance = (AppearanceType)0; defaultExhibitConfig.Owner = ""; defaultExhibitConfig.LosableType = (ExhibitLosableType)0; defaultExhibitConfig.Rarity = (Rarity)0; defaultExhibitConfig.BaseManaColor = null; defaultExhibitConfig.BaseManaAmount = 0; defaultExhibitConfig.Keywords = (Keyword)16384; defaultExhibitConfig.RelativeEffects = new List<string> { "Firepower" }; return defaultExhibitConfig; } } [EntityLogic(typeof(SanaeClayVolcanoDef))] public sealed class SanaeClayVolcano : Exhibit { private class SanaeClayVolcanoWeighter : IExhibitWeighter { public float WeightFor(Type type, GameRunController gameRun) { if (!BepinexPlugin.modExclusiveConfig.Value) { return 0f; } return 1.15f; } } protected override void OnEnterBattle() { ((Exhibit)this).ReactBattleEvent<StatusEffectApplyEventArgs>(((Unit)((Exhibit)this).Battle.Player).StatusEffectAdded, (EventSequencedReactor<StatusEffectApplyEventArgs>)OnStatusEffectAdded); } private IEnumerable<BattleAction> OnStatusEffectAdded(StatusEffectApplyEventArgs args) { if (args.Effect is Firepower) { <>n__0(); yield return (BattleAction)new GainPowerAction(args.Effect.Level); } } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((Exhibit)this).NotifyActivating(); } } public sealed class SanaeExhibitRDef : SampleCharacterExhibitTemplate { public override ExhibitConfig MakeConfig() { //IL_0018: 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) ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.Value1 = 6; ManaGroup value = default(ManaGroup); ((ManaGroup)(ref value)).Red = 1; defaultExhibitConfig.Mana = value; defaultExhibitConfig.BaseManaColor = (ManaColor)4; defaultExhibitConfig.Keywords = (Keyword)1536; defaultExhibitConfig.RelativeEffects = new List<string> { "Grace" }; return defaultExhibitConfig; } } [EntityLogic(typeof(SanaeExhibitRDef))] public sealed class SanaeExhibitR : ShiningExhibit { protected override void OnEnterBattle() { ((Exhibit)this).ReactBattleEvent<UsUsingEventArgs>(((Exhibit)this).Battle.UsUsing, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsing); ((Exhibit)this).ReactBattleEvent<UsUsingEventArgs>(((Exhibit)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsing(UsUsingEventArgs args) { if (((Unit)((Exhibit)this).Battle.Player).HasStatusEffect<Grace>()) { yield return (BattleAction)(object)new ApplyStatusEffectAction<GraceSetup>((Unit)(object)((Exhibit)this).Owner, (int?)((StatusEffect)((Unit)((Exhibit)this).Battle.Player).GetStatusEffect<Grace>()).Level, (int?)null, (int?)null, (int?)null, 0f, true); } } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { ((Exhibit)this).NotifyActivating(); yield return (BattleAction)new CastBlockShieldAction((Unit)(object)((Exhibit)this).Owner, (Unit)(object)((Exhibit)this).Owner, ((Exhibit)this).Value1, ((Exhibit)this).Value1, (BlockShieldType)1, true); } } public sealed class SanaeExhibitUDef : SampleCharacterExhibitTemplate { public override ExhibitConfig MakeConfig() { //IL_0018: 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) ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.Value1 = 2; ManaGroup value = default(ManaGroup); ((ManaGroup)(ref value)).Blue = 1; defaultExhibitConfig.Mana = value; defaultExhibitConfig.BaseManaColor = (ManaColor)2; defaultExhibitConfig.Keywords = (Keyword)512; defaultExhibitConfig.RelativeEffects = new List<string> { "AmuletForCard" }; return defaultExhibitConfig; } } [EntityLogic(typeof(SanaeExhibitUDef))] public sealed class SanaeExhibitU : ShiningExhibit { protected override void OnEnterBattle() { ((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnEnded, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnEnded); ((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); } private IEnumerable<BattleAction> OnPlayerTurnEnded(UnitEventArgs args) { if (((Unit)((Exhibit)this).Battle.Player).Block != 0 && !((Exhibit)this).Battle.BattleShouldEnd) { ((Exhibit)this).NotifyActivating(); yield return (BattleAction)new DamageAction((Unit)(object)((Exhibit)this).Owner, (Unit)(object)((Exhibit)this).Battle.LowestHpEnemy, new DamageInfo((float)(((Unit)((Exhibit)this).Battle.Player).Block / 3), (DamageType)1, false, false, false), GunNameID.GetGunFromId(39070), (GunType)0); } } private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args) { if (((Unit)((Exhibit)this).Battle.Player).TurnCounter == 1) { ((Exhibit)this).NotifyActivating(); yield return (BattleAction)(object)new ApplyStatusEffectAction<AmuletForCard>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, false); } } } public sealed class SanaeExpiredCouponDef : SampleCharacterExhibitTemplate { public override ExhibitConfig MakeConfig() { ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.IsPooled = true; defaultExhibitConfig.Appearance = (AppearanceType)0; defaultExhibitConfig.Owner = ""; defaultExhibitConfig.LosableType = (ExhibitLosableType)0; defaultExhibitConfig.Rarity = (Rarity)0; defaultExhibitConfig.BaseManaColor = null; defaultExhibitConfig.BaseManaAmount = 0; defaultExhibitConfig.Value1 = 20; defaultExhibitConfig.Keywords = (Keyword)16384; return defaultExhibitConfig; } } [EntityLogic(typeof(SanaeExpiredCouponDef))] public sealed class SanaeExpiredCoupon : Exhibit { private class SanaeExpiredCouponWeighter : IExhibitWeighter { public float WeightFor(Type type, GameRunController gameRun) { if (!BepinexPlugin.modExclusiveConfig.Value) { return 0f; } return 1.15f; } } protected override void OnEnterBattle() { ((Exhibit)this).Active = true; ((Exhibit)this).ReactBattleEvent<UsUsingEventArgs>(((Exhibit)this).Battle.UsUsed, (EventSequencedReactor<UsUsingEventArgs>)OnUsUsed); } private IEnumerable<BattleAction> OnUsUsed(UsUsingEventArgs args) { if (((Exhibit)this).Active) { <>n__0(); ((Exhibit)this).Active = false; yield return (BattleAction)new GainPowerAction(((Exhibit)this).Value1); } } protected override void OnLeaveBattle() { ((Exhibit)this).Active = false; } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((Exhibit)this).NotifyActivating(); } } public sealed class SanaeFizzyBottleDef : SampleCharacterExhibitTemplate { public override ExhibitConfig MakeConfig() { ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.IsPooled = true; defaultExhibitConfig.Appearance = (AppearanceType)0; defaultExhibitConfig.Owner = ""; defaultExhibitConfig.LosableType = (ExhibitLosableType)0; defaultExhibitConfig.Rarity = (Rarity)0; defaultExhibitConfig.BaseManaColor = null; defaultExhibitConfig.BaseManaAmount = 0; defaultExhibitConfig.Value1 = 2; defaultExhibitConfig.RelativeEffects = new List<string> { "TempSpirit" }; return defaultExhibitConfig; } } [EntityLogic(typeof(SanaeFizzyBottleDef))] public sealed class SanaeFizzyBottle : Exhibit { private class SanaeFizzyBottleWeighter : IExhibitWeighter { public float WeightFor(Type type, GameRunController gameRun) { if (!BepinexPlugin.modExclusiveConfig.Value) { return 0f; } return 1.15f; } } protected override void OnEnterBattle() { ((Exhibit)this).ReactBattleEvent<GameEventArgs>(((Exhibit)this).Battle.Reshuffled, (EventSequencedReactor<GameEventArgs>)OnReshuffled); } private IEnumerable<BattleAction> OnReshuffled(GameEventArgs args) { <>n__0(); yield return (BattleAction)(object)new ApplyStatusEffectAction<TempSpirit>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true); } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((Exhibit)this).NotifyActivating(); } } public sealed class SanaeLibraryCardDef : SampleCharacterExhibitTemplate { public override ExhibitConfig MakeConfig() { ExhibitConfig defaultExhibitConfig = GetDefaultExhibitConfig(); defaultExhibitConfig.IsPooled = true; defaultExhibitConfig.Appearance = (AppearanceType)0; defaultExhibitConfig.Owner = ""; defaultExhibitConfig.LosableType = (ExhibitLosableType)0; defaultExhibitConfig.Rarity = (Rarity)0; defaultExhibitConfig.BaseManaColor = null; defaultExhibitConfig.BaseManaAmount = 0; defaultExhibitConfig.Value1 = 3; defaultExhibitConfig.RelativeEffects = new List<string> { "AmuletForCard" }; return defaultExhibitConfig; } } [EntityLogic(typeof(SanaeLibraryCardDef))] public sealed class SanaeLibraryCard : Exhibit { private class SanaeLibraryCardWeighter : IExhibitWeighter { public float WeightFor(Type type, GameRunController gameRun) { if (!BepinexPlugin.modExclusiveConfig.Value) { return 0f; } return 1.15f; } } protected override void OnEnterBattle() { ((Exhibit)this).ReactBattleEvent<UnitEventArgs>(((Unit)((Exhibit)this).Battle.Player).TurnStarted, (EventSequencedReactor<UnitEventArgs>)OnPlayerTurnStarted); ((Exhibit)this).HandleBattleEvent<CardUsingEventArgs>(((Exhibit)this).Battle.CardUsed, (GameEventHandler<CardUsingEventArgs>)OnCardUsed); } private void OnCardUsed(CardUsingEventArgs args) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Invalid comparison between Unknown and I4 if ((int)args.Card.CardType == 1) { ((Exhibit)this).Active = false; } } private IEnumerable<BattleAction> OnPlayerTurnStarted(UnitEventArgs args) { if (((Exhibit)this).Active && !((Exhibit)this).Battle.BattleShouldEnd) { <>n__0(); yield return (BattleAction)(object)new ApplyStatusEffectAction<AmuletForCard>((Unit)(object)((Exhibit)this).Owner, (int?)((Exhibit)this).Value1, (int?)0, (int?)0, (int?)0, 0.2f, true); } ((Exhibit)this).Active = true; } protected override void OnLeaveBattle() { ((Exhibit)this).Active = false; } [CompilerGenerated] [DebuggerHidden] private void <>n__0() { ((Exhibit)this).NotifyActivating(); } } } namespace Sanae_Kochiya.Source.Config { public sealed class SampleCharacterDefaultConfig { private static readonly string OwnerName = BepinexPlugin.modUniqueID; public static string GetDefaultID(EntityDefinition entity) { string name = ((object)entity).GetType().Name; return name.Remove(name.Length - 3); } public static CardConfig GetCardDefaultConfig() { //IL_0034: 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_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Expected O, but got Unknown return new CardConfig(0, "", 10, true, new string[0][], "", "", 0, false, true, false, true, true, (Rarity)0, (CardType)0, (TargetType?)null, (IReadOnlyList<ManaColor>)new List<ManaColor>(), false, default(ManaGroup), (ManaGroup?)null, (ManaGroup?)null, (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (ManaGroup?)null, (ManaGroup?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (Keyword)0, (Keyword)0, false, (Keyword)0, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>(), OwnerName, "", "", false, (string)null, (IReadOnlyList<string>)new List<string>()); } public static ExhibitConfig GetDefaultExhibitConfig() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown return new ExhibitConfig(0, "", 10, false, false, false, false, (AppearanceType)3, OwnerName, (ExhibitLosableType)1, (Rarity)3, (int?)null, (int?)null, (int?)null, (ManaGroup?)default(ManaGroup), (ManaColor?)null, (ManaColor?)(ManaColor)1, 1, false, (int?)null, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>()); } public static StatusEffectConfig GetDefaultStatusEffectConfig() { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown return new StatusEffectConfig(0, "", 10, (StatusEffectType)0, false, true, (int?)null, true, (StackType?)(StackType)0, false, (StackType?)(StackType)0, (DurationDecreaseTiming)0, false, (StackType?)(StackType)3, (StackType?)(StackType)3, false, (Keyword)0, (IReadOnlyList<string>)new List<string>(), (string)null, "Default", "Default", "Default"); } public static UltimateSkillConfig GetDefaultUltConfig() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown return new UltimateSkillConfig("", 10, 100, 100, 2, (UsRepeatableType)1, 1, 0, 0, (Keyword)256, (IReadOnlyList<string>)new List<string>(), (IReadOnlyList<string>)new List<string>()); } } } namespace Sanae_Kochiya.Source.Cards.Uncommon { public sealed class SanaeAbilityTalismanDef : SampleCharacterCardTemplate { public override CardConfig MakeConfig() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) CardConfig cardDefaultConfig = GetCardDefaultConfig(); cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)5 }; ManaGroup cost = default(ManaGroup); ((ManaGroup)(ref cost)).Any = 1; ((ManaGroup)(ref cost)).Green = 1; cardDefaultConfig.Cost = cost; cardDefaultConfig.Rarity = (Rarity)1; cardDefaultConfig.Type = (CardType)3; cardDefaultConfig.TargetType = (TargetType)4; cardDefaultConfig.Value1 = 3; cardDefaultConfig.UpgradedValue1 = 4; cardDefaultConfig.Value2 = 3; cardDefaultConfig.UpgradedValue2 = 4; cardDefaultConfig.Keywords = (Keyword)268435456; cardDefaultConfig.UpgradedKeywords = (Keyword)268435456; cardDefaultConfig.RelativeKeyword = (Keyword)4; cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)4; cardDefaultConfig.RelativeCards = new List<string> { "SanaeStatus" }; cardDefaultConfig.UpgradedRelativeCards = new List<string> { "SanaeStatus" }; cardDefaultConfig.Illustrator = ""; cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 212302; return cardDefaultConfig; } } [EntityLogic(typeof(SanaeAbilityTalismanDef))] public sealed class SanaeAbilityTalisman : SampleCharacterCard { private string ExtraDescription1 { get { if (((Card)this).IsUpgraded) { return ((GameEntity)this).LocalizeProperty("UpgradedExtraDescription1", true, true); } return ((GameEntity)this).LocalizeProperty("ExtraDescription1", true, true); } } protected override string GetBaseDescription() { if (!((Card)this).DebutActive) { return ExtraDescription1; } return ((Card)this).GetBaseDescription(); } protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) yield return (BattleAction)new AddCardsToHandAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((Card)this).Value1, false), (AddCardsType)0); if (!((Card)this).Battle.BattleShouldEnd && ((Card)this).PlayInTriggered) { List<Card> list = new List<Card>(); list.AddRange(((Card)this).Battle.RollCards(new CardWeightTable(RarityWeightTable.NoneRare, OwnerWeightTable.Valid, CardTypeWeightTable.OnlyAbility, false), ((Card)this).Value2, (Predicate<CardConfig>)null)); if (list.Count > 0) { SelectCardInteraction interaction = new SelectCardInteraction(1, 1, (IEnumerable<Card>)list, (SelectedCardHandling)0) { Source = (GameEntity)(object)this }; yield return (BattleAction)new InteractionAction((Interaction)(object)interaction, false); Card selectedCard = interaction.SelectedCards.FirstOrDefault(); yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)(object)new Card[1] { selectedCard }, (DrawZoneTarget)0, (AddCardsType)0); } if (!((Card)this).IsUpgraded) { yield return ((Card)this).BuffAction<CantDrawThisTurn>(0, 0, 0, 0, 0.2f); } } } } public sealed class SanaeAmuletTalismanDef : SampleCharacterCardTemplate { public override CardConfig MakeConfig() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) CardConfig cardDefaultConfig = GetCardDefaultConfig(); cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)1, (ManaColor)5 }; ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).Any = 4; ((ManaGroup)(ref val)).White = 1; ((ManaGroup)(ref val)).Green = 1; cardDefaultConfig.Cost = val; val = default(ManaGroup); ((ManaGroup)(ref val)).Any = 4; ((ManaGroup)(ref val)).Hybrid = 1; ((ManaGroup)(ref val)).HybridColor = 3; cardDefaultConfig.UpgradedCost = val; cardDefaultConfig.Rarity = (Rarity)1; cardDefaultConfig.Type = (CardType)3; cardDefaultConfig.TargetType = (TargetType)4; cardDefaultConfig.Value1 = 25; cardDefaultConfig.UpgradedValue1 = 30; cardDefaultConfig.Value2 = 4; cardDefaultConfig.UpgradedValue2 = 6; val = default(ManaGroup); ((ManaGroup)(ref val)).Any = 2; cardDefaultConfig.Mana = val; cardDefaultConfig.RelativeKeyword = (Keyword)1099511644160L; cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)1099511644160L; cardDefaultConfig.RelativeEffects = new List<string> { "Amulet" }; cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Amulet" }; cardDefaultConfig.RelativeCards = new List<string> { "SanaeStatus" }; cardDefaultConfig.UpgradedRelativeCards = new List<string> { "SanaeStatus" }; cardDefaultConfig.Illustrator = ""; cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 246301; return cardDefaultConfig; } } [EntityLogic(typeof(SanaeAmuletTalismanDef))] public sealed class SanaeAmuletTalisman : SampleCharacterCard { protected override ManaGroup AdditionalCost { get { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (((Card)this).Battle != null) { return ((Card)this).Mana * -AmuletCount; } return ((Card)this).Mana * 0; } } private int AmuletCount { get { if (((Card)this).Battle != null && ((Unit)((Card)this).Battle.Player).HasStatusEffect<Amulet>()) { return ((StatusEffect)((Unit)((Card)this).Battle.Player).GetStatusEffect<Amulet>()).Level; } return 0; } } protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) yield return (BattleAction)new GainPowerAction(((Card)this).Value1); yield return (BattleAction)new AddCardsToDrawZoneAction((IEnumerable<Card>)Library.CreateCards<SanaeStatus>(((Card)this).Value2, false), (DrawZoneTarget)2, (AddCardsType)0); } } public sealed class SanaeAttackBlockDef : SampleCharacterCardTemplate { public override CardConfig MakeConfig() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) CardConfig cardDefaultConfig = GetCardDefaultConfig(); cardDefaultConfig.GunName = GunNameID.GetGunFromId(6003); cardDefaultConfig.GunNameBurst = GunNameID.GetGunFromId(6001); cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)2 }; ManaGroup val = default(ManaGroup); ((ManaGroup)(ref val)).Any = 1; ((ManaGroup)(ref val)).Blue = 1; cardDefaultConfig.Cost = val; val = default(ManaGroup); ((ManaGroup)(ref val)).Any = 1; cardDefaultConfig.UpgradedCost = val; cardDefaultConfig.Rarity = (Rarity)1; cardDefaultConfig.Type = (CardType)1; cardDefaultConfig.TargetType = (TargetType)1; cardDefaultConfig.Damage = 12; cardDefaultConfig.UpgradedDamage = 8; cardDefaultConfig.UpgradedKeywords = (Keyword)8388608; cardDefaultConfig.RelativeKeyword = (Keyword)1024; cardDefaultConfig.UpgradedRelativeKeyword = (Keyword)1024; cardDefaultConfig.Illustrator = ""; cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 222101; return cardDefaultConfig; } } [EntityLogic(typeof(SanaeAttackBlockDef))] public sealed class SanaeAttackBlock : SampleCharacterCard { protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) yield return ((Card)this).AttackAction(selector, (GunPair)null); if (((Unit)selector.GetEnemy(((Card)this).Battle)).IsAlive) { yield return ((Card)this).DebuffAction<SanaeAttackBlockSe>((Unit)(object)selector.GetEnemy(((Card)this).Battle), 0, 0, 0, 0, true, 0.2f); } } } public sealed class SanaeAttackFavorDef : SampleCharacterCardTemplate { public override CardConfig MakeConfig() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) CardConfig cardDefaultConfig = GetCardDefaultConfig(); cardDefaultConfig.GunName = GunNameID.GetGunFromId(851); cardDefaultConfig.Colors = new List<ManaColor> { (ManaColor)1, (ManaColor)4 }; ManaGroup cost = default(ManaGroup); ((ManaGroup)(ref cost)).Any = 1; ((ManaGroup)(ref cost)).White = 1; ((ManaGroup)(ref cost)).Red = 1; cardDefaultConfig.Cost = cost; cardDefaultConfig.Rarity = (Rarity)1; cardDefaultConfig.Type = (CardType)1; cardDefaultConfig.TargetType = (TargetType)1; cardDefaultConfig.Damage = 13; cardDefaultConfig.UpgradedDamage = 8; cardDefaultConfig.Value1 = 2; cardDefaultConfig.Value2 = 3; cardDefaultConfig.UpgradedKeywords = (Keyword)256; cardDefaultConfig.RelativeEffects = new List<string> { "Grace", "Spirit" }; cardDefaultConfig.UpgradedRelativeEffects = new List<string> { "Grace", "Spirit" }; cardDefaultConfig.Illustrator = ""; cardDefaultConfig.Index = CardIndexGenerator.Initial_offset + 273101; return cardDefaultConfig; } } [EntityLogic(typeof(SanaeAttackFavorDef))] public sealed class SanaeAttackFavor : SampleCharacterCard { protected override int AdditionalDamage { get { if (((Card)this).Battle != null) { return PlayerSpiritPositive; } return 0; } } protected override int AdditionalValue2 { get { if (((Card)this).Battle != null) { return PlayerSpiritPositive; } return 0; } } private int PlayerSpiritPositive => Math.Max(0, ((Unit)((Card)this).Battle.Player).TotalSpirit); protected override IEnumerable<BattleAction> Actions(UnitSelector selector, ManaGroup consumingMana, Interaction precondition) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) yield return ((Card)this).AttackAction(selector, (GunPair)null); PlayerUnit player = ((Card)this).Battle.Player; EnemyUnit enemy = selector.GetEnemy(((Card)this).Battle); DamageInfo damage = ((Card)this).Damage; yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player, (Unit)(object)enemy, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f); PlayerUnit player2 = ((Card)this).Battle.Player; EnemyUnit enemy2 = selector.GetEnemy(((Card)this).Battle); damage = ((Card)this).Damage; yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player2, (Unit)(object)enemy2, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f); PlayerUnit player3 = ((Card)this).Battle.Player; EnemyUnit enemy3 = selector.GetEnemy(((Card)this).Battle); damage = ((Card)this).Damage; yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player3, (Unit)(object)enemy3, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.3f); if (((Card)this).IsUpgraded) { yield return ((Card)this).AttackAction(selector, (GunPair)null); PlayerUnit player4 = ((Card)this).Battle.Player; EnemyUnit enemy4 = selector.GetEnemy(((Card)this).Battle); damage = ((Card)this).Damage; yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player4, (Unit)(object)enemy4, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f); PlayerUnit player5 = ((Card)this).Battle.Player; EnemyUnit enemy5 = selector.GetEnemy(((Card)this).Battle); damage = ((Card)this).Damage; yield return (BattleAction)(object)PerformAction.Gun((Unit)(object)player5, (Unit)(object)enemy5, GunNameID.GetGunFromId((((DamageInfo)(ref damage)).Amount > 25f) ? 7311 : 7310), 0.1f); PlayerUnit player6 = ((Card)this).Battle.Player; EnemyUnit enemy6 = selector.GetEnemy(((Card)this).Battle); damage = ((Card)this).Damage; yield return (Bat