using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("ModTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ModTest")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("5216a860-e0eb-41e2-ba19-290bf2caba7f")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
public class PerkModule_ItemRecycling : PerkModule
{
public BuffContainer recycleBuff;
public float recycleChanceMultiplier = 0.3f;
public override void Initialize(Perk p)
{
((PerkModule)this).Initialize(p);
recycleBuff.id = "itemRecycling";
ENT_Player player = ENT_Player.GetPlayer();
bool flag = false;
if (((GameEntity)player).curBuffs.GetBuffContainer(recycleBuff.id) == null)
{
((GameEntity)player).curBuffs.AddBuff(recycleBuff);
((GameEntity)player).curBuffs.GetBuffContainer(recycleBuff.id).SetMultiplier(recycleChanceMultiplier);
flag = true;
}
BuffContainer buffContainer = ((GameEntity)player).curBuffs.GetBuffContainer(recycleBuff.id);
buffContainer.loseOverTime = false;
if (!flag)
{
buffContainer.SetMultiplier(buffContainer.GetMultiplier() + recycleChanceMultiplier);
}
}
}
[HarmonyPatch(typeof(HandItem_Shoot), "Update")]
public class HandItem_Shoot_Update_Patch
{
private static void Postfix(HandItem_Shoot __instance)
{
ENT_Player player = ENT_Player.GetPlayer();
if ((Object)(object)((HandItem)__instance).anim != (Object)null && ((Hand_Base)__instance).hand != null && (Object)(object)player != (Object)null && ((GameEntity)player).curBuffs.GetBuffContainer("reloadBuff") != null)
{
float multiplier = ((GameEntity)player).curBuffs.GetBuffContainer("reloadBuff").GetMultiplier();
if (multiplier > 0f)
{
((HandItem)__instance).anim.speed = 1f + multiplier;
}
}
}
}
[HarmonyPatch(typeof(HandItem_Melee), "Update")]
public class HandItem_Swing_Update_Patch
{
private static void Postfix(HandItem_Shoot __instance)
{
ENT_Player player = ENT_Player.GetPlayer();
if ((Object)(object)((HandItem)__instance).anim != (Object)null && ((Hand_Base)__instance).hand != null && (Object)(object)player != (Object)null && ((GameEntity)player).curBuffs.GetBuffContainer("reloadBuff") != null)
{
float multiplier = ((GameEntity)player).curBuffs.GetBuffContainer("reloadBuff").GetMultiplier();
if (multiplier > 0f)
{
((HandItem)__instance).anim.speed = 1f + multiplier;
}
}
}
}
[HarmonyPatch(typeof(HandItem), "RemoveItem")]
public class Patch_HandItem_RemoveItem
{
[HarmonyPrefix]
public static bool Prefix(HandItem __instance)
{
ENT_Player player = ENT_Player.GetPlayer();
if ((Object)(object)player == (Object)null || ((GameEntity)player).curBuffs == null)
{
return true;
}
BuffContainer buffContainer = ((GameEntity)player).curBuffs.GetBuffContainer("itemRecycling");
if (buffContainer == null)
{
return true;
}
float multiplier = buffContainer.GetMultiplier();
Debug.Log((object)multiplier);
if (Random.value < multiplier)
{
__instance.active = false;
__instance.used = false;
if ((Object)(object)__instance.anim != (Object)null)
{
__instance.anim.Rebind();
__instance.anim.Update(0f);
}
HandItem_Food val = (HandItem_Food)(object)((__instance is HandItem_Food) ? __instance : null);
if (val != null)
{
val.FinishEating();
}
return false;
}
return true;
}
}
[HarmonyPatch(typeof(Item), "Destroy")]
public class Patch_Item_RemoveItem
{
[HarmonyPrefix]
public static bool Prefix(HandItem __instance)
{
ENT_Player player = ENT_Player.GetPlayer();
if ((Object)(object)player == (Object)null || ((GameEntity)player).curBuffs == null)
{
return true;
}
BuffContainer buffContainer = ((GameEntity)player).curBuffs.GetBuffContainer("itemRecycling");
if (buffContainer == null)
{
return true;
}
float num = Mathf.Clamp01(buffContainer.GetMultiplier());
if (Random.value < num)
{
return false;
}
return true;
}
}
public class PerkModule_FastReload : PerkModule
{
public BuffContainer reloadBuff;
private int counter = 0;
public float reloadSpeedMultiplier = 0.2f;
public override void Initialize(Perk p)
{
((PerkModule)this).Initialize(p);
reloadBuff.id = "reloadBuff";
ENT_Player player = ENT_Player.GetPlayer();
if (((GameEntity)player).curBuffs.GetBuffContainer(reloadBuff.id) == null)
{
((GameEntity)player).curBuffs.AddBuff(reloadBuff);
}
((GameEntity)player).curBuffs.GetBuffContainer(reloadBuff.id).loseOverTime = false;
((GameEntity)player).curBuffs.GetBuffContainer(reloadBuff.id).SetMultiplier(((GameEntity)player).curBuffs.GetBuffContainer(reloadBuff.id).GetMultiplier() + reloadSpeedMultiplier);
}
}
public class PerkModule_JumpCombo : PerkModule
{
public BuffContainer buff;
public float buffMultiplier = 1f;
[Header("Combo Settings")]
public float buffAmount = 0f;
public float buffMax = 3f;
public float buffIncreasePerJump = 1f;
public float buffDecayRate = 5f;
private BuffContainer currentBuff;
public override void Initialize(Perk p)
{
((PerkModule)this).Initialize(p);
ENT_Player player = ENT_Player.GetPlayer();
if (buff.id != "")
{
currentBuff = ((GameEntity)player).curBuffs.GetBuffContainer(buff.id);
}
if (currentBuff == null)
{
((GameEntity)player).curBuffs.AddBuff(buff);
currentBuff = ((GameEntity)player).curBuffs.GetBuffContainer(buff.id);
}
player._OnJump = (Action)Delegate.Combine(player._OnJump, new Action(OnJump));
currentBuff.SetMultiplier(0f);
currentBuff.buffs[0].maxAmount = currentBuff.buffs[0].maxAmount * (float)player.GetPerk(p.id).stackAmount;
Debug.Log((object)currentBuff.buffs[0].maxAmount);
}
public override void Update()
{
((PerkModule)this).Update();
ENT_Player player = ENT_Player.GetPlayer();
if (player.IsGrounded(false) || player.IsHanging())
{
buffAmount -= buffDecayRate * Time.deltaTime;
}
buffAmount = Mathf.Clamp(buffAmount, 0f, buffMax);
currentBuff.SetMultiplier(buffAmount * buffMultiplier);
}
public void OnJump()
{
ENT_Player player = ENT_Player.GetPlayer();
if (player.IsGrounded(true))
{
buffAmount += buffIncreasePerJump;
buffAmount = Mathf.Clamp(buffAmount, 0f, buffMax);
}
}
public override void OnDestroy(Perk p)
{
ENT_Player player = ENT_Player.GetPlayer();
((GameEntity)player).curBuffs.RemoveBuffContainer(buff.id);
player._OnJump = (Action)Delegate.Remove(player._OnJump, new Action(OnJump));
((PerkModule)this).OnDestroy(p);
}
}
public class PerkModule_Scavenging : PerkModule
{
private int last_roaches = 0;
public override void Initialize(Perk p)
{
((PerkModule)this).Initialize(p);
Random random = new Random();
if (random.Next(100) < 5)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans_Periphery", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 20)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Food_Bar", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 100)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans", "").itemData.GetClone((Item)null, false));
}
random = new Random();
if (random.Next(100) < 1)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans_Periphery", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 20)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Food_Bar", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 100)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans", "").itemData.GetClone((Item)null, false));
}
}
public override void Update()
{
((PerkModule)this).Update();
int roaches = CL_GameManager.GetRoaches(false);
if (roaches < last_roaches)
{
Random random = new Random();
if (random.Next(100) < 1)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans_Periphery", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 20)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Food_Bar", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 100)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans", "").itemData.GetClone((Item)null, false));
}
random = new Random();
if (random.Next(100) < 1)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans_Periphery", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 20)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Food_Bar", "").itemData.GetClone((Item)null, false));
}
else if (random.Next(100) < 100)
{
Inventory.instance.AddItemToInventoryCenter(CL_AssetManager.GetItemObjectPrefab("Item_Beans", "").itemData.GetClone((Item)null, false));
}
}
last_roaches = roaches;
}
public override void OnDestroy(Perk p)
{
((PerkModule)this).OnDestroy(p);
}
}
public class PerkModule_WallJump : PerkModule
{
public int maxWallJumps = 1;
public float horizontalPushForce = 0.43f;
public float verticalJumpForce = 0f;
private int currentWallJumps = 0;
private FieldInfo hasJumpedField;
private bool jumpGranted = false;
private Vector3 lastWallNormal = Vector3.zero;
public override void Initialize(Perk p)
{
((PerkModule)this).Initialize(p);
hasJumpedField = typeof(ENT_Player).GetField("temporaryExtraJumpsRemaining", BindingFlags.Instance | BindingFlags.NonPublic);
ENT_Player player = ENT_Player.GetPlayer();
player._OnJump = (Action)Delegate.Combine(player._OnJump, new Action(OnJump));
}
public override void Update()
{
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Invalid comparison between Unknown and I4
//IL_0080: 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_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: 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)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
((PerkModule)this).Update();
ENT_Player player = ENT_Player.GetPlayer();
if (player.IsHanging() || player.IsGrounded(false))
{
currentWallJumps = 0;
jumpGranted = false;
lastWallNormal = Vector3.zero;
}
if (player.IsGrounded(false) || player.IsHanging() || currentWallJumps >= maxWallJumps)
{
return;
}
if ((player.cCon.collisionFlags & 1) > 0)
{
Vector3 wallNormal = GetWallNormal(player);
if (wallNormal != Vector3.zero)
{
lastWallNormal = wallNormal;
}
if (hasJumpedField != null && (int)hasJumpedField.GetValue(player) == 0 && !jumpGranted)
{
jumpGranted = true;
hasJumpedField.SetValue(player, 1);
}
}
else if (jumpGranted && hasJumpedField != null && (int)hasJumpedField.GetValue(player) == 1)
{
hasJumpedField.SetValue(player, 0);
jumpGranted = false;
}
}
public void OnJump()
{
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: 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_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: 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_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
ENT_Player player = ENT_Player.GetPlayer();
if (!player.IsGrounded(false) && jumpGranted && !player.IsHanging())
{
currentWallJumps++;
if (lastWallNormal != Vector3.zero)
{
Vector3 val = new Vector3(lastWallNormal.x, 0f, lastWallNormal.z);
Vector3 normalized = ((Vector3)(ref val)).normalized;
Vector3 val2 = normalized * horizontalPushForce + Vector3.up * verticalJumpForce;
((GameEntity)player).AddForce(val2, "");
}
}
}
private Vector3 GetWallNormal(ENT_Player player)
{
//IL_002d: 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)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: 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_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: 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)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: 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_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: 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_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: 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_00da: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_0115: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_011f: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_015b: 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_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: Unknown result type (might be due to invalid IL or missing references)
//IL_0171: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
//IL_019d: Unknown result type (might be due to invalid IL or missing references)
//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
//IL_0185: Unknown result type (might be due to invalid IL or missing references)
//IL_018a: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)player.cCon == (Object)null)
{
return Vector3.zero;
}
Vector3[] obj = new Vector3[8]
{
((Component)player).transform.forward,
-((Component)player).transform.forward,
((Component)player).transform.right,
-((Component)player).transform.right,
default(Vector3),
default(Vector3),
default(Vector3),
default(Vector3)
};
Vector3 val = ((Component)player).transform.forward + ((Component)player).transform.right;
obj[4] = ((Vector3)(ref val)).normalized;
val = ((Component)player).transform.forward - ((Component)player).transform.right;
obj[5] = ((Vector3)(ref val)).normalized;
val = -((Component)player).transform.forward + ((Component)player).transform.right;
obj[6] = ((Vector3)(ref val)).normalized;
val = -((Component)player).transform.forward - ((Component)player).transform.right;
obj[7] = ((Vector3)(ref val)).normalized;
Vector3[] array = (Vector3[])(object)obj;
float num = player.cCon.radius + 0.3f;
Vector3 val2 = ((Component)player).transform.position + player.cCon.center;
Vector3[] array2 = array;
RaycastHit val4 = default(RaycastHit);
foreach (Vector3 val3 in array2)
{
if (Physics.Raycast(val2, val3, ref val4, num))
{
return ((RaycastHit)(ref val4)).normal;
}
}
return Vector3.zero;
}
public override void OnDestroy(Perk p)
{
ENT_Player player = ENT_Player.GetPlayer();
if ((Object)(object)player != (Object)null)
{
player._OnJump = (Action)Delegate.Remove(player._OnJump, new Action(OnJump));
}
((PerkModule)this).OnDestroy(p);
}
}
namespace Severon.DropLogPerkMod;
[HarmonyPatch(typeof(App_PerkPage), "GenerateCards")]
public static class DropLogPerkInjectPatch
{
private static readonly FieldInfo _cardsField = AccessTools.Field(typeof(App_PerkPage), "cards");
private static Sprite _trainedSoldierCardSprite;
private static Sprite _perkFrameAdvancedSprite;
private static bool _spritesLoaded = false;
[HarmonyPostfix]
public static void Postfix(App_PerkPage __instance)
{
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Invalid comparison between Unknown and I4
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)__instance == (Object)null) && _cardsField?.GetValue(__instance) is List<App_PerkPage_Card> list && (int)__instance.perkPageType <= 0)
{
LoadSpritesIfNeeded();
Func<Perk>[] array = new Func<Perk>[7] { TrainedSoldier, ItemRecycling, Scavenger, FloatationDevice, RunningJump, AcrobaticLeap, WallBounce };
Perk val = array[Random.Range(0, array.Length)]();
if ((Object)(object)val == (Object)null)
{
val = WallBounce();
}
App_PerkPage_Card val2 = Object.Instantiate<App_PerkPage_Card>(__instance.cardAsset, __instance.cardParent.position, Quaternion.identity, __instance.cardParent);
if (!((Object)(object)val2 == (Object)null))
{
val2.Initialize(__instance, val);
list.Add(val2);
}
}
}
private static void LoadSpritesIfNeeded()
{
if (!_spritesLoaded)
{
_trainedSoldierCardSprite = LoadSpriteFromFile("TrainedSoldierCard.png");
_perkFrameAdvancedSprite = LoadSpriteFromFile("PerkCard_Frame_Advanced.png");
_spritesLoaded = true;
}
}
private static Perk TrainedSoldier()
{
Perk val = ScriptableObject.CreateInstance<Perk>();
val.id = "severon_soldier_perk";
val.title = "Trained Soldier";
val.description = "Your weapons are swung, fired, and reloaded faster.";
val.cost = 5;
val.perkCard = _trainedSoldierCardSprite;
val.perkFrame = _perkFrameAdvancedSprite;
val.modules = new List<PerkModule> { (PerkModule)(object)new PerkModule_FastReload() };
return val;
}
private static Perk ItemRecycling()
{
Perk val = ScriptableObject.CreateInstance<Perk>();
val.id = "severon_recycle_perk";
val.title = "Item Recycling";
val.description = "Items have a 30% chance to not be destroyed when they otherwise would be. (Includes food, rebar, ammo, etcetera)";
val.cost = 8;
val.modules = new List<PerkModule> { (PerkModule)(object)new PerkModule_ItemRecycling() };
val.perkCard = _trainedSoldierCardSprite;
val.perkFrame = _perkFrameAdvancedSprite;
return val;
}
private static Perk Scavenger()
{
Perk val = ScriptableObject.CreateInstance<Perk>();
val.id = "severon_scavenge_perk";
val.title = "Promotional Deal";
val.description = "Obtain two random food items when you spend roaches.";
val.cost = 3;
val.modules = new List<PerkModule> { (PerkModule)(object)new PerkModule_Scavenging() };
val.perkCard = _trainedSoldierCardSprite;
val.perkFrame = _perkFrameAdvancedSprite;
return val;
}
private static Perk FloatationDevice()
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: 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_0069: 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_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Expected O, but got Unknown
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Expected O, but got Unknown
//IL_00e5: Expected O, but got Unknown
Perk val = ScriptableObject.CreateInstance<Perk>();
val.id = "severon_floater_perk";
val.title = "Floatation Device";
val.description = "You have {%addGravity}% less gravity and {%addClimb}% Climbing Speed";
val.cost = 12;
val.buff = new BuffContainer
{
id = "severon_floater_buff",
desc = "Floatation Device Effects",
loseOverTime = false,
loseRate = 0f,
buffTime = 1f,
multiplier = 1f,
loseRateEffectedByPerks = false,
buffs = new List<Buff>
{
new Buff
{
id = "addGravity",
maxAmount = -0.25f,
amount = 0f
},
new Buff
{
id = "addClimb",
maxAmount = 1f,
amount = 0f
}
}
};
val.perkCard = _trainedSoldierCardSprite;
val.perkFrame = _perkFrameAdvancedSprite;
return val;
}
private static Perk RunningJump()
{
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: 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)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: 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_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: 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_007b: Expected O, but got Unknown
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: 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_00d6: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: Expected O, but got Unknown
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_011e: Expected O, but got Unknown
//IL_0129: Expected O, but got Unknown
Perk val = ScriptableObject.CreateInstance<Perk>();
val.id = "severon_Running_jump_perk";
val.title = "Running Jump";
val.description = "The longer you sprint while grounded, the higher you jump.";
val.cost = 10;
PerkModule_PlayerStates val2 = new PerkModule_PlayerStates
{
playerState = (PlayerState)4,
buffMultiplier = 1f,
buffChangeRate = 0.4f,
buffRaiseRateMult = 1f,
buffLowerRateMult = 2f,
persistTime = 0f,
useHandEffectModule = false
};
val2.buff = new BuffContainer
{
id = "severon_momentum_jump_buff",
desc = "Sprinting Jump Height Modifier",
loseOverTime = false,
loseRate = 0f,
buffTime = 1f,
multiplier = 0f,
buffs = new List<Buff>
{
new Buff
{
id = "addJump",
maxAmount = 2f,
amount = 0f
},
new Buff
{
id = "addSpeed",
maxAmount = 1f,
amount = 0f
}
}
};
val.modules = new List<PerkModule> { (PerkModule)(object)val2 };
val.perkCard = _trainedSoldierCardSprite;
val.perkFrame = _perkFrameAdvancedSprite;
return val;
}
private static Perk AcrobaticLeap()
{
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//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_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Expected O, but got Unknown
//IL_00ec: Expected O, but got Unknown
Perk val = ScriptableObject.CreateInstance<Perk>();
val.id = "severon_acrobatic_leap_perk";
val.title = "Acrobatic Leap";
val.description = "Chaining jumps without touching the ground or hanging grants progressively higher jumps. Loses momentum quickly on landing.";
val.flavorText = "Whoop.. whup.. WAHOO!";
val.cost = 5;
PerkModule_JumpCombo item = new PerkModule_JumpCombo
{
buffMultiplier = 1f,
buffMax = 3f,
buffIncreasePerJump = 1f,
buffDecayRate = 4f,
buff = new BuffContainer
{
id = "severon_acrobatic_leap_buff",
desc = "Jump Combo Momentum",
loseOverTime = false,
loseRate = 0f,
buffTime = 1f,
multiplier = 0f,
buffs = new List<Buff>
{
new Buff
{
id = "addJump",
maxAmount = 0.35f,
amount = 0f
}
}
}
};
val.modules = new List<PerkModule> { (PerkModule)(object)item };
val.perkCard = _trainedSoldierCardSprite;
val.perkFrame = _perkFrameAdvancedSprite;
return val;
}
private static Perk WallBounce()
{
Perk val = ScriptableObject.CreateInstance<Perk>();
val.id = "severon_wall_jump_perk";
val.title = "Pike Shoes";
val.description = "You can wall jump once before landing or climbing.";
val.cost = 8;
val.modules = new List<PerkModule> { (PerkModule)(object)new PerkModule_WallJump() };
val.perkCard = _trainedSoldierCardSprite;
val.perkFrame = _perkFrameAdvancedSprite;
return val;
}
private static Sprite LoadSpriteFromFile(string fileName)
{
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Expected O, but got Unknown
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string text = Path.Combine(directoryName, fileName);
if (!File.Exists(text))
{
Debug.LogError((object)("[SeveronMod] Image file not found at: " + text));
return null;
}
byte[] array = File.ReadAllBytes(text);
Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false);
if (ImageConversion.LoadImage(val, array))
{
Sprite val2 = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f), 100f);
((Texture)val2.texture).filterMode = (FilterMode)0;
return val2;
}
return null;
}
}
public class PerkModule_LogOnDrop : PerkModule_HoldDrop
{
public override void HoldDrop(Hand hand)
{
((PerkModule_HoldDrop)this).HoldDrop(hand);
Debug.Log((object)"Drop button held");
}
}
[BepInPlugin("com.severon.droplogperk", "Severon Drop Log Perk Mod", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
private void Awake()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
Harmony val = new Harmony("com.severon.droplogperk");
val.PatchAll();
((BaseUnityPlugin)this).Logger.LogInfo((object)"Severon's Perk Mod loaded successfully, hell yeah.");
}
}