using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using IL.RoR2;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using OrbitalLaser.Components;
using OrbitalLaser.DamageTypes;
using OrbitalLaser.SkillStates;
using R2API;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.Audio;
using RoR2.ContentManagement;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2BepInExPack.GameAssetPaths.Version_1_35_0;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("OrbitalLaser")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+cfc0581de4599b6bc3299941dfd7cb93685107c2")]
[assembly: AssemblyProduct("OrbitalLaser")]
[assembly: AssemblyTitle("OrbitalLaser")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace OrbitalLaser
{
public static class Assets
{
public static GameObject orbitalLaserPrefab;
public static ShakeEmitter orbitalLaserShakeEmitter;
public static GameObject beaconGhostPrefab;
public static GameObject beaconPickupPrefab;
public static GameObject beaconPrefab;
public static ProjectileImpactExplosion beaconPrefabImpactExplosion;
public static GameObject laserSpawnerPrefab;
public static AssetBundle assetBundle;
public static void Init()
{
GetAssetBundle();
CreateLaserPrefab();
CreateBeaconGhostPrefab();
EditLaserEquipment();
CreateLaserSpawnerPrefab();
CreateBeaconPrefab();
}
private static void GetAssetBundle()
{
using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OrbitalLaser.mwmworbitalstrikebundle");
if (stream != null)
{
assetBundle = AssetBundle.LoadFromStream(stream);
}
}
private static void EditLaserEquipment()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
EquipmentDef val = Addressables.LoadAssetAsync<EquipmentDef>((object)RoR2_Junk_OrbitalLaser.OrbitalLaser_asset).WaitForCompletion();
val.pickupModelPrefab = beaconPickupPrefab;
val.pickupIconSprite = assetBundle.LoadAsset<Sprite>("texBeaconIcon");
val.cooldown = 120f;
val.canDrop = true;
val.enigmaCompatible = true;
}
private static void CreateLaserPrefab()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Unknown result type (might be due to invalid IL or missing references)
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_0191: Unknown result type (might be due to invalid IL or missing references)
//IL_0211: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
//IL_0227: Unknown result type (might be due to invalid IL or missing references)
//IL_0233: Unknown result type (might be due to invalid IL or missing references)
//IL_0260: Unknown result type (might be due to invalid IL or missing references)
//IL_026f: 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_0298: Unknown result type (might be due to invalid IL or missing references)
//IL_029f: Expected O, but got Unknown
//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
orbitalLaserPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)RoR2_Junk_OrbitalLaser.OrbitalLaser_prefab).WaitForCompletion(), "OrbitalLaser");
Object.Destroy((Object)(object)orbitalLaserPrefab.GetComponent<OrbitalLaserController>());
OrbitalLaser2Controller orbitalLaser2Controller = orbitalLaserPrefab.AddComponent<OrbitalLaser2Controller>();
orbitalLaser2Controller.chargeEffect = ((Component)orbitalLaserPrefab.transform.Find("ChargeOrbitalLaser")).gameObject;
orbitalLaser2Controller.fireEffect = ((Component)orbitalLaserPrefab.transform.Find("FireOrbitalLaser")).gameObject;
Object.Destroy((Object)(object)((Component)orbitalLaserPrefab.transform.Find("MuzzleTransform")).gameObject);
Object.Destroy((Object)(object)((Component)orbitalLaserPrefab.transform.Find("LaserPointerBeam")).gameObject);
Object.Destroy((Object)(object)((Component)orbitalLaserPrefab.transform.Find("Midpoint")).gameObject);
((SerializableEntityStateType)(ref orbitalLaserPrefab.GetComponent<EntityStateMachine>().initialStateType)).stateType = typeof(OrbitalLaserChargeState);
GameObject val = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC1_MajorAndMinorConstruct.LaserMajorConstruct_prefab).WaitForCompletion());
Transform val2 = val.transform.Find("LaserEnd");
val2.parent = orbitalLaserPrefab.transform.Find("FireOrbitalLaser");
((Component)val2).transform.localPosition = Vector3.zero;
Object.Destroy((Object)(object)val);
((Component)val2).gameObject.AddComponent<LaserEndController>();
((Component)val2).gameObject.AddComponent<AkGameObj>();
((Component)val2.Find("Point light")).GetComponent<Light>().color = new Color(0.49f, 0.9f, 0.16f, 1f);
((Component)val2.Find("PP")).GetComponent<SphereCollider>().radius = 24f;
orbitalLaserShakeEmitter = ((Component)val2).GetComponent<ShakeEmitter>();
Object.Destroy((Object)(object)((Component)val2.Find("AreaIndicator")).gameObject);
Object.Destroy((Object)(object)((Component)val2.Find("SoftGlowFlash")).gameObject);
Transform val3 = orbitalLaserPrefab.transform.Find("FireOrbitalLaser/FiringLaserHolder");
Transform val4 = val3.Find("FiringLaser");
val3.localPosition = Vector3.up * 800f;
val3.localScale = Vector3.one;
val3.eulerAngles = Vector3.zero;
Object.Destroy((Object)(object)((Component)val4).GetComponent<LaserPointer>());
LineRenderer component = ((Component)val4).GetComponent<LineRenderer>();
component.useWorldSpace = false;
component.SetPosition(0, Vector3.zero);
component.SetPosition(1, -val3.localPosition);
Transform val5 = val2.Find("Flare");
Material val6 = new Material(((Renderer)((Component)val5).GetComponent<ParticleSystemRenderer>()).sharedMaterial);
val6.SetTexture("_RemapTex", Addressables.LoadAssetAsync<Texture>((object)RoR2_Base_Common_ColorRamps.texRampHealingMedkit_png).WaitForCompletion());
((Renderer)((Component)val5).GetComponent<ParticleSystemRenderer>()).sharedMaterial = val6;
}
private static void CreateBeaconGhostPrefab()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: 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_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Expected O, but got Unknown
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_0134: Unknown result type (might be due to invalid IL or missing references)
//IL_013a: Expected O, but got Unknown
//IL_0154: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_018f: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
beaconGhostPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_Meteor.PickupMeteor_prefab).WaitForCompletion(), "BeaconGhost", false);
Object.Destroy((Object)(object)beaconGhostPrefab.GetComponent<ModelPanelParameters>());
beaconGhostPrefab.AddComponent<ProjectileGhostController>();
beaconGhostPrefab.AddComponent<VFXAttributes>();
Transform transform = beaconGhostPrefab.transform;
transform.localScale *= 0.35f;
LineRenderer val = beaconGhostPrefab.AddComponent<LineRenderer>();
val.SetPosition(0, Vector3.zero);
val.SetPosition(1, Vector3.up * 500f);
val.widthCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[2]
{
new Keyframe(0f, 0.1357909f),
new Keyframe(1f, 0.037909f)
});
val.useWorldSpace = true;
val.widthMultiplier = 0f;
((Renderer)val).material = Addressables.LoadAssetAsync<Material>((object)RoR2_Base_Captain.matCaptainAirstrikeAltLaser_mat).WaitForCompletion();
beaconGhostPrefab.AddComponent<BeaconVisualController>();
GameObject gameObject = ((Component)beaconGhostPrefab.transform.Find("mdlMeteor")).gameObject;
Material val2 = new Material(((Renderer)gameObject.GetComponent<MeshRenderer>()).material);
val2.SetColor("_Color", new Color(0.28f, 1f, 0.2f, 1f));
val2.SetColor("_EmColor", new Color(0.19f, 0.52f, 0.21f, 1f));
val2.SetTexture("_RemapTex", Addressables.LoadAssetAsync<Texture>((object)RoR2_DLC2_FalseSonBoss.texFSBLunarSpikeRamp_png).WaitForCompletion());
((Renderer)gameObject.GetComponent<MeshRenderer>()).material = val2;
beaconPickupPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_Meteor.PickupMeteor_prefab).WaitForCompletion(), "BeaconPickup", false);
gameObject = ((Component)beaconPickupPrefab.transform.Find("mdlMeteor")).gameObject;
((Renderer)gameObject.GetComponent<MeshRenderer>()).material = val2;
}
private static void CreateBeaconPrefab()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
beaconPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_Commando.CommandoGrenadeProjectile_prefab).WaitForCompletion(), "LaserBeacon");
beaconPrefab.GetComponent<ProjectileController>().ghostPrefab = beaconGhostPrefab;
((Collider)beaconPrefab.GetComponent<SphereCollider>()).material = Addressables.LoadAssetAsync<PhysicMaterial>((object)RoR2_Junk_Commando.physmatCommandoStickyGrenadeGrenade_physicMaterial).WaitForCompletion();
beaconPrefabImpactExplosion = beaconPrefab.GetComponent<ProjectileImpactExplosion>();
beaconPrefabImpactExplosion.impactEffect = null;
((ProjectileExplosion)beaconPrefabImpactExplosion).fireChildren = true;
beaconPrefabImpactExplosion.lifetime = 10f;
beaconPrefabImpactExplosion.explodeOnLifeTimeExpiration = true;
((ProjectileExplosion)beaconPrefabImpactExplosion).childrenCount = 1;
((ProjectileExplosion)beaconPrefabImpactExplosion).blastRadius = 0f;
((ProjectileExplosion)beaconPrefabImpactExplosion).blastDamageCoefficient = 0f;
((ProjectileExplosion)beaconPrefabImpactExplosion).blastProcCoefficient = 0f;
beaconPrefabImpactExplosion.lifetimeAfterImpact = 3f;
((ProjectileExplosion)beaconPrefabImpactExplosion).bonusBlastForce = Vector3.zero;
((ProjectileExplosion)beaconPrefabImpactExplosion).childrenProjectilePrefab = laserSpawnerPrefab;
beaconPrefab.GetComponent<ProjectileSimple>().lifetime = 10.01f;
beaconPrefab.AddComponent<ProjectileStickOnImpact>().alignNormals = true;
}
private static void CreateLaserSpawnerPrefab()
{
laserSpawnerPrefab = PrefabAPI.CreateEmptyPrefab("OrbitalLaserSpawner");
laserSpawnerPrefab.AddComponent<ProjectileController>();
laserSpawnerPrefab.AddComponent<TeamFilter>();
laserSpawnerPrefab.AddComponent<LaserSpawnerController>();
}
}
internal class ContentPacks : IContentPackProvider
{
[CompilerGenerated]
private sealed class <FinalizeAsync>d__20 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public FinalizeAsyncArgs args;
public ContentPacks <>4__this;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <FinalizeAsync>d__20(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
if (<>1__state != 0)
{
return false;
}
<>1__state = -1;
args.ReportProgress(1f);
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <GenerateContentPackAsync>d__19 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public GetContentPackAsyncArgs args;
public ContentPacks <>4__this;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <GenerateContentPackAsync>d__19(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
if (<>1__state != 0)
{
return false;
}
<>1__state = -1;
ContentPack.Copy(<>4__this.contentPack, args.output);
args.ReportProgress(1f);
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <LoadStaticContentAsync>d__18 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public LoadStaticContentAsyncArgs args;
public ContentPacks <>4__this;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <LoadStaticContentAsync>d__18(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
if (<>1__state != 0)
{
return false;
}
<>1__state = -1;
<>4__this.contentPack.identifier = <>4__this.identifier;
<>4__this.contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray());
<>4__this.contentPack.masterPrefabs.Add(masterPrefabs.ToArray());
<>4__this.contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray());
<>4__this.contentPack.survivorDefs.Add(survivorDefs.ToArray());
<>4__this.contentPack.unlockableDefs.Add(unlockableDefs.ToArray());
<>4__this.contentPack.skillDefs.Add(skillDefs.ToArray());
<>4__this.contentPack.skillFamilies.Add(skillFamilies.ToArray());
<>4__this.contentPack.entityStateTypes.Add(entityStates.ToArray());
<>4__this.contentPack.buffDefs.Add(buffDefs.ToArray());
<>4__this.contentPack.effectDefs.Add(effectDefs.ToArray());
<>4__this.contentPack.itemDefs.Add(itemDefs.ToArray());
<>4__this.contentPack.itemTierDefs.Add(itemTierDefs.ToArray());
<>4__this.contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray());
args.ReportProgress(1f);
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
internal ContentPack contentPack = new ContentPack();
public static List<GameObject> bodyPrefabs = new List<GameObject>();
public static List<GameObject> masterPrefabs = new List<GameObject>();
public static List<GameObject> projectilePrefabs = new List<GameObject>();
public static List<SurvivorDef> survivorDefs = new List<SurvivorDef>();
public static List<UnlockableDef> unlockableDefs = new List<UnlockableDef>();
public static List<SkillFamily> skillFamilies = new List<SkillFamily>();
public static List<SkillDef> skillDefs = new List<SkillDef>();
public static List<Type> entityStates = new List<Type>();
public static List<BuffDef> buffDefs = new List<BuffDef>();
public static List<EffectDef> effectDefs = new List<EffectDef>();
public static List<ItemDef> itemDefs = new List<ItemDef>();
public static List<ItemTierDef> itemTierDefs = new List<ItemTierDef>();
public static List<NetworkSoundEventDef> networkSoundEventDefs = new List<NetworkSoundEventDef>();
public string identifier => "com.Miyowi.OrbitalLaser";
public void Init()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders);
}
private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider)
{
addContentPackProvider.Invoke((IContentPackProvider)(object)this);
}
[IteratorStateMachine(typeof(<LoadStaticContentAsync>d__18))]
public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <LoadStaticContentAsync>d__18(0)
{
<>4__this = this,
args = args
};
}
[IteratorStateMachine(typeof(<GenerateContentPackAsync>d__19))]
public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <GenerateContentPackAsync>d__19(0)
{
<>4__this = this,
args = args
};
}
[IteratorStateMachine(typeof(<FinalizeAsync>d__20))]
public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <FinalizeAsync>d__20(0)
{
<>4__this = this,
args = args
};
}
}
public static class Hooks
{
[CompilerGenerated]
private static class <>O
{
public static Manipulator <0>__ReplaceInstantiatedPrefab;
}
public static void Init()
{
//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_001c: Expected O, but got Unknown
object obj = <>O.<0>__ReplaceInstantiatedPrefab;
if (obj == null)
{
Manipulator val = ReplaceInstantiatedPrefab;
<>O.<0>__ReplaceInstantiatedPrefab = val;
obj = (object)val;
}
EquipmentSlot.FireOrbitalLaser += (Manipulator)obj;
Run.onRunStartGlobal += delegate
{
OrbitalLaser2Controller.instanceCount = 0;
};
}
private static void ReplaceInstantiatedPrefab(ILContext il)
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Expected O, but got Unknown
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
Func<EquipmentSlot, Vector3, bool> func = delegate(EquipmentSlot equipmentSlot, Vector3 position)
{
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: 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_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
if (OrbitalLaser2Controller.instanceCount >= Options.maxLaserCount.Value)
{
return false;
}
CharacterBody characterBody = equipmentSlot.characterBody;
Ray val3 = default(Ray);
if (Object.op_Implicit((Object)(object)characterBody.inputBank))
{
((Ray)(ref val3))..ctor(characterBody.inputBank.aimOrigin, characterBody.inputBank.aimDirection);
}
else
{
((Ray)(ref val3))..ctor(characterBody.transform.position, characterBody.transform.forward);
}
FireProjectileInfo val4 = default(FireProjectileInfo);
val4.projectilePrefab = Assets.beaconPrefab;
val4.position = ((Ray)(ref val3)).origin;
val4.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref val3)).direction);
val4.owner = ((Component)characterBody).gameObject;
val4.damage = 0f;
val4.force = 300f;
val4.crit = false;
FireProjectileInfo val5 = val4;
ProjectileManager.instance.FireProjectile(val5);
return true;
};
ILCursor val = new ILCursor(il);
ILLabel val2 = val.DefineLabel();
if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0)
}))
{
val.Emit(OpCodes.Br, (object)val2);
if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1]
{
(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<NetworkServer>(x, "Spawn")
}))
{
val.MarkLabel(val2);
val.Emit(OpCodes.Ldarg_0);
val.Emit(OpCodes.Ldloc_0);
val.EmitDelegate<Func<EquipmentSlot, Vector3, bool>>(func);
val.Emit(OpCodes.Ret);
}
else
{
Log.Error("Part 2 of ReplaceInstantiatedPrefab ILHook failed!");
}
}
else
{
Log.Error("Part 1 of ReplaceInstantiatedPrefab ILHook failed!");
}
}
}
public static class Language
{
private const string prefix = "EQUIPMENT_ORBITALLASER_";
public static void Init()
{
Add("NAME", "UES Stratagem");
Add("PICKUP", "Throw a beacon that calls upon an orbital laser from the UES Safe Travels.");
Add("DESC", "Throw a beacon to request an <style=cIsDamage>orbital laser strike</style> from the <style=cIsDamage>UES Safe Travels</style>, dealing <style=cIsDamage>12,000% damage</style> over <style=cIsUtility>6 seconds.</style>");
Add("LORE", "<style=cMono>//--AUTO-TRANSCRIPTION FROM UES [Redacted] --//</style>\n\n\"Have you ever wondered what'd happen if you lit one of these babies from the ship?\"\n\n\"No. What?\"\n\n\"Well, think about it. How would the ship respond to a call to arms from its own location? It's not like we could fire lasers at ourselves. Like, if I-\"\n\n\"Stop blabbering. Those beacons are to alert <i>all</i> nearby combat-equipped UES vessels of an extreme immediate threat. Activation would result in a swift bombardment. Where the hell did you even find that? Hand it over right now.\"\n\n\n\"...\"\n\n\n\"I said hand it over. Why is it gl...\"\n\n\n\"...\"\n\n\n\"Tell me you didn't.\"\n\n<style=cMono>//--TRANSCRIPTION UNINTELLIGIBLE --//</style>");
}
public static string Add(string token, string text)
{
string text2 = "EQUIPMENT_ORBITALLASER_" + token;
LanguageAPI.Add(text2, text);
return text2;
}
}
internal static class Log
{
private 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 Options
{
private static bool? _rooEnabled;
public static bool rooEnabled
{
get
{
if (!_rooEnabled.HasValue)
{
_rooEnabled = Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions");
}
return _rooEnabled.Value;
}
}
public static ConfigEntry<float> fireFrequency { get; set; }
public static ConfigEntry<float> damageCoefficientInitial { get; set; }
public static ConfigEntry<float> damageCoefficientFinal { get; set; }
public static ConfigEntry<float> procCoefficient { get; set; }
public static ConfigEntry<float> fireDuration { get; set; }
public static ConfigEntry<float> lifetimeAfterImpact { get; set; }
public static ConfigEntry<bool> toggleSuperStun { get; set; }
public static ConfigEntry<bool> toggleShipOrigin { get; set; }
public static ConfigEntry<int> maxLaserCount { get; set; }
private static void OnLaserSettingsChanged()
{
OrbitalLaser2Controller.fireFrequency = fireFrequency.Value;
OrbitalLaser2Controller.damageCoefficientInitial = damageCoefficientInitial.Value / 100f;
OrbitalLaser2Controller.damageCoefficientFinal = damageCoefficientFinal.Value / 100f;
OrbitalLaser2Controller.procCoefficient = procCoefficient.Value;
OrbitalLaser2Controller.fireDuration = fireDuration.Value;
Assets.orbitalLaserShakeEmitter.duration = fireDuration.Value;
Assets.beaconPrefabImpactExplosion.lifetimeAfterImpact = lifetimeAfterImpact.Value;
SuperStun1s.shouldStun = toggleSuperStun.Value;
}
public static void Init()
{
fireFrequency = OrbitalLaser.config.Bind<float>("Orbital Laser", "Fire Frequency", 5f, "The frequency of damage ticks, with the time between calculated as 1/fireFrequency.");
fireFrequency.SettingChanged += delegate
{
OnLaserSettingsChanged();
};
damageCoefficientInitial = OrbitalLaser.config.Bind<float>("Orbital Laser", "Initial Damage Coefficient", 400f, "The percentage damage coefficient the laser starts at.");
damageCoefficientInitial.SettingChanged += delegate
{
OnLaserSettingsChanged();
};
damageCoefficientFinal = OrbitalLaser.config.Bind<float>("Orbital Laser", "Final Damage Coefficient", 400f, "The percentage damage coefficient the laser ends at.");
damageCoefficientFinal.SettingChanged += delegate
{
OnLaserSettingsChanged();
};
procCoefficient = OrbitalLaser.config.Bind<float>("Orbital Laser", "Proc Coefficient", 0.5f, "The proc coefficient of each laser damage tick.");
procCoefficient.SettingChanged += delegate
{
OnLaserSettingsChanged();
};
fireDuration = OrbitalLaser.config.Bind<float>("Orbital Laser", "Fire Duration", 6f, "The amount of time the laser fires for.");
fireDuration.SettingChanged += delegate
{
OnLaserSettingsChanged();
};
toggleSuperStun = OrbitalLaser.config.Bind<bool>("Orbital Laser", "Toggle Super Stun", true, "Whether or not the laser is capable of attempting to stun enemies that normally ignore stun (most bosses apart from Mithrix don't implement a stun state, and for them this will not change anything).");
toggleSuperStun.SettingChanged += delegate
{
OnLaserSettingsChanged();
};
toggleShipOrigin = OrbitalLaser.config.Bind<bool>("Orbital Laser", "Toggle Ship Origin", true, "Whether or not the laser origin and hitbox originate from the Safe Travels/Contact Light if the SafeTravelsInSkybox mod is installed.");
maxLaserCount = OrbitalLaser.config.Bind<int>("Orbital Laser", "Max Laser Count", 10, "The maximum number of lasers that can active at once.");
lifetimeAfterImpact = OrbitalLaser.config.Bind<float>("Orbital Laser Beacon", "Lifetime After Impact", 3f, "The maximum amount of time it can take for the laser to spawn after the beacon hits a surface (projectile already has an absolute max lifetime of 10s).");
lifetimeAfterImpact.SettingChanged += delegate
{
OnLaserSettingsChanged();
};
if (rooEnabled)
{
RoOInit();
}
}
public static void OnLoadFinished()
{
OnLaserSettingsChanged();
}
private static void RoOInit()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: 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_0031: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Expected O, but got Unknown
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Expected O, but got Unknown
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Expected O, but got Unknown
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Expected O, but got Unknown
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Expected O, but got Unknown
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_011e: Expected O, but got Unknown
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Expected O, but got Unknown
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Expected O, but got Unknown
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Expected O, but got Unknown
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_0159: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Expected O, but got Unknown
//IL_0164: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: Expected O, but got Unknown
//IL_0174: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
//IL_0190: Expected O, but got Unknown
//IL_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_0195: Expected O, but got Unknown
ModSettingsManager.AddOption((BaseOption)new StepSliderOption(fireFrequency, new StepSliderConfig
{
min = 0f,
max = 1000f,
increment = 1f
}));
ModSettingsManager.AddOption((BaseOption)new StepSliderOption(damageCoefficientInitial, new StepSliderConfig
{
min = 0f,
max = 20000f,
increment = 10f
}));
ModSettingsManager.AddOption((BaseOption)new StepSliderOption(damageCoefficientFinal, new StepSliderConfig
{
min = 0f,
max = 20000f,
increment = 10f
}));
ModSettingsManager.AddOption((BaseOption)new StepSliderOption(procCoefficient, new StepSliderConfig
{
min = 0f,
max = 10f,
increment = 0.05f
}));
ModSettingsManager.AddOption((BaseOption)new StepSliderOption(fireDuration, new StepSliderConfig
{
min = 0f,
max = 20f,
increment = 0.1f
}));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(toggleSuperStun, new CheckBoxConfig()));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(toggleShipOrigin, new CheckBoxConfig()));
ModSettingsManager.AddOption((BaseOption)new StepSliderOption(lifetimeAfterImpact, new StepSliderConfig
{
min = 0f,
max = 10f,
increment = 0.1f
}));
ModSettingsManager.AddOption((BaseOption)new IntSliderOption(maxLaserCount, new IntSliderConfig
{
min = 0,
max = 1000
}));
ModSettingsManager.SetModDescription("Config options for the Orbital Laser (UES Stratagem) mod.");
ModSettingsManager.SetModIcon(Assets.assetBundle.LoadAsset<Sprite>("icon"));
}
}
[BepInPlugin("mwmw.OrbitalLaser", "OrbitalLaser", "1.1.1")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class OrbitalLaser : BaseUnityPlugin
{
public const string PluginGUID = "mwmw.OrbitalLaser";
public const string PluginAuthor = "mwmw";
public const string PluginName = "OrbitalLaser";
public const string PluginVersion = "1.1.1";
public static ConfigFile config;
public void Awake()
{
Log.Init(((BaseUnityPlugin)this).Logger);
config = ((BaseUnityPlugin)this).Config;
Language.Init();
States.Init();
Assets.Init();
Options.Init();
SuperStun1s.Init();
Hooks.Init();
new ContentPacks().Init();
RoR2Application.onLoadFinished = (Action)Delegate.Combine(RoR2Application.onLoadFinished, new Action(OnLoadFinished));
}
private void OnLoadFinished()
{
Options.OnLoadFinished();
}
}
public static class SoftDeps
{
private static bool? _shipEnabled;
public static bool shipEnabled
{
get
{
if (!_shipEnabled.HasValue)
{
_shipEnabled = Chainloader.PluginInfos.ContainsKey("swuff.SafeTravelsInSkybox");
}
return _shipEnabled.Value;
}
}
}
public static class States
{
public static void Init()
{
ContentPacks.entityStates.Add(typeof(OrbitalLaserBaseState));
ContentPacks.entityStates.Add(typeof(OrbitalLaserChargeState));
ContentPacks.entityStates.Add(typeof(OrbitalLaserFireState));
ContentPacks.entityStates.Add(typeof(OrbitalLaserDecayState));
}
}
}
namespace OrbitalLaser.SkillStates
{
public abstract class OrbitalLaserBaseState : BaseState
{
protected OrbitalLaser2Controller controller;
public override void OnEnter()
{
((BaseState)this).OnEnter();
controller = ((EntityState)this).GetComponent<OrbitalLaser2Controller>();
}
}
public class OrbitalLaserChargeState : OrbitalLaserBaseState
{
public override void OnEnter()
{
base.OnEnter();
controller.chargeEffect.SetActive(true);
controller.maxSpeed = controller.chargeMaxVelocity;
OrbitalLaser2Controller.instanceCount++;
}
public override void OnExit()
{
controller.chargeEffect.SetActive(false);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (NetworkServer.active && ((EntityState)this).fixedAge >= controller.chargeDuration)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new OrbitalLaserFireState());
}
}
}
public class OrbitalLaserDecayState : OrbitalLaserBaseState
{
public override void OnEnter()
{
base.OnEnter();
controller.maxSpeed = 0f;
OrbitalLaser2Controller.instanceCount--;
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= controller.decayDuration)
{
EntityState.Destroy((Object)(object)((EntityState)this).gameObject);
}
}
}
public class OrbitalLaserFireState : OrbitalLaserBaseState
{
private float bulletAttackTimer;
public override void OnEnter()
{
base.OnEnter();
controller.fireEffect.SetActive(true);
controller.maxSpeed = controller.fireMaxVelocity;
}
public override void OnExit()
{
controller.fireEffect.SetActive(false);
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Expected O, but got Unknown
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: 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_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Unknown result type (might be due to invalid IL or missing references)
//IL_0208: Unknown result type (might be due to invalid IL or missing references)
//IL_020d: Unknown result type (might be due to invalid IL or missing references)
//IL_0229: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
if (!NetworkServer.active)
{
return;
}
if (((EntityState)this).fixedAge >= OrbitalLaser2Controller.fireDuration || !Object.op_Implicit((Object)(object)controller.ownerBody))
{
((EntityState)this).outer.SetNextState((EntityState)(object)new OrbitalLaserDecayState());
return;
}
bulletAttackTimer -= ((EntityState)this).GetDeltaTime();
if (Object.op_Implicit((Object)(object)controller.ownerBody) && bulletAttackTimer < 0f)
{
bulletAttackTimer += 1f / OrbitalLaser2Controller.fireFrequency;
BulletAttack val = new BulletAttack();
val.owner = ((Component)controller.ownerBody).gameObject;
val.weapon = ((EntityState)this).gameObject;
val.origin = ((EntityState)this).transform.position;
val.maxDistance = 1200f;
if (Options.toggleShipOrigin.Value && Object.op_Implicit((Object)(object)OrbitalLaser2Controller.cachedShipTransform))
{
val.aimVector = OrbitalLaser2Controller.cachedShipTransform.position + OrbitalLaser2Controller.cachedShipOffset - ((EntityState)this).transform.position;
}
else
{
val.aimVector = Vector3.up;
}
val.minSpread = 0f;
val.maxSpread = 0f;
val.damage = Mathf.Lerp(OrbitalLaser2Controller.damageCoefficientInitial * controller.ownerBody.damage, OrbitalLaser2Controller.damageCoefficientFinal * controller.ownerBody.damage, ((EntityState)this).fixedAge / OrbitalLaser2Controller.fireDuration);
val.force = controller.force;
val.muzzleName = "";
val.isCrit = Util.CheckRoll(controller.ownerBody.crit, controller.ownerBody.master);
val.stopperMask = ((LayerIndex)(ref LayerIndex.noCollision)).mask;
val.damageColorIndex = (DamageColorIndex)3;
val.damageType = DamageTypeCombo.op_Implicit((DamageType)32);
val.procCoefficient = OrbitalLaser2Controller.procCoefficient;
val.radius = 4.5f;
DamageAPI.AddModdedDamageType(val, SuperStun1s.damageType);
val.Fire();
}
}
}
}
namespace OrbitalLaser.DamageTypes
{
public static class SuperStun1s
{
[CompilerGenerated]
private static class <>O
{
public static hook_TakeDamageProcess <0>__AddBossStun1s;
}
public static bool shouldStun;
public static ModdedDamageType damageType;
public static void Init()
{
//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)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Expected O, but got Unknown
damageType = DamageAPI.ReserveDamageType();
object obj = <>O.<0>__AddBossStun1s;
if (obj == null)
{
hook_TakeDamageProcess val = AddBossStun1s;
<>O.<0>__AddBossStun1s = val;
obj = (object)val;
}
HealthComponent.TakeDamageProcess += (hook_TakeDamageProcess)obj;
}
private static void AddBossStun1s(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo damageInfo)
{
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self, damageInfo);
if (shouldStun && Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.healthComponent) && DamageAPI.HasModdedDamageType(damageInfo, damageType))
{
SetStateOnHurt component = ((Component)self.body.healthComponent).GetComponent<SetStateOnHurt>();
if (Object.op_Implicit((Object)(object)component) && component.hasEffectiveAuthority)
{
component.SetStunInternal(1f);
}
}
}
}
}
namespace OrbitalLaser.Components
{
public class BeaconVisualController : MonoBehaviour
{
private LineRenderer lineRenderer;
private float stopwatch;
public void OnEnable()
{
OrbitalLaser2Controller.instanceCount++;
}
public void Start()
{
lineRenderer = ((Component)this).GetComponent<LineRenderer>();
}
public void Update()
{
//IL_0020: 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_003d: 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)
stopwatch += Time.deltaTime;
lineRenderer.SetPosition(0, ((Component)this).transform.position);
lineRenderer.SetPosition(1, ((Component)this).transform.position + Vector3.up * 200f);
if (stopwatch > 1f)
{
lineRenderer.widthMultiplier = Mathf.Min(Mathf.Lerp(0f, 1f, stopwatch - 1f), 1f);
}
}
public void OnDisable()
{
lineRenderer.widthMultiplier = 0f;
stopwatch = 0f;
OrbitalLaser2Controller.instanceCount--;
}
}
internal class LaserEndController : MonoBehaviour
{
private static LoopSoundDef flightSoundLoop = Addressables.LoadAssetAsync<LoopSoundDef>((object)RoR2_Base_Vagrant.lsdVagrantTrackingBombFlight_asset).WaitForCompletion();
private void Awake()
{
}
private void OnEnable()
{
Util.PlaySound(flightSoundLoop.startSoundName, ((Component)this).gameObject);
}
private void Update()
{
}
private void OnDisable()
{
Util.PlaySound(flightSoundLoop.stopSoundName, ((Component)this).gameObject);
}
}
public class LaserSpawnerController : MonoBehaviour
{
public void Start()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active)
{
ProjectileController component = ((Component)this).GetComponent<ProjectileController>();
Vector3 val = ((Component)this).transform.position;
RaycastHit val2 = default(RaycastHit);
if (Physics.Raycast(((Component)this).transform.position, Vector3.down, ref val2, 500f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)))
{
val = ((RaycastHit)(ref val2)).point;
}
GameObject val3 = Object.Instantiate<GameObject>(Assets.orbitalLaserPrefab, val, Quaternion.identity);
val3.GetComponent<OrbitalLaser2Controller>().ownerBody = component.Networkowner.GetComponent<CharacterBody>();
NetworkServer.Spawn(val3);
}
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
public class OrbitalLaser2Controller : MonoBehaviour
{
public CharacterBody ownerBody;
private InputBankTest ownerInputBank;
[Header("Movement Parameters")]
public float smoothDampTime = 0.1f;
protected Vector3 velocity;
public float maxSpeed;
[Header("Attack Parameters")]
public static float fireFrequency = 5f;
public static float damageCoefficientInitial = 4f;
public static float damageCoefficientFinal = 4f;
public static float procCoefficient = 0.5f;
public float force = 0f;
[Header("Charge")]
public GameObject chargeEffect;
public float chargeDuration = 0f;
public float chargeMaxVelocity = 40f;
private Transform chargeEffectTransform;
[Header("Fire")]
public GameObject fireEffect;
public static float fireDuration = 6f;
public float fireMaxVelocity = 250f;
[Header("Decay")]
public float decayDuration = 1.5f;
private Vector3 mostRecentPointerPosition;
private Vector3 mostRecentPointerNormal;
public static Transform cachedShipTransform;
public static Vector3 cachedShipOffset;
public static int instanceCount;
public void Start()
{
//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_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_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_019a: Unknown result type (might be due to invalid IL or missing references)
//IL_019f: Unknown result type (might be due to invalid IL or missing references)
//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: Unknown result type (might be due to invalid IL or missing references)
//IL_0110: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Unknown result type (might be due to invalid IL or missing references)
chargeEffect.SetActive(true);
chargeEffect.GetComponent<ObjectScaleCurve>().timeMax = chargeDuration;
mostRecentPointerPosition = ((Component)this).transform.position;
mostRecentPointerNormal = Vector3.up;
if (!SoftDeps.shipEnabled || !Options.toggleShipOrigin.Value)
{
return;
}
if (!Object.op_Implicit((Object)(object)cachedShipTransform))
{
Scene activeScene = SceneManager.GetActiveScene();
GameObject? obj2 = Array.Find(((Scene)(ref activeScene)).GetRootGameObjects(), (GameObject obj) => ((Object)obj).name == "Colony Ship Variant(Clone)");
cachedShipTransform = ((obj2 != null) ? obj2.transform : null);
if (Object.op_Implicit((Object)(object)cachedShipTransform))
{
float x = cachedShipTransform.localScale.x;
cachedShipTransform = cachedShipTransform.Find("ShipJetCore/ShipHull");
cachedShipOffset = cachedShipTransform.up * 2.2f * x;
}
else
{
activeScene = SceneManager.GetActiveScene();
GameObject? obj3 = Array.Find(((Scene)(ref activeScene)).GetRootGameObjects(), (GameObject obj) => ((Object)obj).name == "ContactLightProp Variant(Clone)");
cachedShipTransform = ((obj3 != null) ? obj3.transform : null);
}
}
if (Object.op_Implicit((Object)(object)cachedShipTransform))
{
Transform val = ((Component)this).transform.Find("FireOrbitalLaser/FiringLaserHolder");
Transform val2 = val.Find("FiringLaser");
LineRenderer component = ((Component)val2).GetComponent<LineRenderer>();
component.useWorldSpace = true;
component.SetPosition(0, cachedShipTransform.position + cachedShipOffset);
component.SetPosition(1, val2.position - val.localPosition);
}
}
private void Update()
{
}
private void FixedUpdate()
{
//IL_0017: 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_0039: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active)
{
((Component)this).transform.position = Vector3.SmoothDamp(((Component)this).transform.position, mostRecentPointerPosition, ref velocity, smoothDampTime, maxSpeed, Time.fixedDeltaTime);
}
}
}
}