using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using AutoKill;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using ModdingTales;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Auto Kill")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("HolloFox")]
[assembly: AssemblyProduct("AKP")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("4e4deb5e-97f9-4901-bf67-6748a9c1229a")]
[assembly: AssemblyFileVersion("1.0.2.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.2.0")]
namespace AutoKillPlugin.Patches
{
[HarmonyPatch(typeof(UI_InitativeManager), "OnTurnSwitch")]
public class InitiativeManagerReleaseCreaturePatch
{
private static void Postfix(QueueElement element)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
if (AutoKill.AutoKillPlugin.creaturesToDelete.ContainsKey(element.CreatureGuid))
{
AutoKill.AutoKillPlugin.creaturesPendingDeletion.AddFirst((AutoKill.AutoKillPlugin.creaturesToDelete[element.CreatureGuid], DateTimeOffset.Now));
AutoKill.AutoKillPlugin.creaturesToDelete.Remove(element.CreatureGuid);
}
}
}
}
namespace AutoKill
{
[BepInPlugin("org.hollofox.plugins.AutoKillPlugin", "Auto Kill Plugin", "1.0.2.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class AutoKillPlugin : BaseUnityPlugin
{
public const string Guid = "org.hollofox.plugins.AutoKillPlugin";
public const string Name = "Auto Kill Plugin";
public const string Version = "1.0.2.0";
private ConfigEntry<KeyboardShortcut> trigger;
private ConfigEntry<int> ttl;
internal static Dictionary<CreatureGuid, CreatureBoardAsset> creaturesToDelete = new Dictionary<CreatureGuid, CreatureBoardAsset>();
internal static LinkedList<(CreatureBoardAsset, DateTimeOffset)> creaturesPendingDeletion = new LinkedList<(CreatureBoardAsset, DateTimeOffset)>();
internal static ActionTimeline knockedDownAction;
private void Awake()
{
//IL_002b: 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)
Debug.Log((object)"Auto Kill loaded");
trigger = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("Hotkeys", "Delete Asset", new KeyboardShortcut((KeyCode)127, (KeyCode[])(object)new KeyCode[1] { (KeyCode)305 }), (ConfigDescription)null);
ttl = ((BaseUnityPlugin)this).Config.Bind<int>("Timer", "Time To Live", 30, (ConfigDescription)null);
ModdingUtils.AddPluginToMenuList((BaseUnityPlugin)(object)this);
new Harmony("org.hollofox.plugins.AutoKillPlugin").PatchAll();
SingletonStateMBehaviour<PlayMode, State>.OnStateChange += delegate(State mode)
{
//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: 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_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: 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_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: 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)
if (((BaseState<PlayMode, State>)(object)mode).Is<TurnBased>())
{
while (creaturesPendingDeletion.Count > 0)
{
CreatureBoardAsset item = creaturesPendingDeletion.First().Item1;
creaturesPendingDeletion.RemoveFirst();
creaturesToDelete.Add(item.CreatureId, item);
}
_ = InitiativeManager.CurrentTurnElement;
if (creaturesToDelete.ContainsKey(InitiativeManager.CurrentTurnElement.CreatureGuid))
{
CreatureGuid creatureGuid = InitiativeManager.CurrentTurnElement.CreatureGuid;
CreatureBoardAsset item2 = creaturesToDelete[creatureGuid];
creaturesPendingDeletion.AddFirst((item2, DateTimeOffset.Now));
creaturesToDelete.Remove(creatureGuid);
}
}
else
{
CreatureGuid[] array = creaturesToDelete.Keys.ToArray();
foreach (CreatureGuid key in array)
{
CreatureBoardAsset item3 = creaturesToDelete[key];
creaturesPendingDeletion.AddFirst((item3, DateTimeOffset.Now.AddSeconds(ttl.Value)));
creaturesToDelete.Remove(key);
}
}
};
knockedDownAction = ActionTimelineDatabase.GetActionPrefab("TLA_Action_Knockdown");
}
private void Update()
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
if (LocalClient.IsInGmMode)
{
if (StrictKeyCheck(trigger.Value))
{
DeleteCreatures();
}
if (creaturesPendingDeletion.Count > 0 && creaturesPendingDeletion.First().Item2 < DateTimeOffset.Now)
{
CreatureBoardAsset item = creaturesPendingDeletion.First().Item1;
creaturesPendingDeletion.RemoveFirst();
item.RequestDelete();
}
}
}
public bool StrictKeyCheck(KeyboardShortcut check)
{
//IL_0024: 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_0032: Unknown result type (might be due to invalid IL or missing references)
if (!((KeyboardShortcut)(ref check)).IsUp())
{
return false;
}
KeyCode[] array = new KeyCode[6];
RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
KeyCode[] array2 = (KeyCode[])(object)array;
foreach (KeyCode val in array2)
{
if (Input.GetKey(val) != ((KeyboardShortcut)(ref check)).Modifiers.Contains(val))
{
return false;
}
}
return true;
}
private void DeleteCreatures()
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0176: Unknown result type (might be due to invalid IL or missing references)
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Unknown result type (might be due to invalid IL or missing references)
//IL_0192: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_01af: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
CreatureGuid[] array = default(CreatureGuid[]);
if (LocalClient.HasLassoedCreatures)
{
LocalClient.TryGetLassoedCreatureIds(ref array);
}
else
{
array = (CreatureGuid[])(object)new CreatureGuid[1] { LocalClient.SelectedCreatureId };
}
if (array.Any((CreatureGuid c) => !creaturesToDelete.ContainsKey(c)))
{
CreatureBoardAsset val = default(CreatureBoardAsset);
foreach (CreatureGuid item in array.Where((CreatureGuid c) => !creaturesToDelete.ContainsKey(c)))
{
if (CreaturePresenter.TryGetAsset(item, ref val))
{
if (!val.IsPersistantEmoteEnabled(knockedDownAction.ActionTimelineId))
{
val.ToggleStatusEmote(knockedDownAction);
}
if (((BaseState<PlayMode, State>)(object)((StateMBehaviour<PlayMode, State>)(object)SingletonStateMBehaviour<PlayMode, State>.Instance).CurrentState).Is<TurnBased>())
{
_ = InitiativeManager.CurrentTurnElement;
if (InitiativeManager.CurrentTurnElement.CreatureGuid == item)
{
creaturesPendingDeletion.AddFirst((val, DateTimeOffset.Now));
}
else
{
creaturesToDelete.Add(item, val);
}
}
else
{
creaturesPendingDeletion.AddFirst((val, DateTimeOffset.Now.AddSeconds(ttl.Value)));
}
}
}
return;
}
if (!array.All((CreatureGuid c) => creaturesToDelete.ContainsKey(c)))
{
return;
}
CreatureGuid[] array2 = array;
foreach (CreatureGuid key in array2)
{
CreatureBoardAsset val2 = creaturesToDelete[key];
if (val2.IsPersistantEmoteEnabled(knockedDownAction.ActionTimelineId))
{
val2.ToggleStatusEmote(knockedDownAction);
}
creaturesToDelete.Remove(key);
}
}
}
}
namespace AutoKill.Properties
{
[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[DebuggerNonUserCode]
[CompilerGenerated]
internal class Resources
{
private static ResourceManager resourceMan;
private static CultureInfo resourceCulture;
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static ResourceManager ResourceManager
{
get
{
if (resourceMan == null)
{
resourceMan = new ResourceManager("AutoKill.Properties.Resources", typeof(Resources).Assembly);
}
return resourceMan;
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
internal Resources()
{
}
}
}