using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AncientScepter;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using BetterUI;
using Enforcer;
using Enforcer.Emotes;
using Enforcer.Modules.Compat;
using Enforcer.Nemesis;
using EnforcerPlugin;
using EntityStates;
using EntityStates.BeetleGuardMonster;
using EntityStates.Bison;
using EntityStates.ClayBruiser.Weapon;
using EntityStates.Commando;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.Croco;
using EntityStates.Enforcer;
using EntityStates.Enforcer.NeutralSpecial;
using EntityStates.GlobalSkills.LunarNeedle;
using EntityStates.GolemMonster;
using EntityStates.Huntress;
using EntityStates.LemurianBruiserMonster;
using EntityStates.Loader;
using EntityStates.Mage;
using EntityStates.Merc;
using EntityStates.Nemforcer;
using EntityStates.Nemforcer.Emotes;
using EntityStates.NullifierMonster;
using EntityStates.Toolbot;
using HG;
using HG.BlendableTypes;
using KinematicCharacterController;
using Modules;
using Modules.Characters;
using MonoMod.RuntimeDetour;
using On.EntityStates;
using On.EntityStates.GlobalSkills.LunarNeedle;
using On.EntityStates.GolemMonster;
using On.RoR2;
using On.RoR2.ContentManagement;
using On.RoR2.UI.MainMenu;
using R2API;
using R2API.Utils;
using Risky_Artifacts.Artifacts;
using RoR2;
using RoR2.Achievements;
using RoR2.CameraModes;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using RoR2.UI.MainMenu;
using RoR2BepInExPack.GameAssetPaths;
using SkillsPlusPlus;
using SkillsPlusPlus.Modifiers;
using SupplyDrop.Items;
using Survariants;
using TILER2;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
using UnityEngine.Serialization;
using UnityEngine.UI;
using VRAPI;
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyCompany("Enforcer")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyTitle("Enforcer")]
[assembly: AssemblyInformationalVersion("1.0.0+2d9e188233f6eb2889f81679e0ce351d16ad11ca")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyProduct("Enforcer")]
[assembly: CompilationRelaxations(8)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
public class ArmStrapRagdollHandler : MonoBehaviour
{
[SerializeField]
private Transform ShieldBone;
private void OnDisable()
{
((Component)this).transform.SetParent(ShieldBone);
}
}
public class EnergyShieldControler : MonoBehaviour
{
public Vector3 shieldAimRayDirection = new Vector3(0f, 0f, 0f);
private float angle;
public HealthComponent healthComponent;
private bool isSet;
private void Start()
{
SetCharacterbody();
}
private void SetCharacterbody()
{
//IL_0048: 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_0255: Unknown result type (might be due to invalid IL or missing references)
if (!isSet)
{
isSet = true;
CharacterBody val = ((Component)this).gameObject.AddComponent<CharacterBody>();
((Object)val).name = "EnergyShield";
val.baseNameToken = "";
val.subtitleNameToken = "";
val.bodyFlags = (BodyFlags)16;
val.rootMotionInMainState = false;
val.mainRootSpeed = 0f;
val.baseMaxHealth = 15f;
val.levelMaxHealth = 0f;
val.baseRegen = 0f;
val.levelRegen = 0f;
val.baseMaxShield = 0f;
val.levelMaxShield = 0f;
val.baseMoveSpeed = 0f;
val.levelMoveSpeed = 0f;
val.baseAcceleration = 0f;
val.baseJumpPower = 0f;
val.levelJumpPower = 0f;
val.baseDamage = 0f;
val.levelDamage = 0f;
val.baseAttackSpeed = 0f;
val.levelAttackSpeed = 0f;
val.baseCrit = 0f;
val.levelCrit = 0f;
val.baseArmor = 0f;
val.levelArmor = 0f;
val.baseJumpCount = 0;
val.sprintingSpeedMultiplier = 0f;
val.wasLucky = false;
val.hideCrosshair = true;
val._defaultCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/SMGCrosshair");
val.aimOriginTransform = ((Component)this).transform;
val.hullClassification = (HullClassification)0;
val.portraitIcon = null;
val.isChampion = false;
val.currentVehicle = null;
val.skinIndex = 0u;
healthComponent = ((Component)this).gameObject.AddComponent<HealthComponent>();
healthComponent.health = 15f;
healthComponent.shield = 0f;
healthComponent.barrier = 0f;
healthComponent.magnetiCharge = 0f;
healthComponent.body = val;
healthComponent.dontShowHealthbar = false;
healthComponent.globalDeathEventChanceCoefficient = 1f;
HurtBoxGroup val2 = ((Component)this).gameObject.AddComponent<HurtBoxGroup>();
HurtBox val3 = ((Component)((Component)this).gameObject.GetComponentInChildren<MeshCollider>()).gameObject.AddComponent<HurtBox>();
((Component)val3).gameObject.layer = LayerIndex.entityPrecise.intVal;
val3.healthComponent = healthComponent;
val3.isBullseye = true;
val3.damageModifier = (DamageModifier)0;
val3.hurtBoxGroup = val2;
val3.indexInGroup = 0;
val2.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val3 };
}
}
private void Update()
{
//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_006d: Unknown result type (might be due to invalid IL or missing references)
Vector3 val = default(Vector3);
((Vector3)(ref val))..ctor(shieldAimRayDirection.x, 0f, shieldAimRayDirection.z);
float num = -1f * (shieldAimRayDirection.y / Mathf.Abs(shieldAimRayDirection.y));
float num2 = num * Vector3.Angle(shieldAimRayDirection, val);
((Component)this).transform.Rotate(new Vector3(num2 - angle, 0f, 0f));
angle = num2;
}
public void Toggle()
{
healthComponent.health = healthComponent.fullHealth;
}
private void OnEnable()
{
if (!isSet)
{
SetCharacterbody();
}
healthComponent.health = healthComponent.fullHealth;
}
}
public class EngiShieldTex : MonoBehaviour
{
[SerializeField]
private float offsetRate = 0.1f;
private float offsetRateVSOverride = -1f;
private Renderer _rend;
private float _offset;
private MaterialPropertyBlock matProperties;
private Vector2 tiling;
private bool col = false;
private void Start()
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Expected O, but got Unknown
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
offsetRate = ((offsetRateVSOverride == -1f) ? offsetRate : offsetRateVSOverride);
_rend = ((Component)this).GetComponent<Renderer>();
matProperties = new MaterialPropertyBlock();
tiling = _rend.material.GetTextureScale("_MainTex");
}
private void Update()
{
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
_offset += offsetRate * Time.deltaTime;
if (_offset > 1f)
{
_offset -= 1f;
}
_rend.GetPropertyBlock(matProperties);
matProperties.SetVector("_MainTex_ST", new Vector4(tiling.x, tiling.y, _offset, _offset));
_rend.SetPropertyBlock(matProperties);
}
}
public class ItemDisplayBones : MonoBehaviour
{
[SerializeField]
private GameObject[] itemBones;
private void Awake()
{
OnEnable();
}
private void OnEnable()
{
for (int i = 0; i < itemBones.Length; i++)
{
itemBones[i].SetActive(true);
}
}
private void OnDisable()
{
for (int i = 0; i < itemBones.Length; i++)
{
itemBones[i].SetActive(false);
}
}
}
public class MemeBoneController : MonoBehaviour
{
[SerializeField]
private Transform origBone;
[SerializeField]
[FormerlySerializedAs("position")]
private bool positionAndRotation = true;
[Header("LateUpdate")]
[SerializeField]
private bool localPosition = false;
[FormerlySerializedAs("scale")]
[SerializeField]
private bool localScale = false;
private void Update()
{
//IL_0031: 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)
if (Object.op_Implicit((Object)(object)origBone) && positionAndRotation)
{
((Component)origBone).transform.rotation = ((Component)this).transform.rotation;
((Component)origBone).transform.position = ((Component)this).transform.position;
}
}
private void LateUpdate()
{
//IL_0030: 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)
if (Object.op_Implicit((Object)(object)origBone))
{
if (localPosition)
{
((Component)origBone).transform.localPosition = ((Component)this).transform.localPosition;
}
if (localScale)
{
((Component)origBone).transform.localScale = ((Component)this).transform.localScale;
}
}
}
}
public class MemeRigController : MonoBehaviour
{
[SerializeField]
private Animator memeAnimator;
[SerializeField]
private GameObject memeScaler;
[SerializeField]
private Animator origAnimator;
public bool isPlaying;
public Animator MemeAnimator => memeAnimator;
private void Awake()
{
((Component)memeAnimator).gameObject.SetActive(false);
}
public void playMemeAnim(bool scale = false)
{
((Behaviour)origAnimator).enabled = false;
memeAnimator.Rebind();
((Component)memeAnimator).gameObject.SetActive(true);
isPlaying = true;
}
public void stopAnim()
{
memeAnimator.Play("Empty");
((Component)memeAnimator).gameObject.SetActive(false);
((Behaviour)origAnimator).enabled = true;
isPlaying = false;
}
}
public class shieldToggler : MonoBehaviour
{
[SerializeField]
private GameObject[] thing1;
[SerializeField]
private GameObject[] thing2;
private bool tog;
private void Update()
{
if (Input.GetKeyDown((KeyCode)104))
{
tog = !tog;
GameObject[] array = thing1;
foreach (GameObject val in array)
{
Debug.Log((object)("thing1 " + tog));
val.SetActive(tog);
}
GameObject[] array2 = thing2;
foreach (GameObject val2 in array2)
{
Debug.Log((object)("thing2 " + !tog));
val2.SetActive(!tog);
}
}
}
}
public class EnforcerComponent : MonoBehaviour
{
protected CharacterCameraParamsData shieldCameraParams = new CharacterCameraParamsData
{
maxPitch = BlendableFloat.op_Implicit(70f),
minPitch = BlendableFloat.op_Implicit(-70f),
pivotVerticalOffset = BlendableFloat.op_Implicit(CharacterBase.instance.bodyInfo.cameraParamsVerticalOffset),
idealLocalCameraPos = BlendableVector3.op_Implicit(shieldCameraPosition),
wallCushion = BlendableFloat.op_Implicit(0.1f)
};
public static CameraParamsOverrideHandle camOverrideHandle;
public static Vector3 shieldCameraPosition = new Vector3(2.3f, -1f, -6.5f);
private static float maxSpeed = 0.1f;
private static float coef = 1f;
public EnforcerWeaponComponent weaponComponent;
private bool _isShielding;
public Ray aimRay;
public Vector3 shieldDirection = new Vector3(1f, 0f, 0f);
public bool beefStop;
private float initialTime = 0f;
public ChildLocator childLocator;
public CameraTargetParams cameraShit2;
private GameObject energyShield;
public EnergyShieldControler energyShieldControler;
private Transform _shieldPreview;
private Transform _shieldParent;
private float _shieldSize;
private float _shieldSizeMultiplier = 1.2f;
private MeshRenderer shieldMeshVR;
private GameObject dummy;
private GameObject boyPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/LemurianBody");
public static bool skateJump;
private Transform head;
private CharacterBody enforcerBody;
public EntityStateMachine drOctagonapus { get; set; }
public bool isDeflecting { get; set; }
public Transform origOrigin { get; set; }
public bool isShielding
{
get
{
return _isShielding;
}
set
{
_isShielding = value;
toggleShieldCamera(value);
}
}
public float shieldHealth => energyShieldControler.healthComponent.health;
public event Action onLaserHit = delegate
{
};
public static event Action<GameObject> BlockedGet;
public void Init()
{
childLocator = ((Component)this).GetComponentInChildren<ChildLocator>();
head = childLocator.FindChild("Head");
cameraShit2 = ((Component)this).GetComponentInChildren<CameraTargetParams>();
}
private void Start()
{
if ((Object)(object)drOctagonapus == (Object)null)
{
drOctagonapus = EntityStateMachine.FindByCustomName(((Component)this).gameObject, "EnforcerParry");
}
if ((Object)(object)enforcerBody == (Object)null)
{
enforcerBody = ((Component)this).GetComponent<CharacterBody>();
}
weaponComponent = ((Component)this).GetComponent<EnforcerWeaponComponent>();
}
private void FixedUpdate()
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: 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)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: 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)
Vector3 val = ((!VRAPICompat.IsLocalVRPlayer(enforcerBody)) ? ((Ray)(ref aimRay)).direction : GetVRShieldDirection());
aimShield(val);
if (Object.op_Implicit((Object)(object)energyShieldControler))
{
energyShieldControler.shieldAimRayDirection = val;
}
}
private void LateUpdate()
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
if (Config.headSize.Value > 2f)
{
((Component)head).transform.localScale = Vector3.one * Config.headSize.Value;
((Component)head).transform.localPosition = new Vector3(0f, 0.0535f + 0.045f * Config.headSize.Value, 0f);
}
if (VRAPICompat.IsLocalVRPlayer(enforcerBody) && Config.translucentVRShield.Value)
{
UpdateVRShieldTransparency();
}
}
private void UpdateVRShieldTransparency()
{
HandController nonDominantHand = MotionControls.nonDominantHand;
if (nonDominantHand != null)
{
nonDominantHand.rendererInfos[0].defaultMaterial.SetFloat(CommonShaderProperties._Fade, enforcerBody.HasBuff(Buffs.protectAndServeBuff) ? 0.6f : 0.3f);
}
}
public void ResetAimOrigin(CharacterBody characterBody)
{
characterBody.aimOriginTransform = origOrigin;
}
private void toggleShieldCamera(bool shieldIsUp)
{
//IL_0009: 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_0017: 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_0029: 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_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: 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_0085: Unknown result type (might be due to invalid IL or missing references)
if (shieldIsUp)
{
CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest);
val.cameraParamsData = shieldCameraParams;
val.priority = 0f;
CameraParamsOverrideRequest val2 = val;
camOverrideHandle = cameraShit2.AddParamsOverride(val2, 0.6f);
}
else
{
for (int num = cameraShit2.cameraParamsOverrides.Count - 1; num >= 0; num--)
{
camOverrideHandle.target = cameraShit2.cameraParamsOverrides[num];
cameraShit2.RemoveParamsOverride(camOverrideHandle, 0.3f);
}
}
}
private void aimShield(Vector3 aimDirection)
{
//IL_001a: 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_0026: 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_002d: 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_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: 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_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_0084: 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_00b3: 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)
bool flag = VRAPICompat.IsLocalVRPlayer(enforcerBody);
float num = Time.fixedTime - initialTime;
Vector3 val = Vector3.Cross(aimDirection, shieldDirection);
Vector3 val2 = Vector3.Cross(shieldDirection, val);
float num2 = (flag ? 1f : (maxSpeed * (1f - Mathf.Exp(-1f * coef * num))));
shieldDirection += num2 * ((Vector3)(ref val2)).normalized;
shieldDirection = ((Vector3)(ref shieldDirection)).normalized;
if (flag && enforcerBody.HasBuff(Buffs.protectAndServeBuff))
{
FaceTowardsVRShield();
}
Vector3 val3 = aimDirection - shieldDirection;
if ((double)((Vector3)(ref val3)).magnitude < 0.05)
{
initialTime = Time.fixedTime;
}
}
private void FaceTowardsVRShield()
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: 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)
if (!((Object)(object)enforcerBody == (Object)null))
{
Vector3 forward = shieldDirection;
forward.y = 0f;
((Vector3)(ref forward)).Normalize();
enforcerBody.characterDirection.forward = forward;
}
}
private Vector3 GetVRShieldDirection()
{
//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)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
return MotionControls.nonDominantHand.GetMuzzleByIndex(1u).forward;
}
public void ToggleEnergyShield(bool shieldToggle)
{
if (Object.op_Implicit((Object)(object)energyShield))
{
energyShield.SetActive(shieldToggle);
}
}
public void invokeOnLaserHitEvent()
{
this.onLaserHit?.Invoke();
}
public void OnTriggerStay(Collider other)
{
if (Object.op_Implicit((Object)(object)((Component)other).GetComponent<JumpVolume>()))
{
skateJump = false;
}
}
public void OnAttackBlocked(GameObject gameObject)
{
EnforcerComponent.BlockedGet(gameObject);
}
public bool GetShieldBlock(Vector3 attackerPosition, float blockAngle)
{
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: 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)
//IL_001b: 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_001d: Unknown result type (might be due to invalid IL or missing references)
bool result = false;
Vector3 val = shieldDirection;
Vector3 val2 = attackerPosition - enforcerBody.corePosition;
float num = Vector3.Angle(val, val2);
if (num <= blockAngle)
{
result = true;
}
return result;
}
static EnforcerComponent()
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
EnforcerComponent.BlockedGet = delegate
{
};
}
}
public class EnforcerItemDisplayEditorComponent : MonoBehaviour
{
public enum EquippedGun
{
GUN,
SUPER,
HMG,
HAMMER,
NEEDLER
}
public enum EquippedShield
{
SHIELD,
SHIELD2,
BOARD
}
private ChildLocator childLocator;
private GameObject shotgunObject => ((Component)childLocator.FindChild("GunModel")).gameObject;
private GameObject ssgobject => ((Component)childLocator.FindChild("SuperGunModel")).gameObject;
private GameObject hmgObject => ((Component)childLocator.FindChild("HMGModel")).gameObject;
private GameObject hammerObject => ((Component)childLocator.FindChild("HammerModel")).gameObject;
private GameObject needlerObject => ((Component)childLocator.FindChild("NeedlerModel")).gameObject;
private GameObject shieldObject => ((Component)childLocator.FindChild("ShieldModel")).gameObject;
private GameObject skateBoardObject => ((Component)childLocator.FindChild("SkamteBordModel")).gameObject;
private void Start()
{
//IL_0001: 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)
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name == "KingEnderBrine_IDRS_Editor")
{
childLocator = ((Component)this).GetComponentInChildren<ChildLocator>();
HideWeapons();
EquipWeapon(EquippedGun.GUN);
}
}
public void HideWeapons()
{
shotgunObject.SetActive(true);
ssgobject.gameObject.SetActive(true);
hmgObject.SetActive(true);
hammerObject.SetActive(true);
needlerObject.SetActive(true);
shotgunObject.SetActive(false);
ssgobject.gameObject.SetActive(false);
hmgObject.SetActive(false);
hammerObject.SetActive(false);
needlerObject.SetActive(false);
}
private void Update()
{
//IL_0001: 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)
Scene activeScene = SceneManager.GetActiveScene();
if (((Scene)(ref activeScene)).name == "KingEnderBrine_IDRS_Editor" && Input.anyKeyDown)
{
EquippedGun? equippedGun = null;
if (Input.GetKeyDown((KeyCode)49))
{
equippedGun = EquippedGun.GUN;
}
if (Input.GetKeyDown((KeyCode)50))
{
equippedGun = EquippedGun.SUPER;
}
if (Input.GetKeyDown((KeyCode)51))
{
equippedGun = EquippedGun.HMG;
}
if (Input.GetKeyDown((KeyCode)52))
{
equippedGun = EquippedGun.HAMMER;
}
if (Input.GetKeyDown((KeyCode)53))
{
equippedGun = EquippedGun.NEEDLER;
}
if (equippedGun.HasValue)
{
HideWeapons();
EquipWeapon(equippedGun.Value);
}
}
}
private void EquipWeapon(EquippedGun weapon)
{
switch (weapon)
{
default:
shotgunObject.SetActive(true);
break;
case EquippedGun.SUPER:
ssgobject.SetActive(true);
break;
case EquippedGun.HMG:
hmgObject.SetActive(true);
break;
case EquippedGun.HAMMER:
hammerObject.SetActive(true);
break;
case EquippedGun.NEEDLER:
needlerObject.SetActive(true);
break;
}
}
}
internal class EnforcerLightController : MonoBehaviour
{
public uint playID;
public bool sirenToggle;
public float lightFlashInterval = 0.5f;
private float flashDuration;
private Light[] lights;
private float lightStopwatch;
private int lightFlashes;
private CharacterBody characterBody;
private ChildLocator childLocator;
private float flashStopwatch;
private bool sex;
private void Start()
{
if (!sex)
{
InitLights();
}
}
private void InitLights()
{
sex = true;
sirenToggle = false;
characterBody = ((Component)this).gameObject.GetComponent<CharacterBody>();
childLocator = ((Component)this).gameObject.GetComponentInChildren<ChildLocator>();
flashDuration = 0.5f;
}
private void FixedUpdate()
{
HandleShoulderLights();
}
private void HandleShoulderLights()
{
if (sirenToggle)
{
flashStopwatch -= Time.fixedDeltaTime;
if (flashStopwatch <= 0f)
{
flashStopwatch = lightFlashInterval;
FlashLights(1);
}
}
lightStopwatch -= Time.fixedDeltaTime;
if (lightStopwatch <= 0.5f * flashDuration && lightStopwatch <= 0f && lightFlashes > 0)
{
lightFlashes--;
FlashLights(0);
}
}
private void EnableLights()
{
if (!sex)
{
InitLights();
}
}
public void FlashLights(int flashCount)
{
lightFlashes += flashCount;
lightStopwatch = flashDuration;
EnableLights();
}
public void ToggleSiren()
{
sirenToggle = !sirenToggle;
if (sirenToggle)
{
string text = Sounds.SirenButton;
if (Object.op_Implicit((Object)(object)characterBody) && Config.cursed.Value && Skins.isEnforcerCurrentSkin(characterBody, Skins.EnforcerSkin.FUCKINGFROG))
{
text = Sounds.Croak;
}
playID = Util.PlaySound(text, ((Component)this).gameObject);
flashStopwatch = 0f;
}
else if (playID != 0)
{
AkSoundEngine.StopPlayingID(playID);
}
}
private void OnDestroy()
{
if (playID != 0)
{
AkSoundEngine.StopPlayingID(playID);
}
}
}
internal class EnforcerLightControllerAlt : MonoBehaviour
{
public bool sirenToggle;
public float lightFlashInterval = 0.5f;
public float maxEmission = 35f;
public float minEmission = 1f;
public float emUp = 200f;
public float emDown = 200f;
public float flashDuration = 0.25f;
private float em;
private Material[] lights;
private bool lightsOn;
private float lightStopwatch;
private int lightFlashes;
private CharacterBody characterBody;
private ChildLocator childLocator;
private CharacterModel characterModel;
private float flashStopwatch;
private bool sex;
private void Awake()
{
childLocator = ((Component)this).gameObject.GetComponentInChildren<ChildLocator>();
characterModel = ((Component)this).gameObject.GetComponentInChildren<CharacterModel>();
((MonoBehaviour)this).Invoke("InitLights", 0.25f);
}
private void InitLights()
{
em = minEmission;
sex = true;
sirenToggle = false;
characterBody = ((Component)this).gameObject.GetComponent<CharacterBody>();
if (Object.op_Implicit((Object)(object)characterBody))
{
if (Object.op_Implicit((Object)(object)characterModel))
{
int num = Mathf.Max(0, 2 - characterModel.baseRendererInfos.Length);
lights = (Material[])(object)new Material[1] { characterModel.baseRendererInfos[7].defaultMaterial };
}
}
else
{
List<Material> list = new List<Material>();
CharacterModel component = ((Component)this).GetComponent<CharacterModel>();
int num2 = Mathf.Max(0, 2 - component.baseRendererInfos.Length);
list.Add(component.baseRendererInfos[7].defaultMaterial);
lights = list.ToArray();
}
}
private void FixedUpdate()
{
HandleShoulderLights();
}
private void HandleShoulderLights()
{
flashStopwatch -= Time.fixedDeltaTime;
if (sirenToggle && flashStopwatch <= 0f)
{
flashStopwatch = lightFlashInterval;
FlashLights(1);
}
lightStopwatch -= Time.fixedDeltaTime;
if (lightStopwatch <= 0.5f * flashDuration)
{
lightsOn = false;
if (lightStopwatch <= 0f && lightFlashes > 0)
{
lightFlashes--;
FlashLights(0);
}
}
if (lightsOn)
{
em += emUp * Time.fixedDeltaTime;
}
else
{
em -= emDown * Time.fixedDeltaTime;
}
em = Mathf.Clamp(em, minEmission, maxEmission);
if (lights != null && lights.Length != 0)
{
Material[] array = lights;
foreach (Material val in array)
{
val.SetFloat("_EmPower", em);
}
}
}
private void EnableLights()
{
if (!sex)
{
InitLights();
}
lightsOn = true;
}
public void FlashLights(int flashCount)
{
lightFlashes += flashCount;
lightStopwatch = flashDuration;
EnableLights();
}
public void ToggleSiren()
{
sirenToggle = !sirenToggle;
if (sirenToggle)
{
string sirenButton = Sounds.SirenButton;
if (Object.op_Implicit((Object)(object)characterBody) && Config.cursed.Value && Skins.isEnforcerCurrentSkin(characterBody, Skins.EnforcerSkin.FUCKINGFROG))
{
sirenButton = Sounds.Croak;
}
flashStopwatch = 0f;
}
}
}
public class EnforcerNetworkComponent : NetworkBehaviour
{
[SyncVar]
public int parries;
private int skin;
private static int kCmdCmdApplySkin;
private static int kRpcRpcApplySkin;
private static int kCmdCmdApplyBungus;
private static int kRpcRpcApplyBungus;
private static int kCmdCmdApplyDoor;
private static int kRpcRpcApplyDoor;
public int Networkparries
{
get
{
return parries;
}
[param: In]
set
{
((NetworkBehaviour)this).SetSyncVar<int>(value, ref parries, 1u);
}
}
public void Uhh(int skin)
{
if (skin != -1)
{
if (NetworkServer.active)
{
CallRpcApplySkin(skin);
}
else
{
CallCmdApplySkin(skin);
}
}
}
[Command]
public void CmdApplySkin(int skin)
{
CallRpcApplySkin(skin);
}
[ClientRpc]
public void RpcApplySkin(int skin)
{
ApplySkin(skin);
}
private void ApplySkin(int skin)
{
((Component)((Component)this).GetComponent<CharacterBody>().modelLocator.modelTransform).GetComponent<ModelSkinController>().ApplySkin(skin);
((MonoBehaviour)this).StartCoroutine(fuckthis(skin));
}
public IEnumerator fuckthis(int skin)
{
yield return (object)new WaitForSeconds(1f);
((Component)((Component)this).GetComponent<CharacterBody>().modelLocator.modelTransform).GetComponent<ModelSkinController>().ApplySkin(skin);
}
public void UhhBungus(bool shouldApply)
{
if (NetworkServer.active)
{
CallRpcApplyBungus(shouldApply);
}
else
{
CallCmdApplyBungus(shouldApply);
}
}
[Command]
private void CmdApplyBungus(bool shouldApply)
{
CallRpcApplyBungus(shouldApply);
}
[ClientRpc]
private void RpcApplyBungus(bool shouldApply)
{
ApplyBungus(shouldApply);
}
private void ApplyBungus(bool shouldApply)
{
SkinDef val = (shouldApply ? Skins.engiBungusSkin : Skins.engiNormalSkin);
val.Apply(((Component)((Component)this).GetComponent<CharacterBody>().modelLocator.modelTransform).gameObject);
}
public void UhhDoor()
{
if (NetworkServer.active)
{
CallRpcApplyDoor();
}
else
{
CallCmdApplyDoor();
}
}
[Command]
private void CmdApplyDoor()
{
CallRpcApplyDoor();
}
[ClientRpc]
private void RpcApplyDoor()
{
ApplyDoor();
}
private void ApplyDoor()
{
Skins.podDoorSkin.Apply(((Component)((Component)this).GetComponent<CharacterBody>().modelLocator.modelTransform).gameObject);
}
private void UNetVersion()
{
}
protected static void InvokeCmdCmdApplySkin(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError((object)"Command CmdApplySkin called on client.");
}
else
{
((EnforcerNetworkComponent)(object)obj).CmdApplySkin((int)reader.ReadPackedUInt32());
}
}
protected static void InvokeCmdCmdApplyBungus(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError((object)"Command CmdApplyBungus called on client.");
}
else
{
((EnforcerNetworkComponent)(object)obj).CmdApplyBungus(reader.ReadBoolean());
}
}
protected static void InvokeCmdCmdApplyDoor(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError((object)"Command CmdApplyDoor called on client.");
}
else
{
((EnforcerNetworkComponent)(object)obj).CmdApplyDoor();
}
}
public void CallCmdApplySkin(int skin)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkClient.active)
{
Debug.LogError((object)"Command function CmdApplySkin called on server.");
return;
}
if (((NetworkBehaviour)this).isServer)
{
CmdApplySkin(skin);
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)5);
val.WritePackedUInt32((uint)kCmdCmdApplySkin);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
val.WritePackedUInt32((uint)skin);
((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdApplySkin");
}
public void CallCmdApplyBungus(bool shouldApply)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkClient.active)
{
Debug.LogError((object)"Command function CmdApplyBungus called on server.");
return;
}
if (((NetworkBehaviour)this).isServer)
{
CmdApplyBungus(shouldApply);
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)5);
val.WritePackedUInt32((uint)kCmdCmdApplyBungus);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
val.Write(shouldApply);
((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdApplyBungus");
}
public void CallCmdApplyDoor()
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Expected O, but got Unknown
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkClient.active)
{
Debug.LogError((object)"Command function CmdApplyDoor called on server.");
return;
}
if (((NetworkBehaviour)this).isServer)
{
CmdApplyDoor();
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)5);
val.WritePackedUInt32((uint)kCmdCmdApplyDoor);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdApplyDoor");
}
protected static void InvokeRpcRpcApplySkin(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError((object)"RPC RpcApplySkin called on server.");
}
else
{
((EnforcerNetworkComponent)(object)obj).RpcApplySkin((int)reader.ReadPackedUInt32());
}
}
protected static void InvokeRpcRpcApplyBungus(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError((object)"RPC RpcApplyBungus called on server.");
}
else
{
((EnforcerNetworkComponent)(object)obj).RpcApplyBungus(reader.ReadBoolean());
}
}
protected static void InvokeRpcRpcApplyDoor(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError((object)"RPC RpcApplyDoor called on server.");
}
else
{
((EnforcerNetworkComponent)(object)obj).RpcApplyDoor();
}
}
public void CallRpcApplySkin(int skin)
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogError((object)"RPC Function RpcApplySkin called on client.");
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)2);
val.WritePackedUInt32((uint)kRpcRpcApplySkin);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
val.WritePackedUInt32((uint)skin);
((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcApplySkin");
}
public void CallRpcApplyBungus(bool shouldApply)
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogError((object)"RPC Function RpcApplyBungus called on client.");
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)2);
val.WritePackedUInt32((uint)kRpcRpcApplyBungus);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
val.Write(shouldApply);
((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcApplyBungus");
}
public void CallRpcApplyDoor()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Expected O, but got Unknown
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogError((object)"RPC Function RpcApplyDoor called on client.");
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)2);
val.WritePackedUInt32((uint)kRpcRpcApplyDoor);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcApplyDoor");
}
static EnforcerNetworkComponent()
{
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Expected O, but got Unknown
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Expected O, but got Unknown
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Expected O, but got Unknown
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Expected O, but got Unknown
//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Expected O, but got Unknown
kCmdCmdApplySkin = -520989940;
NetworkBehaviour.RegisterCommandDelegate(typeof(EnforcerNetworkComponent), kCmdCmdApplySkin, new CmdDelegate(InvokeCmdCmdApplySkin));
kCmdCmdApplyBungus = 1362526905;
NetworkBehaviour.RegisterCommandDelegate(typeof(EnforcerNetworkComponent), kCmdCmdApplyBungus, new CmdDelegate(InvokeCmdCmdApplyBungus));
kCmdCmdApplyDoor = -521432771;
NetworkBehaviour.RegisterCommandDelegate(typeof(EnforcerNetworkComponent), kCmdCmdApplyDoor, new CmdDelegate(InvokeCmdCmdApplyDoor));
kRpcRpcApplySkin = -2113921034;
NetworkBehaviour.RegisterRpcDelegate(typeof(EnforcerNetworkComponent), kRpcRpcApplySkin, new CmdDelegate(InvokeRpcRpcApplySkin));
kRpcRpcApplyBungus = -435897053;
NetworkBehaviour.RegisterRpcDelegate(typeof(EnforcerNetworkComponent), kRpcRpcApplyBungus, new CmdDelegate(InvokeRpcRpcApplyBungus));
kRpcRpcApplyDoor = -2114363865;
NetworkBehaviour.RegisterRpcDelegate(typeof(EnforcerNetworkComponent), kRpcRpcApplyDoor, new CmdDelegate(InvokeRpcRpcApplyDoor));
NetworkCRC.RegisterBehaviour("EnforcerNetworkComponent", 0);
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
if (forceAll)
{
writer.WritePackedUInt32((uint)parries);
return true;
}
bool flag = false;
if ((((NetworkBehaviour)this).syncVarDirtyBits & (true ? 1u : 0u)) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
flag = true;
}
writer.WritePackedUInt32((uint)parries);
}
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
}
return flag;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
if (initialState)
{
parries = (int)reader.ReadPackedUInt32();
return;
}
int num = (int)reader.ReadPackedUInt32();
if (((uint)num & (true ? 1u : 0u)) != 0)
{
parries = (int)reader.ReadPackedUInt32();
}
}
}
public class EnforcerVRComponent : MonoBehaviour
{
private Transform skateboardBase;
private GameObject VRSkateboard;
private Transform VRSkateboardHandBase;
private bool isSkating;
private EnforcerComponent enforcerComponent;
private EnforcerWeaponComponent enforcerWeaponComponent;
public CharacterBody charBody;
public void InitSkateBoardBase(Transform skateboardBase)
{
this.skateboardBase = skateboardBase;
}
private void OnEnable()
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Expected O, but got Unknown
if (EnforcerModPlugin.VREnabled)
{
SubscribeToHandPairEvent();
BaseState.GetAimRay += new hook_GetAimRay(EditAimRay);
}
}
private void OnDisable()
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Expected O, but got Unknown
if (EnforcerModPlugin.VREnabled)
{
UnsubscribeToHandPairEvent();
BaseState.GetAimRay -= new hook_GetAimRay(EditAimRay);
}
}
private Ray EditAimRay(orig_GetAimRay orig, BaseState self)
{
//IL_0061: 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_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: 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)
if (VRAPICompat.IsLocalVRPlayer(charBody) && ((Object)((EntityState)self).characterBody).name.Contains("EnforcerBody") && self is ShieldBash)
{
return new Ray(((Component)Camera.main).transform.position, ((Component)Camera.main).transform.forward);
}
return orig.Invoke(self);
}
private void SubscribeToHandPairEvent()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
MotionControls.onHandPairSet = (SetHandPairEventHandler)Delegate.Combine((Delegate?)(object)MotionControls.onHandPairSet, (Delegate?)new SetHandPairEventHandler(OnHandPairSet));
}
private void UnsubscribeToHandPairEvent()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
MotionControls.onHandPairSet = (SetHandPairEventHandler)Delegate.Remove((Delegate?)(object)MotionControls.onHandPairSet, (Delegate?)new SetHandPairEventHandler(OnHandPairSet));
}
private void OnHandPairSet(CharacterBody body)
{
if (((Object)body).name.Contains("EnforcerBody") && !((Object)(object)((Component)this).GetComponent<CharacterBody>() != (Object)(object)body))
{
charBody = body;
((MonoBehaviour)this).StartCoroutine((IEnumerator)SetVRWeaponAndShield(body));
}
}
private IEnumerator<WaitForSeconds> SetVRWeaponAndShield(CharacterBody body)
{
yield return new WaitForSeconds(0.5f);
enforcerComponent = ((Component)this).GetComponent<EnforcerComponent>();
enforcerWeaponComponent = ((Component)this).GetComponent<EnforcerWeaponComponent>();
if (Object.op_Implicit((Object)(object)enforcerComponent))
{
enforcerComponent.origOrigin = MotionControls.dominantHand.muzzle;
}
ChildLocator vrWeaponChildLocator = ((Component)MotionControls.dominantHand.transform).GetComponentInChildren<ChildLocator>();
ChildLocator vrShieldChildLocator = ((Component)MotionControls.nonDominantHand.transform).GetComponentInChildren<ChildLocator>();
if (!Object.op_Implicit((Object)(object)vrWeaponChildLocator) || !Object.op_Implicit((Object)(object)vrShieldChildLocator))
{
yield break;
}
GameObject donminHandObj = ((Component)vrWeaponChildLocator.FindChild("HandModel")).gameObject;
List<GameObject> allVRWeapons = new List<GameObject>
{
((Component)vrWeaponChildLocator.FindChild("GunModel")).gameObject,
((Component)vrWeaponChildLocator.FindChild("SuperGunModel")).gameObject,
((Component)vrWeaponChildLocator.FindChild("HMGModel")).gameObject,
((Component)vrWeaponChildLocator.FindChild("RobotArmModel")).gameObject,
((Component)vrWeaponChildLocator.FindChild("HammerModel")).gameObject,
((Component)vrWeaponChildLocator.FindChild("NemHammerModel")).gameObject
};
foreach (GameObject weaponObject in allVRWeapons)
{
weaponObject.SetActive(true);
weaponObject.SetActive(false);
}
EnforcerWeaponComponent.EquippedGun weapon = enforcerWeaponComponent.GetWeapon();
Transform muzzle = MotionControls.dominantHand.muzzle;
if (Skins.isEnforcerCurrentSkin(body, Skins.EnforcerSkin.ROBIT))
{
EnforcerWeaponComponent.EquippedGun equippedGun = weapon;
EnforcerWeaponComponent.EquippedGun equippedGun2 = equippedGun;
if ((uint)equippedGun2 <= 2u || equippedGun2 != EnforcerWeaponComponent.EquippedGun.HAMMER)
{
donminHandObj.SetActive(false);
allVRWeapons[3].SetActive(true);
muzzle.localPosition = new Vector3(0.0128f, -0.0911f, 0.2719f);
}
else
{
if (Skins.isEnforcerCurrentSkin(body, Skins.EnforcerSkin.RECOLORNEMESIS))
{
allVRWeapons[5].SetActive(true);
}
else
{
allVRWeapons[4].SetActive(true);
}
muzzle.localPosition = new Vector3(0.01657f, -0.21657f, 0.81805f);
}
}
else
{
switch (weapon)
{
default:
allVRWeapons[1].SetActive(true);
muzzle.localPosition = new Vector3(0.01297f, -0.2533f, 0.8785f);
break;
case EnforcerWeaponComponent.EquippedGun.HMG:
allVRWeapons[2].SetActive(true);
muzzle.localPosition = new Vector3(0.01657f, -0.21657f, 0.81805f);
break;
case EnforcerWeaponComponent.EquippedGun.HAMMER:
allVRWeapons[4].SetActive(true);
muzzle.localPosition = new Vector3(0.0156f, -0.025f, 0.0853f);
break;
case EnforcerWeaponComponent.EquippedGun.GUN:
{
allVRWeapons[0].SetActive(true);
Skins.EnforcerSkin[] sameShotgunSkins = new Skins.EnforcerSkin[5]
{
Skins.EnforcerSkin.GRANDMASTERY,
Skins.EnforcerSkin.RECOLORNEMESIS,
Skins.EnforcerSkin.RECOLORDESPERADO,
Skins.EnforcerSkin.RECOLORENGI,
Skins.EnforcerSkin.RECOLORDOOM
};
for (int i = 0; i < sameShotgunSkins.Length; i++)
{
if (Skins.isEnforcerCurrentSkin(charBody, sameShotgunSkins[i]))
{
MotionControls.dominantHand.rendererInfos[0].defaultMaterial = Skins.skinDefs[(int)body.skinIndex].rendererInfos[3].defaultMaterial;
}
}
break;
}
}
}
VRSkateboardHandBase = vrShieldChildLocator.FindChild("SkateboardHandBase");
List<GameObject> allVRShields = new List<GameObject>
{
((Component)vrShieldChildLocator.FindChild("ShieldModel")).gameObject,
((Component)vrShieldChildLocator.FindChild("GlassShieldModel")).gameObject,
((Component)vrShieldChildLocator.FindChild("FemShieldModel")).gameObject,
((Component)vrShieldChildLocator.FindChild("SteveShieldModel")).gameObject,
((Component)vrShieldChildLocator.FindChild("N4CRShieldModel")).gameObject,
((Component)vrShieldChildLocator.FindChild("Skateboard")).gameObject,
((Component)vrShieldChildLocator.FindChild("FemSkateboard")).gameObject
};
foreach (GameObject shieldObject in allVRShields)
{
shieldObject.SetActive(true);
shieldObject.SetActive(false);
}
EnforcerWeaponComponent.EquippedShield shield = enforcerWeaponComponent.GetShield();
EnforcerWeaponComponent.EquippedShield equippedShield = shield;
EnforcerWeaponComponent.EquippedShield equippedShield2 = equippedShield;
if (equippedShield2 == EnforcerWeaponComponent.EquippedShield.SHIELD || equippedShield2 != EnforcerWeaponComponent.EquippedShield.BOARD)
{
if (Skins.isEnforcerCurrentSkin(body, Skins.EnforcerSkin.MASTERY))
{
allVRShields[1].SetActive(true);
}
else if (Skins.isEnforcerCurrentSkin(body, Skins.EnforcerSkin.FEMFORCER))
{
allVRShields[2].SetActive(true);
}
else if (Skins.isEnforcerCurrentSkin(body, Skins.EnforcerSkin.FUCKINGSTEVE))
{
allVRShields[3].SetActive(true);
}
else if (Skins.isEnforcerCurrentSkin(body, Skins.EnforcerSkin.ROBIT))
{
allVRShields[4].SetActive(true);
}
else
{
allVRShields[0].SetActive(true);
}
MotionControls.nonDominantHand.rendererInfos[0].defaultMaterial = Skins.skinDefs[(int)body.skinIndex].rendererInfos[0].defaultMaterial;
}
else
{
GameObject skateboard = (Skins.isEnforcerCurrentSkin(body, Skins.EnforcerSkin.FEMFORCER) ? allVRShields[6] : allVRShields[5]);
skateboard.SetActive(true);
VRSkateboard = skateboard.gameObject;
}
}
public void ReparentSkateboard(EnforcerWeaponComponent.SkateBoardParent newParent)
{
//IL_0072: 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)
switch (newParent)
{
case EnforcerWeaponComponent.SkateBoardParent.BASE:
isSkating = true;
break;
case EnforcerWeaponComponent.SkateBoardParent.HAND:
isSkating = false;
if (VRAPICompat.IsLocalVRPlayer(charBody) && Object.op_Implicit((Object)(object)VRSkateboard) && Object.op_Implicit((Object)(object)VRSkateboardHandBase))
{
VRSkateboard.transform.SetParent(VRSkateboardHandBase);
VRSkateboard.transform.localPosition = Vector3.zero;
VRSkateboard.transform.localRotation = Quaternion.identity;
}
break;
}
}
private void LateUpdate()
{
//IL_005e: 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_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Unknown result type (might be due to invalid IL or missing references)
//IL_0122: Unknown result type (might be due to invalid IL or missing references)
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_013b: Unknown result type (might be due to invalid IL or missing references)
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
//IL_014c: Unknown result type (might be due to invalid IL or missing references)
//IL_0166: Unknown result type (might be due to invalid IL or missing references)
//IL_016b: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_01a1: 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_023e: Unknown result type (might be due to invalid IL or missing references)
//IL_0257: Unknown result type (might be due to invalid IL or missing references)
//IL_0268: Unknown result type (might be due to invalid IL or missing references)
//IL_0274: Unknown result type (might be due to invalid IL or missing references)
//IL_0280: Unknown result type (might be due to invalid IL or missing references)
//IL_0282: Unknown result type (might be due to invalid IL or missing references)
if (!VRAPICompat.IsLocalVRPlayer(charBody))
{
return;
}
if (isSkating && Object.op_Implicit((Object)(object)VRSkateboard) && Object.op_Implicit((Object)(object)VRSkateboardHandBase))
{
VRSkateboard.transform.SetParent(skateboardBase);
VRSkateboard.transform.localPosition = Vector3.zero;
VRSkateboard.transform.localRotation = Quaternion.identity;
VRSkateboard.transform.SetParent(VRSkateboardHandBase);
}
if ((!Config.physicalVRShieldUp.Value && !Config.physicalVRShieldDown.Value) || !Object.op_Implicit((Object)(object)enforcerWeaponComponent) || enforcerWeaponComponent.GetShield() != 0 || !Object.op_Implicit((Object)(object)enforcerComponent))
{
return;
}
float num = -0.3f * ((MotionControls.dominantHand == MotionControls.rightHand) ? (-1f) : 1f);
Vector3 val = MotionControls.nonDominantHand.muzzle.position + ((Component)Camera.main).transform.right * num - ((Component)Camera.main).transform.position;
bool flag = Vector3.Dot(((Component)Camera.main).transform.forward, val) > 0f;
bool flag2 = Vector3.Cross(((Component)Camera.main).transform.forward, val).y > 0f;
bool flag3 = ((MotionControls.dominantHand == MotionControls.rightHand) ? flag2 : (!flag2));
float num2 = Vector3.Angle(MotionControls.nonDominantHand.muzzle.forward, Vector3.down);
bool flag4 = num2 < (float)(90 - Config.physicalVRShieldDownAngle.Value);
if (Config.physicalVRShieldDown.Value && enforcerComponent.isShielding)
{
if (flag4)
{
charBody.skillLocator.special.ExecuteIfReady();
}
}
else if (Config.physicalVRShieldUp.Value && !enforcerComponent.isShielding)
{
Vector3 val2 = default(Vector3);
((Vector3)(ref val2))..ctor(((Component)Camera.main).transform.forward.x, 0f, ((Component)Camera.main).transform.forward.z);
Vector3 val3 = default(Vector3);
((Vector3)(ref val3))..ctor(val.x, 0f, val.z);
float num3 = Vector3.Angle(val2, val3);
if (!flag4 && flag && flag3 && num3 > 20f)
{
charBody.skillLocator.special.ExecuteIfReady();
}
}
}
}
public class EnforcerWeaponComponent : MonoBehaviour
{
public enum EquippedGun
{
NONE = -1,
GUN,
SUPER,
HMG,
HAMMER,
NEEDLER
}
public enum EquippedShield
{
NONE = -1,
SHIELD,
SHIELD2,
BOARD,
NOTHING
}
public enum SkateBoardParent
{
BASE,
HAND
}
private List<GameObject> _allWeapons;
public EquippedGun currentGun = EquippedGun.NONE;
public EquippedShield currentShield = EquippedShield.NONE;
public bool isMultiplayer;
public static int maxShellCount = 12;
private int currentShell;
private GameObject[] shellObjects;
public bool shieldUp;
private GameObject skateboard;
private Transform skateboardBase;
private Transform skateboardHandBase;
private string stepSoundString;
private string landSoundString;
public CharacterBody charBody;
public CharacterMotor charMotor;
public HealthComponent charHealth;
public CameraTargetParams cameraShit;
public ChildLocator childLocator;
private EnforcerVRComponent enforcerVRComponent;
private bool _transformationApplied;
public FootstepHandler footStep;
public SfxLocator sfx;
private GameObject shotgunObject => ((Component)childLocator.FindChild("GunModel")).gameObject;
private GameObject ssgobject => ((Component)childLocator.FindChild("SuperGunModel")).gameObject;
private GameObject hmgObject => ((Component)childLocator.FindChild("HMGModel")).gameObject;
private GameObject hammerObject => ((Component)childLocator.FindChild("HammerModel")).gameObject;
private GameObject needlerObject => ((Component)childLocator.FindChild("NeedlerModel")).gameObject;
private GameObject shieldModelObject => ((Component)childLocator.FindChild("ShieldModel")).gameObject;
private Transform shieldBoneTransform => childLocator.FindChild("Shield");
private GameObject skateBoardObject => ((Component)childLocator.FindChild("SkamteBordModel")).gameObject;
private List<GameObject> allWeapons
{
get
{
if (_allWeapons != null)
{
return _allWeapons;
}
_allWeapons = new List<GameObject> { shotgunObject, ssgobject, hmgObject, hammerObject, needlerObject };
_allWeapons.RemoveAll((GameObject gob) => (Object)(object)gob == (Object)null);
return _allWeapons;
}
}
public void Init()
{
charBody = ((Component)this).GetComponentInChildren<CharacterBody>();
charMotor = ((Component)this).GetComponentInChildren<CharacterMotor>();
charHealth = ((Component)this).GetComponentInChildren<HealthComponent>();
cameraShit = ((Component)this).GetComponent<CameraTargetParams>();
childLocator = ((Component)this).GetComponentInChildren<ChildLocator>();
footStep = ((Component)this).GetComponentInChildren<FootstepHandler>();
sfx = ((Component)this).GetComponentInChildren<SfxLocator>();
if (Object.op_Implicit((Object)(object)footStep))
{
stepSoundString = footStep.baseFootstepString;
}
if (Object.op_Implicit((Object)(object)sfx))
{
landSoundString = sfx.landingSound;
}
}
private void Awake()
{
if (EnforcerModPlugin.VREnabled)
{
enforcerVRComponent = ((Component)this).GetComponent<EnforcerVRComponent>();
}
}
private void Start()
{
SetWeaponsAndShields();
InitShells();
InitSkateboard();
((MonoBehaviour)this).Invoke("ModelCheck", 0.2f);
charBody.onInventoryChanged += Inventory_onInventoryChanged;
}
private void OnDestroy()
{
if (shellObjects != null && shellObjects.Length != 0)
{
for (int i = 0; i < shellObjects.Length; i++)
{
if (Object.op_Implicit((Object)(object)shellObjects[i]))
{
Object.Destroy((Object)(object)shellObjects[i]);
}
}
}
charBody.onInventoryChanged -= Inventory_onInventoryChanged;
}
public void SetWeaponsAndShields()
{
EquippedGun weapon = GetWeapon();
if (weapon != currentGun)
{
currentGun = weapon;
HideWeapons();
EquipWeapon(weapon);
SetCrosshair(weapon);
}
EquippedShield shield = GetShield();
if (shield != currentShield)
{
currentShield = shield;
HideSpecials();
EquipShield(shield);
SetShieldDisplayRules(shield);
}
}
public void HideEquips()
{
HideWeapons();
HideSpecials();
}
public void UnHideEquips()
{
EquipWeapon(currentGun);
EquipShield(currentShield);
}
public void HideWeapons()
{
if (Object.op_Implicit((Object)(object)childLocator))
{
for (int i = 0; i < allWeapons.Count; i++)
{
allWeapons[i].SetActive(true);
allWeapons[i].SetActive(false);
}
}
}
public void HideSpecials()
{
if (Object.op_Implicit((Object)(object)childLocator))
{
showShield(show: false);
skateBoardObject.SetActive(false);
}
}
public EquippedGun GetWeapon()
{
EquippedGun result = EquippedGun.GUN;
if (Object.op_Implicit((Object)(object)charBody) && Object.op_Implicit((Object)(object)charBody.skillLocator))
{
result = charBody.skillLocator.primary.skillDef.skillNameToken switch
{
"ENFORCER_PRIMARY_SUPERSHOTGUN_NAME" => EquippedGun.SUPER,
"ENFORCER_PRIMARY_RIFLE_NAME" => EquippedGun.HMG,
"ENFORCER_PRIMARY_HAMMER_NAME" => EquippedGun.HAMMER,
"SKILL_LUNAR_PRIMARY_REPLACEMENT_NAME" => EquippedGun.NEEDLER,
_ => EquippedGun.GUN,
};
}
return result;
}
private void EquipWeapon(EquippedGun weapon)
{
if (Object.op_Implicit((Object)(object)childLocator))
{
switch (weapon)
{
default:
shotgunObject.SetActive(true);
break;
case EquippedGun.SUPER:
ssgobject.SetActive(true);
break;
case EquippedGun.HMG:
hmgObject.SetActive(true);
break;
case EquippedGun.HAMMER:
hammerObject.SetActive(true);
break;
case EquippedGun.NEEDLER:
needlerObject.SetActive(true);
break;
}
}
}
private void SetCrosshair(EquippedGun weapon)
{
if (Object.op_Implicit((Object)(object)charBody))
{
switch (weapon)
{
case EquippedGun.GUN:
case EquippedGun.SUPER:
case EquippedGun.HMG:
charBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/SMGCrosshair");
break;
case EquippedGun.HAMMER:
charBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/SimpleDotCrosshair");
break;
case EquippedGun.NEEDLER:
charBody._defaultCrosshairPrefab = EnforcerModPlugin.needlerCrosshair;
break;
}
}
}
public void DelayedResetWeaponsAndShields()
{
((MonoBehaviour)this).Invoke("ResetWeaponsAndShields", 0.1f);
}
public void ResetWeaponsAndShields()
{
SetWeaponsAndShields();
}
public EquippedShield GetShield()
{
EquippedShield result = EquippedShield.SHIELD;
if (Object.op_Implicit((Object)(object)charBody) && Object.op_Implicit((Object)(object)charBody.skillLocator))
{
switch (charBody.skillLocator.special.skillDef.skillNameToken)
{
case "ENFORCER_SPECIAL_SHIELDUP_NAME":
case "ENFORCER_SPECIAL_SHIELDDOWN_NAME":
result = EquippedShield.SHIELD;
break;
case "ENFORCER_SPECIAL_SHIELDON_NAME":
case "ENFORCER_SPECIAL_SHIELDOFF_NAME":
result = EquippedShield.SHIELD2;
break;
case "ENFORCER_SPECIAL_BOARDUP_NAME":
case "ENFORCER_SPECIAL_BOARDDOWN_NAME":
result = EquippedShield.BOARD;
break;
default:
result = EquippedShield.NOTHING;
break;
}
}
return result;
}
private void EquipShield(EquippedShield shield)
{
if (Object.op_Implicit((Object)(object)childLocator))
{
switch (shield)
{
default:
showShield(show: true);
break;
case EquippedShield.SHIELD2:
showShield(show: false);
break;
case EquippedShield.BOARD:
skateBoardObject.SetActive(true);
break;
case EquippedShield.NOTHING:
break;
}
}
}
private void showShield(bool show)
{
//IL_001e: 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)
shieldModelObject.SetActive(show);
shieldBoneTransform.localScale = (show ? Vector3.one : Vector3.zero);
}
private void SetShieldDisplayRules(EquippedShield shield)
{
}
private void Inventory_onInventoryChanged()
{
DelayedResetWeaponsAndShields();
ModelCheck();
}
public void ModelCheck()
{
if (Object.op_Implicit((Object)(object)charBody) && Object.op_Implicit((Object)(object)charBody.master) && Object.op_Implicit((Object)(object)charBody.master.inventory) && _transformationApplied != Skins.isEnforcerCurrentSkin(charBody, Skins.EnforcerSkin.RECOLORENGIBUNG))
{
_transformationApplied = Skins.isEnforcerCurrentSkin(charBody, Skins.EnforcerSkin.RECOLORENGIBUNG);
((Component)this).GetComponent<EnforcerNetworkComponent>().UhhBungus(_transformationApplied);
}
}
private void InitShells()
{
//IL_0076: 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)
if (childLocator != null)
{
currentShell = 0;
shellObjects = (GameObject[])(object)new GameObject[maxShellCount + 1];
GameObject val = Asset.shotgunShell;
if (GetWeapon() == EquippedGun.SUPER)
{
val = Asset.superShotgunShell;
}
for (int i = 0; i < maxShellCount; i++)
{
shellObjects[i] = Object.Instantiate<GameObject>(val, childLocator.FindChild("Gun"), false);
shellObjects[i].transform.localScale = Vector3.one * 1.1f;
shellObjects[i].SetActive(false);
shellObjects[i].GetComponent<Rigidbody>().collisionDetectionMode = (CollisionDetectionMode)1;
}
}
}
public void DropShell(Vector3 force)
{
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
if (shellObjects != null && !((Object)(object)shellObjects[currentShell] == (Object)null))
{
Transform val = childLocator.FindChild("Muzzle");
shellObjects[currentShell].SetActive(false);
shellObjects[currentShell].transform.position = val.position;
shellObjects[currentShell].transform.SetParent((Transform)null);
shellObjects[currentShell].SetActive(true);
Rigidbody component = shellObjects[currentShell].gameObject.GetComponent<Rigidbody>();
if (Object.op_Implicit((Object)(object)component))
{
component.velocity = force;
}
currentShell++;
if (currentShell >= maxShellCount)
{
currentShell = 0;
}
}
}
private void InitSkateboard()
{
skateboard = ((Component)childLocator.FindChild("Skateboard")).gameObject;
skateboardBase = childLocator.FindChild("BoardBase");
skateboardHandBase = childLocator.FindChild("BoardHandBase");
enforcerVRComponent?.InitSkateBoardBase(skateboardBase);
ReparentSkateboard(SkateBoardParent.HAND);
}
public void ReparentSkateboard(SkateBoardParent newParent)
{
//IL_004c: 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_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)skateboard))
{
return;
}
switch (newParent)
{
case SkateBoardParent.BASE:
skateboard.transform.SetParent(skateboardBase);
skateboard.transform.localPosition = Vector3.zero;
if (Object.op_Implicit((Object)(object)footStep))
{
footStep.baseFootstepString = "";
}
if (Object.op_Implicit((Object)(object)sfx))
{
sfx.landingSound = Sounds.SkateLand;
}
break;
case SkateBoardParent.HAND:
skateboard.transform.SetParent(skateboardHandBase);
skateboard.transform.localPosition = Vector3.zero;
if (Object.op_Implicit((Object)(object)footStep))
{
footStep.baseFootstepString = stepSoundString;
}
if (Object.op_Implicit((Object)(object)sfx))
{
sfx.landingSound = landSoundString;
}
break;
}
skateboard.transform.localPosition = Vector3.zero;
skateboard.transform.localRotation = Quaternion.identity;
enforcerVRComponent?.ReparentSkateboard(newParent);
}
}
public class MenuSoundComponent : MonoBehaviour
{
private uint playIDSiren = 0u;
private float takeOutGunDelay;
private uint playIDGun = 0u;
private void OnEnable()
{
playIDSiren = Util.PlaySound(Sounds.SirenDeflect, ((Component)this).gameObject);
takeOutGunDelay = 3.5f;
((MonoBehaviour)this).StartCoroutine(delayedGunSound());
EnforcerLightController componentInChildren = ((Component)this).GetComponentInChildren<EnforcerLightController>();
if (Object.op_Implicit((Object)(object)componentInChildren))
{
componentInChildren.FlashLights(3);
}
EnforcerLightControllerAlt componentInChildren2 = ((Component)this).GetComponentInChildren<EnforcerLightControllerAlt>();
if (Object.op_Implicit((Object)(object)componentInChildren2))
{
componentInChildren2.ToggleSiren();
}
}
private IEnumerator delayedGunSound()
{
yield return (object)new WaitForSeconds(takeOutGunDelay);
playIDGun = Util.PlaySound(Sounds.ShieldDown, ((Component)this).gameObject);
}
private void OnDestroy()
{
if (playIDSiren != 0)
{
AkSoundEngine.StopPlayingID(playIDSiren);
}
if (playIDGun != 0)
{
AkSoundEngine.StopPlayingID(playIDGun);
}
}
}
public class GrenadeController : MonoBehaviour
{
public BlastAttack blastAttack;
private float initialTime;
private bool never = true;
private GameObject explodePrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/omnieffect/OmniExplosionVFX");
private void Start()
{
initialTime = Time.fixedTime;
}
private void OnTriggerEnter(Collider other)
{
HurtBox component = ((Component)other).GetComponent<HurtBox>();
if (Object.op_Implicit((Object)(object)component) && never)
{
never = false;
explode();
}
}
private void Update()
{
if (Time.fixedTime - initialTime > 2f)
{
explode();
}
}
private void explode()
{
//IL_000d: 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_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Expected O, but got Unknown
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
blastAttack.position = ((Component)this).transform.position;
blastAttack.Fire();
EffectData val = new EffectData();
val.origin = ((Component)this).transform.position;
val.scale = 5f;
EffectManager.SpawnEffect(explodePrefab, val, false);
Rigidbody componentInParent = ((Component)this).GetComponentInParent<Rigidbody>();
Object.Destroy((Object)(object)((Component)componentInParent).gameObject);
}
}
public class NemforcerController : MonoBehaviour
{
private CharacterCameraParamsData minigunCameraParams = new CharacterCameraParamsData
{
maxPitch = BlendableFloat.op_Implicit(70f),
minPitch = BlendableFloat.op_Implicit(-70f),
pivotVerticalOffset = BlendableFloat.op_Implicit(1.37f),
idealLocalCameraPos = BlendableVector3.op_Implicit(minigunCameraPosition),
wallCushion = BlendableFloat.op_Implicit(0.1f)
};
private static Vector3 minigunCameraPosition = new Vector3(-2.2f, 0f, -9f);
public CameraParamsOverrideHandle camOverrideHandle;
private bool _minigunUp;
public bool isMultiplayer;
public SkillDef primarySkillDef;
public EntityStateMachine mainStateMachine;
private float maxLightningIntensity = 64f;
private float maxMoonIntensity = 16f;
private ParticleSystem passiveLightning;
private ParticleSystem passiveMoons;
private EmissionModule passiveLightningEm;
private EmissionModule passiveMoonsEm;
public ParticleSystem hammerChargeSmall;
public ParticleSystem hammerChargeLarge;
public ParticleSystem hammerBurst;
private CharacterBody charBody;
private CharacterMotor charMotor;
private HealthComponent charHealth;
private CameraTargetParams cameraShit;
private ChildLocator childLocator;
private Vector3 previousDirection;
private float previousAngle;
private bool passiveIsPlaying;
private NemforcerVRController nemforcerVRController;
public bool minigunUp
{
get
{
return _minigunUp;
}
set
{
_minigunUp = value;
toggleMinigunCamera(value);
nemforcerVRController?.VRMinigunToggle(value);
}
}
private void Start()
{
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
//IL_0153: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Unknown result type (might be due to invalid IL or missing references)
charBody = ((Component)this).GetComponent<CharacterBody>();
charMotor = ((Component)this).GetComponent<CharacterMotor>();
charHealth = ((Component)this).GetComponent<HealthComponent>();
cameraShit = ((Component)this).GetComponent<CameraTargetParams>();
childLocator = ((Component)charBody.modelLocator.modelTransform).GetComponent<ChildLocator>();
if (EnforcerModPlugin.VREnabled)
{
nemforcerVRController = ((Component)this).GetComponentInChildren<NemforcerVRController>();
}
primarySkillDef = charBody.skillLocator.primary.skillDef;
if (Object.op_Implicit((Object)(object)childLocator))
{
hammerChargeSmall = ((Component)childLocator.FindChild("HammerChargeSmall")).gameObject.GetComponentInChildren<ParticleSystem>();
hammerChargeLarge = ((Component)childLocator.FindChild("HammerChargeLarge")).gameObject.GetComponentInChildren<ParticleSystem>();
hammerBurst = ((Component)childLocator.FindChild("HammerBurst")).gameObject.GetComponentInChildren<ParticleSystem>();
passiveLightning = ((Component)childLocator.FindChild("PassiveHealEffect").GetChild(0)).gameObject.GetComponent<ParticleSystem>();
passiveMoons = ((Component)childLocator.FindChild("PassiveHealEffect").GetChild(1)).gameObject.GetComponent<ParticleSystem>();
passiveLightningEm = passiveLightning.emission;
passiveMoonsEm = passiveMoons.emission;
UpdatePassiveEffect();
}
InitWeapon();
((MonoBehaviour)this).Invoke("ModelCheck", 0.2f);
charBody.onInventoryChanged += Inventory_onInventoryChanged;
}
private void OnDestroy()
{
charBody.onInventoryChanged -= Inventory_onInventoryChanged;
}
private void Inventory_onInventoryChanged()
{
DelayedResetWeapon();
ModelCheck();
}
private void FixedUpdate()
{
//IL_0022: 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)
if (Object.op_Implicit((Object)(object)mainStateMachine))
{
previousDirection = mainStateMachine.commonComponents.characterDirection.forward;
}
UpdatePassiveEffect();
}
private void UpdatePassiveEffect()
{
//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_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_013a: Unknown result type (might be due to invalid IL or missing references)
if (charBody.bodyIndex == EnforcerModPlugin.DededeBodyIndex || (Object)(object)passiveLightning == (Object)null || (Object)(object)passiveMoons == (Object)null)
{
return;
}
float num = charHealth.combinedHealth / charHealth.fullCombinedHealth;
int buffCount = charBody.GetBuffCount(Buffs.nemforcerRegenBuff);
bool flag = buffCount > 0;
if ((!NemforcerPlugin.reworkPassive.Value) ? (num <= 0.5f) : flag)
{
if (!passiveIsPlaying)
{
passiveIsPlaying = true;
passiveLightning.Play();
passiveMoons.Play();
}
float num2 = Mathf.InverseLerp(0.2f, 0.6f, num);
if (flag)
{
num2 = Mathf.Max(0f, 1f - 0.2f * (float)buffCount);
}
((EmissionModule)(ref passiveLightningEm)).rateOverTime = MinMaxCurve.op_Implicit(Mathf.SmoothStep(maxLightningIntensity, 0f, num2));
((EmissionModule)(ref passiveMoonsEm)).rateOverTime = MinMaxCurve.op_Implicit(Mathf.SmoothStep(maxMoonIntensity, 0f, num2));
}
else if (passiveIsPlaying)
{
passiveIsPlaying = false;
passiveLightning.Stop();
passiveMoons.Stop();
}
}
private void toggleMinigunCamera(bool minigunUp)
{
//IL_0009: 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_0017: 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_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: 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_007e: 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)
if (minigunUp)
{
CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest);
val.cameraParamsData = minigunCameraParams;
val.priority = 0f;
CameraParamsOverrideRequest val2 = val;
camOverrideHandle = cameraShit.AddParamsOverride(val2, 0.5f);
}
else
{
for (int num = cameraShit.cameraParamsOverrides.Count - 1; num >= 0; num--)
{
camOverrideHandle.target = cameraShit.cameraParamsOverrides[num];
cameraShit.RemoveParamsOverride(camOverrideHandle, 0.3f);
}
}
}
public void ModelCheck()
{
if (!Object.op_Implicit((Object)(object)charBody) || !Object.op_Implicit((Object)(object)charBody.master) || charBody.baseNameToken == "DEDEDE_NAME" || !Object.op_Implicit((Object)(object)charBody.master.inventory))
{
return;
}
ModelLocator modelLocator = charBody.modelLocator;
CharacterModel val = ((modelLocator != null) ? ((Component)modelLocator.modelTransform).GetComponentInChildren<CharacterModel>() : null);
if (!Object.op_Implicit((Object)(object)val))
{
return;
}
if (charBody.master.inventory.GetItemCount(Items.ArmorReductionOnHit) > 0)
{
val.baseRendererInfos[0].defaultMaterial = null;
return;
}
ModelSkinController component = ((Component)val).gameObject.GetComponent<ModelSkinController>();
if (val.baseRendererInfos.Length != 0 && component.skins.Length < charBody.skinIndex && component.skins[charBody.skinIndex].rendererInfos.Length != 0)
{
val.baseRendererInfos[0].defaultMaterial = component.skins[charBody.skinIndex].rendererInfos[0].defaultMaterial;
}
}
public int GetWeapon()
{
int result = 0;
if (Object.op_Implicit((Object)(object)charBody) && Object.op_Implicit((Object)(object)charBody.skillLocator))
{
string skillNameToken = primarySkillDef.skillNameToken;
string text = skillNameToken;
string text2 = text;
if (!(text2 == "NEMFORCER_PRIMARY_HAMMER_NAME"))
{
if (text2 == "NEMFORCER_PRIMARY_THROWHAMMER_NAME")
{
result = 1;
}
}
else
{
result = 0;
}
}
return result;
}
public void InitWeapon()
{
if (!(charBody.baseNameToken == "DEDEDE_NAME"))
{
int weapon = GetWeapon();
EquipWeapon(weapon);
SetCrosshair(weapon);
}
}
public void HideWeapon()
{
if (Object.op_Implicit((Object)(object)childLocator))
{
((Component)childLocator.FindChild("HammerModel")).gameObject.SetActive(false);
((Component)childLocator.FindChild("AltHammer")).gameObject.SetActive(false);
}
}
public void DelayedResetWeapon()
{
((MonoBehaviour)this).Invoke("ResetWeapon", 0.1f);
}
public void ResetCrosshair()
{
int weapon = GetWeapon();
SetCrosshair(weapon);
}
private void EquipWeapon(int weapon)
{
if (Object.op_Implicit((Object)(object)childLocator))
{
HideWeapon();
switch (weapon)
{
case 0:
((Component)childLocator.FindChild("HammerModel")).gameObject.SetActive(true);
break;
case 1:
((Component)childLocator.FindChild("AltHammer")).gameObject.SetActive(true);
break;
}
}
}
private void SetCrosshair(int weapon)
{
if (!Object.op_Implicit((Object)(object)charBody))
{
return;
}
if (minigunUp)
{
charBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/BanditCrosshair");
return;
}
switch (weapon)
{
case 0:
charBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/SimpleDotCrosshair");
break;
case 1:
charBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/StandardCrosshair");
break;
}
}
public void resetAimAngle()
{
previousAngle = 0f;
}
public void pseudoAimMode(float angle)
{
//IL_0011: 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)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
Vector3 aimDirection = mainStateMachine.commonComponents.inputBank.aimDirection;
pseudoAimMode(angle, aimDirection);
}
public void pseudoAimMode(float angle, Vector3 aimDirection)
{
//IL_0017: 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_002a: 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_0035: 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_0039: 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_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: 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_0060: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)mainStateMachine))
{
aimDirection = ((Vector3)(ref aimDirection)).normalized;
aimDirection.y = 0f;
Vector3 val = Vector3.Cross(aimDirection, Vector3.up);
Vector3 val2 = Vector3.RotateTowards(aimDirection, val, (0f - angle) * (MathF.PI / 180f), 1f);
val2 = Vector3.Lerp(previousDirection, val2, 0.5f);
pseudoAimMode(val2);
previousAngle = angle;
}
}
public void pseudoAimMode(Vector3 direction)
{
//IL_0011: 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_0029: Unknown result type (might be due to invalid IL or missing references)
mainStateMachine.commonComponents.characterDirection.forward = direction;
mainStateMachine.commonComponents.characterDirection.moveVector = direction;
if (Object.op_Implicit((Object)(object)mainStateMachine.commonComponents.modelLocator))
{
Transform modelTransform = mainStateMachine.commonComponents.modelLocator.modelTransform;
if (Object.op_Implicit((Object)(object)modelTransform))
{
AimAnimator component = ((Component)modelTransform).GetComponent<AimAnimator>();
component.AimImmediate();
}
}
}
}
public class NemforcerVRController : MonoBehaviour
{
private CharacterBody charBody;
private GameObject VROffHand;
private Transform VRMuzzleOriginParent;
private Vector3 VRMuzzleOriginPos;
private Quaternion VRMuzzleOriginRot;
private NemforcerController nemforcerController;
private void OnEnable()
{
if (EnforcerModPlugin.VREnabled)
{
SubscribeToHandPairEvent();
}
}
private void OnDisable()
{
if (EnforcerModPlugin.VREnabled)
{
UnsubscribeToHandPairEvent();
}
}
private void SubscribeToHandPairEvent()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Expected O, but got Unknown
MotionControls.onHandPairSet = (SetHandPairEventHandler)Delegate.Combine((Delegate?)(object)MotionControls.onHandPairSet, (Delegate?)new SetHandPairEventHandler(OnHandPairSet));
BaseState.GetAimRay += new hook_GetAimRay(EditAimRay);
}
private void UnsubscribeToHandPairEvent()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Expected O, but got Unknown
MotionControls.onHandPairSet = (SetHandPairEventHandler)Delegate.Remove((Delegate?)(object)MotionControls.onHandPairSet, (Delegate?)new SetHandPairEventHandler(OnHandPairSet));
BaseState.GetAimRay -= new hook_GetAimRay(EditAimRay);
}
private void OnHandPairSet(CharacterBody body)
{
if (((Object)body).name.Contains("NemesisEnforcerBody") && !((Object)(object)((Component)this).GetComponent<CharacterBody>() != (Object)(object)body))
{
((MonoBehaviour)this).StartCoroutine((IEnumerator)SetVRWeaponAndMinigun(body));
}
}
private IEnumerator<WaitForSeconds> SetVRWeaponAndMinigun(CharacterBody body)
{
yield return new WaitForSeconds(0.5f);
charBody = body;
nemforcerController = ((Component)this).GetComponentInChildren<NemforcerController>();
body.aimOriginTransform = MotionControls.dominantHand.muzzle;
ChildLocator vrHammerChildLocator = ((Component)MotionControls.dominantHand.transform).GetComponentInChildren<ChildLocator>();
ChildLocator vrMinigunChildLocator = ((Component)MotionControls.nonDominantHand.transform).GetComponentInChildren<ChildLocator>();
if (!Object.op_Implicit((Object)(object)vrHammerChildLocator) || !Object.op_Implicit((Object)(object)vrMinigunChildLocator))
{
yield break;
}
List<GameObject> allVRHammers = new List<GameObject>
{
((Component)vrHammerChildLocator.FindChild("HammerModel")).gameObject,
((Component)vrHammerChildLocator.FindChild("HammerClassicModel")).gameObject,
((Component)vrHammerChildLocator.FindChild("HammerGMModel")).gameObject,
((Component)vrHammerChildLocator.FindChild("HammerMCModel")).gameObject,
((Component)vrHammerChildLocator.FindChild("HammerDededeModel")).gameObject,
((Component)vrHammerChildLocator.FindChild("HammerEnforcerModel")).gameObject,
((Component)vrHammerChildLocator.FindChild("ThrowHammerModel")).gameObject
};
List<GameObject> allVRMiniguns = new List<GameObject>
{
((Component)vrMinigunChildLocator.FindChild("MinigunModel")).gameObject,
((Component)vrMinigunChildLocator.FindChild("MinigunClassicModel")).gameObject,
((Component)vrMinigunChildLocator.FindChild("MinigunGMModel")).gameObject,
((Component)vrMinigunChildLocator.FindChild("MinigunMCModel")).gameObject,
((Component)vrMinigunChildLocator.FindChild("MinigunDededeModel")).gameObject,
((Component)vrMinigunChildLocator.FindChild("MinigunEnforcerModel")).gameObject,
((Component)vrMinigunChildLocator.FindChild("MinigunDripModel")).gameObject
};
foreach (GameObject hammer in allVRHammers)
{
hammer.SetActive(true);
hammer.SetActive(false);
}
foreach (GameObject minigun in allVRMiniguns)
{
minigun.SetActive(true);
minigun.SetActive(false);
}
nemforcerController.hammerChargeSmall = ((Component)allVRHammers[0].transform.Find("HammerChargeSmall")).gameObject.GetComponentInChildren<ParticleSystem>();
nemforcerController.hammerChargeLarge = ((Component)allVRHammers[0].transform.Find("HammerChargeLarge")).gameObject.GetComponentInChildren<ParticleSystem>();
nemforcerController.hammerBurst = ((Component)allVRHammers[0].transform.Find("HammerBurst")).gameObject.GetComponentInChildren<ParticleSystem>();
GameObject throwHammer = allVRHammers[5];
GameObject bigHammer;
GameObject VRMinigun;
if (NemforcerSkins.isNemforcerCurrentSkin(body, NemforcerSkins.NemforcerSkin.CLASSIC))
{
bigHammer = allVRHammers[1];
VRMinigun = allVRMiniguns[1];
}
else if (NemforcerSkins.isNemforcerCurrentSkin(body, NemforcerSkins.NemforcerSkin.TYPHOONSKIN))
{
bigHammer = allVRHammers[2];
VRMinigun = allVRMiniguns[2];
}
else if (NemforcerSkins.isNemforcerCurrentSkin(body, NemforcerSkins.NemforcerSkin.MINECRAFT))
{
bigHammer = allVRHammers[3];
VRMinigun = allVRMiniguns[3];
}
else if (NemforcerSkins.isNemforcerCurrentSkin(body, NemforcerSkins.NemforcerSkin.DEDEDE))
{
bigHammer = allVRHammers[4];
VRMinigun = allVRMiniguns[4];
}
else if (NemforcerSkins.isNemforcerCurrentSkin(body, NemforcerSkins.NemforcerSkin.ENFORCER))
{
bigHammer = allVRHammers[5];
VRMinigun = allVRMiniguns[5];
}
else if (NemforcerSkins.isNemforcerCurrentSkin(body, NemforcerSkins.NemforcerSkin.DRIP))
{
bigHammer = allVRHammers[0];
VRMinigun = allVRMiniguns[6];
}
else
{
bigHammer = allVRHammers[0];
VRMinigun = allVRMiniguns[0];
}
GameObject VRHammer;
if (nemforcerController.GetWeapon() == 0)
{
VRHammer = bigHammer;
}
else
{
VRHammer = throwHammer;
MotionControls.dominantHand.animator.SetBool("OneHandedHammer", true);
}
VRHammer.SetActive(true);
VRMinigun.SetActive(true);
((Component)nemforcerController.hammerBurst).transform.parent = VRHammer.transform.Find("HammerBurst");
((Component)nemforcerController.hammerBurst).transform.localPosition = Vector3.zero;
((Component)nemforcerController.hammerBurst).transform.localRotation = Quaternion.identity;
((Component)nemforcerController.hammerChargeSmall).transform.parent = VRHammer.transform.Find("HammerChargeSmall");
((Component)nemforcerController.hammerChargeSmall).transform.localPosition = Vector3.zero;
((Component)nemforcerController.hammerChargeSmall).transform.localRotation = Quaternion.identity;
((Component)nemforcerController.hammerChargeLarge).transform.parent = VRHammer.transform.Find("HammerChargeLarge");
((Component)nemforcerController.hammerChargeLarge).transform.localPosition = Vector3.zero;
((Component)nemforcerController.hammerChargeLarge).transform.localRotation = Quaternion.identity;
VRMuzzleOriginParent = MotionControls.dominantHand.muzzle.parent;
VRMuzzleOriginPos = MotionControls.dominantHand.muzzle.localPosition;
VRMuzzleOriginRot = MotionControls.dominantHand.muzzle.localRotation;
VROffHand = ((Component)vrMinigunChildLocator.FindChild("HandModel")).gameObject;
VRMinigunToggle(minigun: false);
}
private Ray EditAimRay(orig_GetAimRay orig, BaseState self)
{
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: 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_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)
if (VRAPICompat.IsLocalVRPlayer(charBody) && ((Object)((EntityState)self).characterBody).name.Contains("NemesisEnforcerBody") && (self is AimNemGas || self is StunGrenade))
{
return MotionControls.nonDominantHand.aimRay;
}
return orig.Invoke(self);
}
public void VRMinigunToggle(bool minigun)
{
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: 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_0059: Unknown result type (might be due to invalid IL or missing references)
if (minigun)
{
MotionControls.dominantHand.muzzle.SetParent(VRAPICompat.GetMinigunMuzzleObject().transform.parent);
MotionControls.dominantHand.muzzle.localPosition = VRAPICompat.GetMinigunMuzzleObject().transform.localPosition;
MotionControls.dominantHand.muzzle.localRotation = VRAPICompat.GetMinigunMuzzleObject().transform.localRotation;
VROffHand.SetActive(false);
}
else
{
MotionControls.dominantHand.muzzle.SetParent(VRMuzzleOriginParent);
MotionControls.dominantHand.muzzle.localPosition = VRMuzzleOriginPos;
MotionControls.dominantHand.muzzle.localRotation = VRMuzzleOriginRot;
VROffHand.SetActive(nemforcerController.GetWeapon() == 1);
}
}
}
public class ParticleFollowerController : MonoBehaviour
{
private ParticleSystem main;
private GameObject root;
private bool destroying;
private void Awake()
{
main = ((Component)this).GetComponent<ParticleSystem>();
root = ((Component)((Component)this).transform.root).gameObject;
((Component)this).transform.parent = null;
}
private void FixedUpdate()
{
//IL_0022: 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 (Object.op_Implicit((Object)(object)root))
{
((Component)this).transform.position = root.transform.position;
((Component)this).transform.rotation = root.transform.rotation;
}
else if (!destroying)
{
destroying = true;
Object.Destroy((Object)(object)((Component)this).gameObject, 8f);
main.Stop();
}
}
}
public class TestValueManager : MonoBehaviour
{
public static float testValue = 0.25f;
private float tim;
private float holdTime = 0.5f;
public static bool testingEnabled = false;
internal static Vector3 testVector = new Vector3(-2.2f, -0.5f, -9f);
private void Update()
{
if (testingEnabled && Input.GetKey((KeyCode)308))
{
manageTestValue(ref testValue, "devl", (KeyCode)263, (KeyCode)260, 0.01f);
}
}
private void manageTestVector(ref Vector3 vector, string vectorName, float incrementAmount = 0.1f, KeyCode xUp = 263, KeyCode xDown = 260, KeyCode yUp = 264, KeyCode yDown = 261, KeyCode zUp = 265, KeyCode zDown = 262)
{
//IL_0013: 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_0030: 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_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
manageTestValue(ref vector.x, vectorName + "x", xUp, xDown, incrementAmount);
manageTestValue(ref vector.y, vectorName + "y", yUp, yDown, incrementAmount);
manageTestValue(ref vector.z, vectorName + "z", zUp, zDown, incrementAmount);
}
private void manageTestValue(ref float value, string valueName, KeyCode upKey, KeyCode downKey, float incrementAmount)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: 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_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
if (Input.GetKeyDown(upKey))
{
value = setTestValue(value + incrementAmount, valueName);
}
if (Input.GetKeyDown(downKey))
{
value = setTestValue(value - incrementAmount, valueName);
}
if (Input.GetKey(upKey) || Input.GetKey(downKey))
{
float num = incrementAmount * (float)(Input.GetKey(upKey) ? 1 : (-1));
tim += Time.deltaTime;
if (tim > holdTime)
{
value = setTestValue(value + num, valueName);
tim = holdTime - 0.05f;
}
}
if (Input.GetKeyUp(upKey) || Input.GetKeyUp(downKey))
{
tim = 0f;
}
}
private float setTestValue(float value, string print)
{
Debug.LogWarning((object)$"{print}: {value}");
return value;
}
}
internal static class Log
{
internal static ManualLogSource _logSource;
internal static void Init(ManualLogSource logSource)
{
_logSource = logSource;
}
internal static void Debug(object data)
{
_logSource.LogDebug(data);
}
internal static void Error(object data)
{
_logSource.LogError(data);
}
internal static void Fatal(object data)
{
_logSource.LogFatal(data);
}
internal static void Info(object data)
{
_logSource.LogInfo(data);
}
internal static void Message(object data)
{
_logSource.LogMessage(data);
}
internal static void Warning(object data)
{
_logSource.LogWarning(data);
}
}
public class SkillDefInfo
{
public string skillName;
public string skillNameToken;
public string skillDescriptionToken;
public string[] keywordTokens = new string[0];
public Sprite skillIcon;
public SerializableEntityStateType activationState;
public InterruptPriority interruptPriority;
public string activationStateMachineName;
public float baseRechargeInterval;
public int baseMaxStock = 1;
public int rechargeStock = 1;
public int requiredStock = 1;
public int stockToConsume = 1;
public bool isCombatSkill = true;
public bool canceledFromSprinting;
public bool forceSprintDuringState;
public bool cancelSprintingOnActivation = true;
public bool beginSkillCooldownOnSkillEnd;
public bool fullRestockOnAssign = true;
public bool resetCooldownTimerOnUse;
public bool mustKeyPress;
public SkillDefInfo()
{
}
public SkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName, InterruptPriority interruptPriority, bool isCombatSkill, float baseRechargeInterval)
{
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: 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_0075: Unknown result type (might be due to invalid IL or missing references)
this.skillName = skillName;
this.skillNameToken = skillNameToken;
this.skillDescriptionToken = skillDescriptionToken;
this.skillIcon = skillIcon;
this.activationState = activationState;
this.activationStateMachineName = activationStateMachineName;
this.interruptPriority = interruptPriority;
this.isCombatSkill = isCombatSkill;
this.baseRechargeInterval = baseRechargeInterval;
}
public SkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName = "Weapon", bool agile = false)
{
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: 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)
this.skillName = skillName;
this.skillNameToken = skillNameToken;
this.skillDescriptionToken = skillDescriptionToken;
this.skillIcon = skillIcon;
this.activationState = activationState;
this.activationStateMachineName = activationStateMachineName;
interruptPriority = (InterruptPriority)0;
isCombatSkill = true;
baseRechargeInterval = 0f;
requiredStock = 0;
stockToConsume = 0;
cancelSprintingOnActivation = !agile;
if (agile)
{
keywordTokens = new string[1] { "KEYWORD_AGILE" };
}
}
}
namespace EntityStates.Nemforcer
{
public class NemforcerMain : GenericCharacterMain
{
private float currentHealth;
private Animator animator;
private NemforcerController nemComponent;
public override void OnEnter()
{
((GenericCharacterMain)this).OnEnter();
nemComponent = ((Component)((EntityState)this).characterBody).GetComponent<NemforcerController>();
nemComponent.mainStateMachine = ((EntityState)this).outer;
animator = ((EntityState)this).GetModelAnimator();
((BaseCharacterMain)this).smoothingParameters.forwardSpeedSmoothDamp = 0.02f;
((BaseCharacterMain)this).smoothingParameters.rightSpeedSmoothDamp = 0.02f;
}
public override void Update()
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
((GenericCharacterMain)this).Update();
bool flag = ((BaseState)this).HasBuff(Buffs.minigunBuff);
if (((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded && !flag)
{
if (Input.GetKeyDown(Config.restKey.Value))
{
((EntityState)this).outer.SetInterruptState((EntityState)(object)new Rest(), (InterruptPriority)0);
}
else if (Input.GetKeyDown(Config.saluteKey.Value))
{
((EntityState)this).outer.SetInterruptState((EntityState)(object)new Salute(), (InterruptPriority)0);
}
}
}
public override void FixedUpdate()
{
((GenericCharacterMain)this).FixedUpdate();
if (((BaseState)this).HasBuff(Buffs.minigunBuff))
{
((EntityState)this).characterBody.SetAimTimer(0.2f);
((EntityState)this).characterBody.isSprinting = false;
}
if (currentHealth != ((EntityState)this).healthComponent.combinedHealth)
{
currentHealth = ((EntityState)this).healthComponent.combinedHealth;
((EntityState)this).characterBody.RecalculateStats();
}
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetBool("inCombat", !((EntityState)this).characterBody.outOfCombat || !((EntityState)this).characterBody.outOfDanger);
}
}
}
public class SpawnState : BaseState
{
public static float duration = 2.5f;
private CameraRigController cameraController;
private bool initCamera;
public override void OnEnter()
{
((BaseState)this).OnEnter();
((EntityState)this).PlayAnimation("Body", "Spawn");
Util.PlaySound(SpawnState.spawnSoundString, ((EntityState)this).gameObject);
((EntityState)this).GetModelAnimator().SetLayerWeight(((EntityState)this).GetModelAnimator().GetLayerIndex("Minigun"), 0f);
if (NetworkServer.active)
{
((EntityState)this).characterBody.AddBuff(Buffs.HiddenInvincibility);
}
if (Object.op_Implicit((Object)(object)EnforcerModPlugin.nemesisSpawnEffect))
{
EffectManager.SimpleMuzzleFlash(SpawnState.spawnEffectPrefab, ((EntityState)this).gameObject, "SpawnOrigin", false);
}
}
public override void FixedUpdate()
{
//IL_00d0: 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)
((EntityState)this).FixedUpdate();
if (!Object.op_Implicit((Object)(