Decompiled source of RedRisingCards v1.14.0

RedRisingCards.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using MapsExt;
using MapsExt.MapObjects;
using MapsExt.Properties;
using Photon.Pun;
using RedRisingCards.Cards;
using RedRisingCards.Effects;
using RedRisingCards.Maps;
using RedRisingCards.Patches;
using RedRisingCards.Terrain;
using RedRisingCards.Util;
using Sirenix.Serialization;
using TMPro;
using UnboundLib;
using UnboundLib.Cards;
using UnboundLib.GameModes;
using UnboundLib.Networking;
using UnboundLib.Utils;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
namespace RedRisingCards
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.lel.rounds.redrisingcards", "Red Rising Cards", "1.14.0")]
	[BepInProcess("Rounds.exe")]
	public class Plugin : BaseUnityPlugin
	{
		public const string ModId = "com.lel.rounds.redrisingcards";

		public const string ModName = "Red Rising Cards";

		public const string Version = "1.14.0";

		public const string ModInitials = "RR";

		public const string MapsExtendedId = "io.olavim.rounds.mapsextended";

		private const int ConfigVersion = 11;

		private const int LastFullResetVersion = 10;

		public const bool AllCommon = true;

		internal static Plugin Instance;

		internal static ManualLogSource Log;

		internal static ConfigEntry<float> BootsDuration;

		internal static ConfigEntry<float> BootsHorizontalThrust;

		internal static ConfigEntry<float> BootsUpThrust;

		internal static ConfigEntry<float> BootsDownThrust;

		internal static ConfigEntry<float> BootsBlockCooldownAdd;

		internal static ConfigEntry<float> FistChargeTime;

		internal static ConfigEntry<float> FistMinDamage;

		internal static ConfigEntry<float> FistMaxDamage;

		internal static ConfigEntry<float> FistKnockback;

		internal static ConfigEntry<float> FistFlatSize;

		internal static ConfigEntry<float> FistChargedSize;

		internal static ConfigEntry<float> FistChargedKnockback;

		internal static ConfigEntry<float> RazorDamage;

		internal static ConfigEntry<float> RazorReach;

		internal static ConfigEntry<float> RazorArc;

		internal static ConfigEntry<float> RazorCooldown;

		internal static ConfigEntry<float> ScytheDamage;

		internal static ConfigEntry<float> ScytheReach;

		internal static ConfigEntry<float> ScytheArc;

		internal static ConfigEntry<float> ScytheCooldown;

		internal static ConfigEntry<float> ScythePull;

		internal static ConfigEntry<float> TwinDamage;

		internal static ConfigEntry<float> TwinReach;

		internal static ConfigEntry<float> TwinArc;

		internal static ConfigEntry<float> TwinCooldown;

		internal static ConfigEntry<float> RazorKnockback;

		internal static ConfigEntry<float> RazorChargeTime;

		internal static ConfigEntry<float> RazorThrowRecover;

		internal static ConfigEntry<float> RazorJavelinDamage;

		internal static ConfigEntry<float> RazorJavelinSpeed;

		internal static ConfigEntry<float> RazorJavelinGravity;

		internal static ConfigEntry<float> RazorDeflectCooldown;

		internal static ConfigEntry<float> RazorDeflectDamage;

		internal static ConfigEntry<bool> RazorBladeGuard;

		internal static ConfigEntry<bool> TwinDeflects;

		internal static ConfigEntry<float> RazorGuardTime;

		internal static ConfigEntry<float> RazorGuardCone;

		internal static ConfigEntry<float> RazorGuardCooldown;

		internal static ConfigEntry<bool> RazorCutPlatforms;

		internal static ConfigEntry<float> RazorLungeSpeed;

		internal static ConfigEntry<float> RazorLungeDistance;

		internal static ConfigEntry<float> RazorLungeDamage;

		internal static ConfigEntry<int> RazorAirUpLunges;

		internal static ConfigEntry<float> CloakDuration;

		internal static ConfigEntry<float> CloakExtraDurationPerCopy;

		internal static ConfigEntry<float> CloakMaxDuration;

		internal static ConfigEntry<float> CloakBlockCooldownAdd;

		internal static ConfigEntry<float> CloakMoveSpeed;

		internal static ConfigEntry<float> DiveDistance;

		internal static ConfigEntry<float> DiveSpeed;

		internal static ConfigEntry<float> DiveKnockback;

		internal static ConfigEntry<float> DiveSilence;

		internal static ConfigEntry<float> DiveBlockCooldownAdd;

		internal static ConfigEntry<bool> DiveCarveTunnels;

		internal static ConfigEntry<float> DiveTunnelPadding;

		internal static ConfigEntry<float> SoundVolume;

		internal static ConfigEntry<float> ParasiteLineLength;

		internal static ConfigEntry<float> ParasiteTurnRate;

		internal static ConfigEntry<float> ParasiteCone;

		internal static ConfigEntry<float> ParasiteRange;

		internal static ConfigEntry<float> ParasiteDamage;

		internal static ConfigEntry<string> ParasiteAimLineMode;

		internal static ConfigEntry<float> StormBoltDamage;

		internal static ConfigEntry<float> StormArcDamage;

		internal static ConfigEntry<int> StormArcTargets;

		internal static ConfigEntry<float> StormArcRange;

		internal static ConfigEntry<float> StormDelay;

		internal static ConfigEntry<float> StormTargetCooldown;

		internal static ConfigEntry<float> StormExtraCopyBonus;

		internal static ConfigEntry<float> RageMaxBonus;

		internal static ConfigEntry<float> RageFullAtHealth;

		internal static ConfigEntry<float> RageMoveSpeed;

		internal static ConfigEntry<float> RageExtraCopyBonus;

		internal static ConfigEntry<float> CarvedHealth;

		internal static ConfigEntry<float> CarvedDamage;

		internal static ConfigEntry<float> CarvedSize;

		internal static ConfigEntry<float> CarvedMoveSpeed;

		internal static ConfigEntry<float> PeerlessMultiplier;

		internal static ConfigEntry<float> PeerlessRecharge;

		internal static ConfigEntry<float> PeerlessExtraCopyMultiplier;

		internal static ConfigEntry<float> PeerlessExtraCopyRechargeCut;

		internal static ConfigEntry<float> IronRainSlamSpeed;

		internal static ConfigEntry<float> IronRainSteer;

		internal static ConfigEntry<float> IronRainRadius;

		internal static ConfigEntry<float> IronRainDamage;

		internal static ConfigEntry<float> IronRainLaunch;

		internal static ConfigEntry<float> IronRainCrater;

		internal static ConfigEntry<float> IronRainMaxTime;

		internal static ConfigEntry<float> OverchargeRadius;

		internal static ConfigEntry<float> OverchargeDamage;

		internal static ConfigEntry<float> OverchargeLaunch;

		internal static ConfigEntry<float> OverchargeChargeFaster;

		internal static ConfigEntry<float> AmbushDamage;

		internal static ConfigEntry<float> AmbushSilence;

		internal static ConfigEntry<float> AmbushExtraCloak;

		internal static ConfigEntry<float> ClawdrillRamDamage;

		internal static ConfigEntry<float> ClawdrillDistanceBonus;

		internal static ConfigEntry<float> ClawdrillBlockCooldown;

		internal static ConfigEntry<float> BroodDrainPerSecond;

		internal static ConfigEntry<float> BroodDuration;

		internal static ConfigEntry<float> BroodHealFraction;

		internal static ConfigEntry<float> ArmorHealth;

		internal static ConfigEntry<float> ArmorInvulnerableTime;

		internal static ConfigEntry<float> ArmorHealFraction;

		internal static ConfigEntry<float> ObsidianHealth;

		internal static ConfigEntry<float> ObsidianRegen;

		internal static ConfigEntry<float> ObsidianDamage;

		internal static ConfigEntry<float> WillowDamage;

		internal static ConfigEntry<float> WillowReach;

		internal static ConfigEntry<float> WillowGuardTime;

		internal static ConfigEntry<float> TempestDamage;

		internal static ConfigEntry<float> TempestRange;

		internal static ConfigEntry<int> TempestTargets;

		internal static ConfigEntry<float> FuryDuration;

		internal static ConfigEntry<float> FuryCooldown;

		internal static ConfigEntry<float> FuryMoveSpeed;

		internal static ConfigEntry<float> IronRainExtraDamage;

		internal static ConfigEntry<float> IronRainExtraRadius;

		internal static ConfigEntry<float> OverchargeExtraDamage;

		internal static ConfigEntry<float> AmbushExtraMultiplier;

		internal static ConfigEntry<float> AmbushExtraSilence;

		internal static ConfigEntry<float> ClawdrillExtraRamDamage;

		internal static ConfigEntry<float> BroodExtraDrain;

		internal static ConfigEntry<float> TempestExtraDamage;

		internal static ConfigEntry<float> FuryExtraDuration;

		internal static ConfigEntry<float> FuryExtraCooldownCut;

		internal static ConfigEntry<float> BootsBulletGravity;

		internal static ConfigEntry<float> DiveDrillRoundWindow;

		internal static ConfigEntry<float> TempestBulletSpeed;

		internal static ConfigEntry<float> FuryFireRate;

		internal static ConfigEntry<bool> IronRainReloads;

		internal static ConfigEntry<float> PlanetfallSpeed;

		internal static ConfigEntry<float> PlanetfallRadius;

		internal static ConfigEntry<float> PlanetfallDamage;

		internal static ConfigEntry<float> PlanetfallPoolRadius;

		internal static ConfigEntry<float> PlanetfallPoolSeconds;

		internal static ConfigEntry<float> PlanetfallPoolDps;

		internal static ConfigEntry<float> ThunderheadDamage;

		internal static ConfigEntry<float> ThunderheadInterval;

		internal static ConfigEntry<float> ThunderheadRange;

		internal static ConfigEntry<float> ThunderheadExtraIntervalCut;

		internal static ConfigEntry<float> ReapThreshold;

		internal static ConfigEntry<float> ReapDamage;

		internal static ConfigEntry<float> ReapBlockRefund;

		internal static ConfigEntry<float> PlateHealth;

		internal static ConfigEntry<float> PlateRecharge;

		internal static ConfigEntry<float> PlateNovaDamage;

		internal static ConfigEntry<float> PlateNovaRadius;

		internal static ConfigEntry<float> PlateNovaLaunch;

		internal static ConfigEntry<float> RipwingSpeed;

		internal static ConfigEntry<float> RipwingExtraFlight;

		internal static ConfigEntry<float> RipwingRamDamage;

		internal static ConfigEntry<float> RipwingRamLaunch;

		internal static ConfigEntry<float> RipwingMinSpeed;

		internal static ConfigEntry<float> RipwingRamCooldown;

		internal static ConfigEntry<float> WrathRageScale;

		internal static ConfigEntry<float> WrathStrikeDelay;

		internal static ConfigEntry<float> WrathTargetCooldown;

		internal static ConfigEntry<float> WrathLifesteal;

		internal static ConfigEntry<float> PhantomExtraCloak;

		internal static ConfigEntry<float> PhantomDashBonus;

		internal static ConfigEntry<float> PhantomRamDamage;

		internal static ConfigEntry<float> PhantomRamSilence;

		internal static ConfigEntry<float> SeekerTurnRate;

		internal static ConfigEntry<float> SeekerCone;

		internal static ConfigEntry<float> SeekerRange;

		internal static ConfigEntry<float> SeekerSteerTime;

		internal static ConfigEntry<float> SeekerRechargeCut;

		internal static ConfigEntry<float> SeekerSilence;

		internal static ConfigEntry<float> CometDistance;

		internal static ConfigEntry<float> CometSpeed;

		internal static ConfigEntry<float> CometDamage;

		internal static ConfigEntry<float> CometLaunch;

		internal static ConfigEntry<float> CometChargeCut;

		internal static Rarity Rarity(Rarity normal)
		{
			return (Rarity)0;
		}

		private void Awake()
		{
			//IL_0913: Unknown result type (might be due to invalid IL or missing references)
			//IL_091d: Expected O, but got Unknown
			//IL_0c1e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c24: Expected O, but got Unknown
			Instance = this;
			Log = ((BaseUnityPlugin)this).Logger;
			BootsDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Gravity Boots", "Duration", 3f, "Seconds of flight after each block. (Gravity Boots is a FLIGHT slot card: one copy only.)");
			BootsHorizontalThrust = ((BaseUnityPlugin)this).Config.Bind<float>("Gravity Boots", "HorizontalThrust", 2.18f, "Extra sideways push per physics tick. Vanilla air movement is ~2.72, so 2.18 = +80% air speed; top speed is roughly (2.72 + this) / 0.16.");
			BootsUpThrust = ((BaseUnityPlugin)this).Config.Bind<float>("Gravity Boots", "UpThrust", 3.2f, "Upward push per physics tick. Top climb speed is roughly this / 0.16.");
			BootsDownThrust = ((BaseUnityPlugin)this).Config.Bind<float>("Gravity Boots", "DownThrust", 0f, "Extra downward push per tick (vanilla fast-fall already applies).");
			BootsBlockCooldownAdd = ((BaseUnityPlugin)this).Config.Bind<float>("Gravity Boots", "BlockCooldownAdd", 0.25f, "Seconds added to block cooldown by the card (its drawback).");
			BootsBulletGravity = ((BaseUnityPlugin)this).Config.Bind<float>("Gravity Boots", "BulletGravityMultiplier", 0.4f, "Gun effect: your bullets' gravity x this (0.4 = 60% less bullet drop, flatter and longer shots; 1 = off).");
			FistChargeTime = ((BaseUnityPlugin)this).Config.Bind<float>("Pulse Fist", "ChargeTime", 1f, "Seconds to reach full charge (faster with attack speed).");
			FistMinDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Pulse Fist", "TapDamageMultiplier", 0.5f, "Damage multiplier for an uncharged tap shot.");
			FistMaxDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Pulse Fist", "FullChargeDamageMultiplier", 2.75f, "Damage multiplier at full charge.");
			FistKnockback = ((BaseUnityPlugin)this).Config.Bind<float>("Pulse Fist", "KnockbackMultiplier", 1.25f, "Flat knockback multiplier from the card.");
			FistChargedKnockback = ((BaseUnityPlugin)this).Config.Bind<float>("Pulse Fist", "FullChargeKnockbackMultiplier", 1.75f, "Per-shot knockback multiplier at full charge (tap shots get 0.75x).");
			FistFlatSize = ((BaseUnityPlugin)this).Config.Bind<float>("Pulse Fist", "FlatBulletSize", 0.15f, "Bullet radius added at any charge (Big Bullet is ~0.25).");
			FistChargedSize = ((BaseUnityPlugin)this).Config.Bind<float>("Pulse Fist", "ChargedBulletSize", 0.45f, "Extra bullet radius added at full charge.");
			RazorDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "CutDamage", 60f, "Damage per straight razor cut (vanilla bullet = 55). Reaper Scythe and Twin Razors multiply it. Scales with your damage cards.");
			RazorReach = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "Reach", 3.4f, "Straight razor reach in world units from your centre (player is ~1.3 wide). Grows with your body size.");
			RazorArc = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "Arc", 140f, "Straight razor sweep: degrees of arc in front of you that each cut hits.");
			RazorCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "Cooldown", 0.2f, "Seconds between straight razor cuts at base attack speed (attack speed cards make it faster).");
			ScytheDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "ScytheDamageMultiplier", 1.8f, "Reaper Scythe: damage per sweep, x CutDamage.");
			ScytheReach = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "ScytheReach", 4.8f, "Reaper Scythe: reach in world units.");
			ScytheArc = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "ScytheArc", 190f, "Reaper Scythe: degrees of arc each sweep hits.");
			ScytheCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "ScytheCooldown", 0.42f, "Reaper Scythe: seconds between sweeps at base attack speed.");
			ScythePull = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "ScythePull", 1500f, "Reaper Scythe: impulse dragging each enemy hit toward you (and a little up).");
			TwinDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "TwinDamageMultiplier", 0.85f, "Twin Razors: damage per cut, x CutDamage.");
			TwinReach = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "TwinReach", 3.4f, "Twin Razors: reach in world units.");
			TwinArc = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "TwinArc", 120f, "Twin Razors: degrees of arc each cut hits.");
			TwinCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "TwinCooldown", 0.14f, "Twin Razors: seconds between cuts at base attack speed (the blades alternate).");
			RazorKnockback = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "Knockback", 1500f, "Push on each cut (the scythe pulls instead).");
			RazorChargeTime = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "JavelinChargeTime", 0.4f, "Seconds to hold fire before releasing throws the blade.");
			RazorThrowRecover = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "ThrowRecoverTime", 0.7f, "Seconds without a blade after a throw.");
			RazorJavelinDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "JavelinDamageMultiplier", 3.5f, "Thrown blade damage, x your normal bullet damage.");
			RazorJavelinSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "JavelinSpeedMultiplier", 2.3f, "Thrown blade speed, x a normal bullet.");
			RazorJavelinGravity = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "JavelinGravityMultiplier", 0.05f, "Thrown blade gravity and lift, x a normal bullet (0 = dead straight).");
			RazorDeflectCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "DeflectCooldown", 0.75f, "Minimum seconds between parry shots fired back while blocking.");
			RazorDeflectDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "DeflectDamage", 0.6f, "Damage multiplier of the parry shot fired back when you block a bullet (1 = a normal shot).");
			RazorBladeGuard = ((BaseUnityPlugin)this).Config.Bind<bool>("Razor", "BladeGuard", true, "A swing guards for BladeGuardTime, at most once per BladeGuardCooldown: enemy bullets that reach the blade (inside its reach) or your body from inside BladeGuardCone of the swing are stopped. Razor and Reaper Scythe cut them out of the air; Twin Razors deflect them. Decided on the shooter's client, like a vanilla block, so it works online.");
			RazorGuardTime = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "BladeGuardTime", 0.15f, "Seconds each swing's blade guard lasts.");
			RazorGuardCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "BladeGuardCooldown", 0.6f, "Minimum seconds between blade guards: swings inside this window cut enemies but don't guard, so parrying is timed instead of always on.");
			RazorGuardCone = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "BladeGuardCone", 50f, "Degrees either side of the swing direction the blade guard covers.");
			TwinDeflects = ((BaseUnityPlugin)this).Config.Bind<bool>("Razor", "TwinRazorsDeflect", true, "Twin Razors send guarded bullets back along your aim at full speed (they become yours and can hit their shooter) instead of just cutting them.");
			RazorLungeDistance = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "LungeDistance", 3f, "Twin Razors: every cut dashes you this far toward your aim, on the ground or in the air (world units; the player is ~1.3 wide).");
			RazorLungeSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "LungeSpeed", 45f, "Twin Razors: dash speed in units/second.");
			RazorLungeDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Razor", "LungeContactDamage", 0.5f, "Twin Razors: the dash itself cuts each enemy it passes through once, for this x CutDamage (0 = off).");
			RazorAirUpLunges = ((BaseUnityPlugin)this).Config.Bind<int>("Razor", "MaxAirUpwardLunges", 5, "Twin Razors: how many cuts per airtime may dash you upward (then they dash sideways only until you land or grab a wall), so a flurry can't fly forever.");
			RazorCutPlatforms = ((BaseUnityPlugin)this).Config.Bind<bool>("Razor", "CutThinPlatforms", true, "Javelin throws (any form) slice a gap through thin platforms (up to 1.3 units thick) and keep flying; thick walls still stop them. Reaper Scythe sweeps cut thin platforms their arc overlaps (at most 2 cuts per swing). The thrower's setting decides.");
			CloakDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Ghost Cloak", "Duration", 2.2f, "Seconds invisible after blocking. Firing reveals you early.");
			CloakExtraDurationPerCopy = ((BaseUnityPlugin)this).Config.Bind<float>("Ghost Cloak", "ExtraDurationPerCopy", 0.5f, "Extra seconds per additional copy.");
			CloakMaxDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Ghost Cloak", "MaxDuration", 4f, "Cap on the cloak length from copies, Howler Ambush and Phantom Drill together (points last 5-15s).");
			CloakBlockCooldownAdd = ((BaseUnityPlugin)this).Config.Bind<float>("Ghost Cloak", "BlockCooldownAdd", 0.5f, "Seconds added to block cooldown (drawback).");
			CloakMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Ghost Cloak", "MoveSpeedWhileCloaked", 1.2f, "Movement speed multiplier while the cloak lasts (1.2 = +20%).");
			DiveDistance = ((BaseUnityPlugin)this).Config.Bind<float>("Helldiver", "DashDistance", 8.5f, "Dash length in world units (player is ~1.3 wide). Extra copies add 25% each (counted up to 4 copies).");
			DiveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Helldiver", "DashSpeed", 60f, "Dash speed in units/second.");
			DiveKnockback = ((BaseUnityPlugin)this).Config.Bind<float>("Helldiver", "RamKnockback", 3500f, "Impulse on enemies you drill into (no damage).");
			DiveSilence = ((BaseUnityPlugin)this).Config.Bind<float>("Helldiver", "RamSilence", 0.6f, "Seconds an enemy you drill into can't shoot or block.");
			DiveBlockCooldownAdd = ((BaseUnityPlugin)this).Config.Bind<float>("Helldiver", "BlockCooldownAdd", 0.75f, "Seconds added to block cooldown (drawback; every copy adds it).");
			DiveCarveTunnels = ((BaseUnityPlugin)this).Config.Bind<bool>("Helldiver", "CarveTunnels", true, "The dash drills a real tunnel through the walls and platforms it passes (carved the same way on every client; the dasher's setting decides).");
			DiveTunnelPadding = ((BaseUnityPlugin)this).Config.Bind<float>("Helldiver", "TunnelRadiusPadding", 0.35f, "Tunnel radius = your body radius + this (world units).");
			DiveDrillRoundWindow = ((BaseUnityPlugin)this).Config.Bind<float>("Helldiver", "DrillRoundWindow", 2.5f, "Gun effect: after a drill dash ends, your next shot (the whole volley) within this many seconds is a drill round that flies through walls and platforms. 0 = off.");
			SoundVolume = ((BaseUnityPlugin)this).Config.Bind<float>("Sound", "Volume", 1f, "Volume of this mod's own sounds (Razor parry, Storm Knight thunder), on top of the game's SFX slider.");
			ParasiteLineLength = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite", "AimLineLength", 28f, "Length of the aim line in world units (player is ~1.3 wide). Extra copies add 25%.");
			ParasiteTurnRate = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite", "HomingTurnRate", 125f, "Degrees per second a bullet can turn toward an enemy. Extra copies add 60% (capped at 200).");
			ParasiteCone = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite", "HomingCone", 30f, "Only visible enemies within this many degrees either side of a bullet's path pull it. Extra copies add 10 (capped at 36). Homing stops 1.5s after the shot.");
			ParasiteRange = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite", "HomingRange", 24f, "Only enemies this close to a bullet pull it.");
			ParasiteDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite", "DamageMultiplier", 0.95f, "Bullet damage multiplier (the drawback).");
			ParasiteAimLineMode = ((BaseUnityPlugin)this).Config.Bind<string>("Parasite", "AimLineMode", "WhileShooting", new ConfigDescription("When your aim line shows. WhileShooting: while you hold fire and for 0.6s after each of your shots. Always: all the time. (With Razor it only shows while lining up a throw.)", (AcceptableValueBase)(object)new AcceptableValueList<string>(new string[2] { "WhileShooting", "Always" }), Array.Empty<object>()));
			StormBoltDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Storm Knight", "BoltDamage", 35f, "Damage of the lightning bolt that strikes an enemy your bullet hit.");
			StormArcDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Storm Knight", "ArcDamage", 18f, "Damage of each arc that jumps from the struck enemy to a nearby other enemy.");
			StormArcTargets = ((BaseUnityPlugin)this).Config.Bind<int>("Storm Knight", "ArcTargets", 2, "How many other enemies (nearest first, within ArcRange) the bolt arcs to.");
			StormArcRange = ((BaseUnityPlugin)this).Config.Bind<float>("Storm Knight", "ArcRange", 6f, "How far (world units) the arc can jump. The player is ~1.3 units wide.");
			StormDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Storm Knight", "StrikeDelay", 0.35f, "Seconds between your bullet hitting and the bolt landing.");
			StormTargetCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Storm Knight", "TargetCooldown", 0.8f, "Minimum seconds between bolts on the same enemy.");
			StormExtraCopyBonus = ((BaseUnityPlugin)this).Config.Bind<float>("Storm Knight", "ExtraCopyDamageBonus", 0.4f, "Each extra copy multiplies bolt and arc damage by this much more (0.4 = +40%; counted up to 3 copies).");
			RageMaxBonus = ((BaseUnityPlugin)this).Config.Bind<float>("Rage Knight", "MaxDamageBonus", 1f, "Extra bullet damage at (or below) FullRageHealth. 1 = +100%. It rises linearly from +0% at full health.");
			RageFullAtHealth = ((BaseUnityPlugin)this).Config.Bind<float>("Rage Knight", "FullRageHealth", 0.1f, "Health fraction at which the bonus is maxed out (0.1 = 10% health).");
			RageMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Rage Knight", "MoveSpeedMultiplier", 1.1f, "Movement speed multiplier from the card (every copy applies it).");
			RageExtraCopyBonus = ((BaseUnityPlugin)this).Config.Bind<float>("Rage Knight", "ExtraCopyMaxBonus", 0.5f, "Each extra copy raises MaxDamageBonus by this much (0.5 = +50%; counted up to 3 copies).");
			CarvedHealth = ((BaseUnityPlugin)this).Config.Bind<float>("Carved", "HealthMultiplier", 1.7f, "Max health multiplier.");
			CarvedDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Carved", "DamageMultiplier", 1.35f, "Bullet damage multiplier.");
			CarvedSize = ((BaseUnityPlugin)this).Config.Bind<float>("Carved", "SizeMultiplier", 1.1f, "Body size multiplier (extra health already grows you a little).");
			CarvedMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Carved", "MoveSpeedMultiplier", 0.9f, "Movement speed multiplier.");
			PeerlessMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Peerless Scarred", "FirstHitDamageMultiplier", 2.5f, "Damage multiplier for the empowered hit: your next hit while the gold star shows (it recharges RechargeSeconds after landing).");
			PeerlessRecharge = ((BaseUnityPlugin)this).Config.Bind<float>("Peerless Scarred", "RechargeSeconds", 3f, "Seconds after the empowered hit lands before it is ready again (0 = once per point).");
			PeerlessExtraCopyMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Peerless Scarred", "ExtraCopyMultiplier", 0.5f, "Each extra copy adds this to the empowered hit multiplier (counted up to 4 copies).");
			PeerlessExtraCopyRechargeCut = ((BaseUnityPlugin)this).Config.Bind<float>("Peerless Scarred", "ExtraCopyRechargeCut", 0.5f, "Each extra copy takes this many seconds off the recharge (never below 1.5s; counted up to 4 copies).");
			BindUnlockConfig();
			BindSecondWaveConfig();
			BindComboConfig();
			BooksConfig.Bind(((BaseUnityPlugin)this).Config);
			ResetConfigIfOutdated();
			RazorEffect.ApplyConfig();
			((BaseUnityPlugin)this).Logger.LogWarning((object)"TEST BUILD: every Red Rising card is Common.");
			MapKit.Init((BaseUnityPlugin)(object)this, ((BaseUnityPlugin)this).Config, ((BaseUnityPlugin)this).Logger, "RedRisingCards");
			Harmony val = new Harmony("com.lel.rounds.redrisingcards");
			val.PatchAll();
			LogPatchStatus(val);
			if (MapKit.MapsEnabled.Value && Chainloader.PluginInfos.ContainsKey("io.olavim.rounds.mapsextended"))
			{
				WriteMaps();
			}
		}

		private void BindUnlockConfig()
		{
			IronRainSlamSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "SlamSpeed", 60f, "Block in midair while holding down: you dive straight down at this speed (units/second) until you land.");
			IronRainSteer = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "SteerSpeed", 8f, "Sideways speed you can steer with during the dive.");
			IronRainRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "ShockwaveRadius", 5.5f, "Landing shockwave radius in world units (the player is ~1.3 wide).");
			IronRainDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "ShockwaveDamage", 50f, "Damage the landing shockwave deals to each enemy in range (a blocking enemy takes none).");
			IronRainLaunch = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "LaunchSpeed", 38f, "Speed the shockwave throws enemies up and away at (less at the edge of the radius).");
			IronRainCrater = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "CraterRadius", 1.4f, "Radius of the crater the landing punches into the ground (0 = no crater). Carved the same way on every client; the slammer's setting decides.");
			IronRainMaxTime = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "MaxDiveTime", 2f, "Seconds a dive may last before it gives up without a shockwave (falling off the map).");
			IronRainExtraDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "ExtraCopyDamageBonus", 0.25f, "Each extra copy: shockwave damage +this fraction (counted up to 3 copies).");
			IronRainExtraRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Iron Rain", "ExtraCopyRadiusBonus", 0.1f, "Each extra copy: shockwave radius +this fraction (counted up to 3 copies).");
			IronRainReloads = ((BaseUnityPlugin)this).Config.Bind<bool>("Iron Rain", "LandingReloads", true, "Gun effect: the landing shockwave instantly refills your ammo.");
			OverchargeRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Overcharge", "BlastRadius", 4f, "Full-charge Pulse Fist punches detonate on impact: blast radius in world units.");
			OverchargeDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Overcharge", "BlastDamage", 45f, "Blast damage to every enemy in range, on top of the punch itself.");
			OverchargeLaunch = ((BaseUnityPlugin)this).Config.Bind<float>("Overcharge", "BlastLaunchSpeed", 30f, "Speed the blast throws enemies away at (less at the edge).");
			OverchargeChargeFaster = ((BaseUnityPlugin)this).Config.Bind<float>("Overcharge", "ChargeTimeReduction", 0.3f, "Pulse Fist charges this much faster (0.3 = 30% less charge time).");
			OverchargeExtraDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Overcharge", "ExtraCopyBlastDamage", 15f, "Each extra copy adds this much blast damage (counted up to 3 copies).");
			AmbushDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Howler Ambush", "AmbushDamageMultiplier", 2.2f, "Damage multiplier for shots fired (or Razor cuts made) out of the Ghost Cloak.");
			AmbushSilence = ((BaseUnityPlugin)this).Config.Bind<float>("Howler Ambush", "AmbushSilence", 1f, "Seconds an enemy hit by an ambush can't shoot or block.");
			AmbushExtraCloak = ((BaseUnityPlugin)this).Config.Bind<float>("Howler Ambush", "ExtraCloakTime", 0.6f, "Extra seconds of Ghost Cloak invisibility (once, not per copy).");
			AmbushExtraMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Howler Ambush", "ExtraCopyMultiplier", 0.4f, "Each extra copy adds this to the ambush damage multiplier (counted up to 3 copies).");
			AmbushExtraSilence = ((BaseUnityPlugin)this).Config.Bind<float>("Howler Ambush", "ExtraCopySilence", 0.25f, "Each extra copy adds this many seconds of ambush silence (counted up to 3 copies).");
			ClawdrillRamDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Clawdrill", "RamDamage", 55f, "Damage your Helldiver drill now deals to each enemy it rams (the knockback and silence stay).");
			ClawdrillDistanceBonus = ((BaseUnityPlugin)this).Config.Bind<float>("Clawdrill", "DashLengthBonus", 0.35f, "Helldiver dash length bonus (0.35 = +35%).");
			ClawdrillBlockCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Clawdrill", "BlockCooldownReduction", 0.5f, "Seconds taken off your block cooldown (offsets Helldiver's penalty; every copy applies it).");
			ClawdrillExtraRamDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Clawdrill", "ExtraCopyRamDamage", 25f, "Each extra copy adds this much ram damage (counted up to 3 copies).");
			BroodDrainPerSecond = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite Brood", "DrainPerSecond", 12f, "Bullet hits infest the enemy: they lose this much health per second (dealt in half-second ticks, none while they block).");
			BroodDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite Brood", "InfestSeconds", 3f, "How long an infestation lasts; another hit refreshes it.");
			BroodHealFraction = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite Brood", "HealFraction", 1f, "You heal this fraction of the drained health (1 = all of it).");
			BroodExtraDrain = ((BaseUnityPlugin)this).Config.Bind<float>("Parasite Brood", "ExtraCopyDrain", 6f, "Each extra copy adds this much drain per second (counted up to 3 copies).");
			ArmorHealth = ((BaseUnityPlugin)this).Config.Bind<float>("Aureate Armor", "HealthMultiplier", 1.3f, "Max health multiplier.");
			ArmorInvulnerableTime = ((BaseUnityPlugin)this).Config.Bind<float>("Aureate Armor", "InvulnerableSeconds", 1.5f, "Once per point, a killing blow leaves you at 1 health and you take no damage for this long.");
			ArmorHealFraction = ((BaseUnityPlugin)this).Config.Bind<float>("Aureate Armor", "HealFraction", 0.4f, "Fraction of your max health restored when the armor saves you.");
			ObsidianHealth = ((BaseUnityPlugin)this).Config.Bind<float>("Obsidian Frame", "HealthMultiplier", 1.6f, "Max health multiplier.");
			ObsidianRegen = ((BaseUnityPlugin)this).Config.Bind<float>("Obsidian Frame", "Regeneration", 10f, "Health regenerated per second, per copy (counted up to 3 copies; health and damage stack like any stat card).");
			ObsidianDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Obsidian Frame", "DamageMultiplier", 1.2f, "Bullet damage multiplier.");
			WillowDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Willow Way", "SpinDamageMultiplier", 1.25f, "Block: a spinning cut all around you. Damage x your current Razor form's cut damage.");
			WillowReach = ((BaseUnityPlugin)this).Config.Bind<float>("Willow Way", "SpinReachMultiplier", 1.15f, "Spin reach x your current Razor form's reach.");
			WillowGuardTime = ((BaseUnityPlugin)this).Config.Bind<float>("Willow Way", "BulletGuardSeconds", 0.4f, "The spin cuts enemy bullets from every side for this long (needs Razor BladeGuard on).");
			TempestDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Tempest", "BoltDamage", 55f, "Block: lightning strikes the nearest enemies for this much (Storm Knight arcs still jump from them).");
			TempestTargets = ((BaseUnityPlugin)this).Config.Bind<int>("Tempest", "Targets", 2, "How many enemies (nearest first) each block strikes.");
			TempestRange = ((BaseUnityPlugin)this).Config.Bind<float>("Tempest", "Range", 18f, "Only enemies this close (world units) can be struck. Invisible enemies can't be targeted.");
			TempestExtraDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Tempest", "ExtraCopyDamage", 20f, "Each extra copy adds this much bolt damage (counted up to 3 copies).");
			TempestBulletSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Tempest", "BulletSpeedMultiplier", 1.2f, "Gun effect: bullet speed x this per copy (a normal stat: 1.2 = +20%, every copy applies it again).");
			FuryDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Blood Fury", "Duration", 3f, "Block: seconds of blood fury (your Rage Knight bonus counts as maxed out).");
			FuryCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Blood Fury", "Cooldown", 5f, "Seconds from one fury starting until a block can start the next.");
			FuryMoveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Blood Fury", "MoveSpeedMultiplier", 1.3f, "Movement speed multiplier while the fury lasts.");
			FuryExtraDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Blood Fury", "ExtraCopyDuration", 0.5f, "Each extra copy adds this many seconds of fury (counted up to 3 copies).");
			FuryExtraCooldownCut = ((BaseUnityPlugin)this).Config.Bind<float>("Blood Fury", "ExtraCopyCooldownCut", 0.5f, "Each extra copy takes this many seconds off the cooldown (counted up to 3 copies).");
			FuryFireRate = ((BaseUnityPlugin)this).Config.Bind<float>("Blood Fury", "FireRateMultiplier", 1.4f, "Gun effect: you fire this much faster while the fury lasts (1.4 = +40% fire rate; Razor cuts speed up too). 1 = off.");
		}

		private void BindSecondWaveConfig()
		{
			PlanetfallSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Planetfall", "DiveSpeedMultiplier", 1.35f, "Iron Rain dive speed multiplier (the meteor falls faster).");
			PlanetfallRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Planetfall", "ImpactRadiusMultiplier", 1.4f, "Iron Rain shockwave radius multiplier (the crater grows the same; launch grows with its square root).");
			PlanetfallDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Planetfall", "ImpactDamageMultiplier", 1.6f, "Iron Rain shockwave damage multiplier.");
			PlanetfallPoolRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Planetfall", "MoltenRadius", 3.5f, "Half-width of the molten pool the impact leaves (world units; the player is ~1.3 wide). 0 = no pool.");
			PlanetfallPoolSeconds = ((BaseUnityPlugin)this).Config.Bind<float>("Planetfall", "MoltenSeconds", 3f, "How long the molten pool burns.");
			PlanetfallPoolDps = ((BaseUnityPlugin)this).Config.Bind<float>("Planetfall", "MoltenDamagePerSecond", 30f, "Damage per second to enemies standing in the pool (dealt in quarter-second ticks; blocking skips a tick).");
			ThunderheadDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Thunderhead", "BoltDamage", 35f, "Damage of each bolt the storm cloud over your head strikes.");
			ThunderheadInterval = ((BaseUnityPlugin)this).Config.Bind<float>("Thunderhead", "Interval", 1.4f, "Seconds for the cloud to charge a bolt. With nobody in range it holds the charge and strikes the next enemy who comes close.");
			ThunderheadRange = ((BaseUnityPlugin)this).Config.Bind<float>("Thunderhead", "Range", 10f, "Only enemies this close (world units) are struck. Invisible enemies can't be targeted.");
			ThunderheadExtraIntervalCut = ((BaseUnityPlugin)this).Config.Bind<float>("Thunderhead", "ExtraCopyIntervalCut", 0.3f, "Each extra copy takes this many seconds off the interval (counted up to 3 copies; never below 0.5s).");
			ReapThreshold = ((BaseUnityPlugin)this).Config.Bind<float>("Reaping Stroke", "HealthThreshold", 0.4f, "Razor cuts (and Willow Way spins) on an enemy at or below this fraction of their max health are reaping strokes.");
			ReapDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Reaping Stroke", "DamageMultiplier", 2f, "Damage multiplier of a reaping stroke (on top of every other Razor multiplier).");
			ReapBlockRefund = ((BaseUnityPlugin)this).Config.Bind<float>("Reaping Stroke", "BlockCooldownRefund", 1.5f, "Seconds taken off your block cooldown by each reaping stroke.");
			PlateHealth = ((BaseUnityPlugin)this).Config.Bind<float>("Imperator Plate", "HealthMultiplier", 1.2f, "Max health multiplier.");
			PlateRecharge = ((BaseUnityPlugin)this).Config.Bind<float>("Imperator Plate", "RechargeSeconds", 6f, "Seconds after an Aureate Armor save until the save is ready again (without this card it is once per point).");
			PlateNovaDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Imperator Plate", "NovaDamage", 50f, "Damage of the golden nova every save releases (less toward the edge).");
			PlateNovaRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Imperator Plate", "NovaRadius", 6f, "Radius of the nova (world units).");
			PlateNovaLaunch = ((BaseUnityPlugin)this).Config.Bind<float>("Imperator Plate", "NovaLaunchSpeed", 34f, "Speed the nova throws enemies away at (less toward the edge).");
			RipwingSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Ripwing", "FlightThrustMultiplier", 1.4f, "Gravity Boots flight thrust multiplier.");
			RipwingExtraFlight = ((BaseUnityPlugin)this).Config.Bind<float>("Ripwing", "ExtraFlightSeconds", 1f, "Extra seconds of Gravity Boots flight.");
			RipwingRamDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Ripwing", "RamDamage", 40f, "Damage to each enemy you fly into (a blocking enemy takes none).");
			RipwingRamLaunch = ((BaseUnityPlugin)this).Config.Bind<float>("Ripwing", "RamLaunchSpeed", 30f, "Speed a ram throws the enemy at, along your flight.");
			RipwingMinSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Ripwing", "MinRamSpeed", 5f, "You only ram while flying at least this fast (units/second).");
			RipwingRamCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Ripwing", "RamCooldown", 0.7f, "Seconds before the same enemy can be rammed again.");
		}

		private void BindComboConfig()
		{
			WrathRageScale = ((BaseUnityPlugin)this).Config.Bind<float>("Wrathbolt", "RageScale", 1.25f, "Storm Knight (and Tempest) bolts and arcs deal x(1 + this x your current Rage Knight bonus). At full rage (+100%) and 1.25 that is x2.25.");
			WrathStrikeDelay = ((BaseUnityPlugin)this).Config.Bind<float>("Wrathbolt", "StrikeDelay", 0.12f, "Seconds between your bullet hitting and the bolt landing (Storm Knight alone: StrikeDelay).");
			WrathTargetCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Wrathbolt", "TargetCooldown", 0.5f, "Minimum seconds between bolts on the same enemy (Storm Knight alone: TargetCooldown).");
			WrathLifesteal = ((BaseUnityPlugin)this).Config.Bind<float>("Wrathbolt", "Lifesteal", 0.25f, "You heal this fraction of the bolt and arc damage you deal (a blocking enemy gives nothing).");
			PhantomExtraCloak = ((BaseUnityPlugin)this).Config.Bind<float>("Phantom Drill", "ExtraCloakSeconds", 1f, "Block: one merged action, cloak then an unseen drill dash. The cloak lasts this much longer (still capped by Ghost Cloak MaxDuration).");
			PhantomDashBonus = ((BaseUnityPlugin)this).Config.Bind<float>("Phantom Drill", "DashLengthBonus", 0.3f, "Helldiver dash length bonus for the phantom dash (0.3 = +30%).");
			PhantomRamDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Phantom Drill", "RamDamage", 45f, "Damage of a ram made while still cloaked (added to Clawdrill's).");
			PhantomRamSilence = ((BaseUnityPlugin)this).Config.Bind<float>("Phantom Drill", "RamSilence", 1.2f, "Seconds a ram made while cloaked silences (instead of Helldiver RamSilence).");
			SeekerTurnRate = ((BaseUnityPlugin)this).Config.Bind<float>("Gilded Seeker", "SeekerTurnRate", 420f, "While your Peerless star is ready, your shots hunt: homing degrees per second (Parasite alone caps at 200).");
			SeekerCone = ((BaseUnityPlugin)this).Config.Bind<float>("Gilded Seeker", "SeekerCone", 70f, "Seeker shots lock on to visible enemies within this many degrees either side of their path.");
			SeekerRange = ((BaseUnityPlugin)this).Config.Bind<float>("Gilded Seeker", "SeekerRange", 32f, "Seeker shots only steer toward enemies this close.");
			SeekerSteerTime = ((BaseUnityPlugin)this).Config.Bind<float>("Gilded Seeker", "SeekerSteerTime", 2.5f, "Seconds after the shot a seeker keeps steering (Parasite alone: 1.5).");
			SeekerRechargeCut = ((BaseUnityPlugin)this).Config.Bind<float>("Gilded Seeker", "RechargeReduction", 0.4f, "Peerless Scarred recharges this much faster (0.4 = 40% less time).");
			SeekerSilence = ((BaseUnityPlugin)this).Config.Bind<float>("Gilded Seeker", "EmpoweredSilence", 0.5f, "Seconds the empowered (Peerless) hit silences the enemy.");
			CometDistance = ((BaseUnityPlugin)this).Config.Bind<float>("Comet Gauntlet", "DashDistance", 7f, "While flying with Gravity Boots, a full-charge Pulse Fist punch hurls you this far after it (world units).");
			CometSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Comet Gauntlet", "DashSpeed", 55f, "Comet dash speed (units/second).");
			CometDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Comet Gauntlet", "CometDamage", 40f, "Damage to every enemy the comet passes through (once each per dash; a blocking enemy takes none).");
			CometLaunch = ((BaseUnityPlugin)this).Config.Bind<float>("Comet Gauntlet", "CometLaunchSpeed", 32f, "Speed the comet throws the enemies it hits at, along the dash.");
			CometChargeCut = ((BaseUnityPlugin)this).Config.Bind<float>("Comet Gauntlet", "FlyingChargeReduction", 0.4f, "Pulse Fist charges this much faster while you fly (0.4 = 40% less charge time).");
		}

		private void LogPatchStatus(Harmony harmony)
		{
			try
			{
				string[] array = new string[3] { "PlayerVelocity.FixedUpdate (Twin Razors lunge)", "ProjectileHit.Hit (blade guard on hits)", "RayCastTrail.Update (blade guard in reach, javelin cuts)" };
				MethodInfo[] array2 = new MethodInfo[3]
				{
					AccessTools.Method(typeof(PlayerVelocity), "FixedUpdate", (Type[])null, (Type[])null),
					AccessTools.Method(typeof(ProjectileHit), "Hit", new Type[2]
					{
						typeof(HitInfo),
						typeof(bool)
					}, (Type[])null),
					AccessTools.Method(typeof(RayCastTrail), "Update", (Type[])null, (Type[])null)
				};
				List<string> list = new List<string>();
				for (int i = 0; i < array.Length; i++)
				{
					string text = array[i];
					MethodInfo methodInfo = array2[i];
					bool flag = false;
					if (methodInfo != null)
					{
						Patches patchInfo = Harmony.GetPatchInfo((MethodBase)methodInfo);
						if (patchInfo != null)
						{
							foreach (Patch prefix in patchInfo.Prefixes)
							{
								if (prefix.owner == harmony.Id)
								{
									flag = true;
								}
							}
						}
					}
					list.Add(text + (flag ? " OK" : " MISSING"));
				}
				((BaseUnityPlugin)this).Logger.LogInfo((object)("Razor patches: " + string.Join(", ", list)));
			}
			catch (Exception ex)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)("Couldn't check Razor patches: " + ex.Message));
			}
		}

		private void ResetConfigIfOutdated()
		{
			ConfigEntry<int> val = ((BaseUnityPlugin)this).Config.Bind<int>("Meta", "ConfigVersion", 0, "Internal. Lets updates reset tuned defaults.");
			if (val.Value >= 11)
			{
				return;
			}
			if (val.Value < 10)
			{
				foreach (ConfigDefinition item in new List<ConfigDefinition>(((BaseUnityPlugin)this).Config.Keys))
				{
					if (item.Section != "Meta")
					{
						((BaseUnityPlugin)this).Config[item].BoxedValue = ((BaseUnityPlugin)this).Config[item].DefaultValue;
					}
				}
				((BaseUnityPlugin)this).Logger.LogInfo((object)string.Format("Config reset to the {0} defaults (config version {1}).", "1.14.0", 11));
			}
			else
			{
				if (val.Value < 11 && Mathf.Approximately(BooksConfig.BerserkHealth.Value, 0.5f))
				{
					BooksConfig.BerserkHealth.Value = 1f;
				}
				((BaseUnityPlugin)this).Logger.LogInfo((object)$"Config moved to version {11} (only changed defaults still at their old value).");
			}
			val.Value = 11;
			((BaseUnityPlugin)this).Config.Save();
		}

		[MethodImpl(MethodImplOptions.NoInlining)]
		private void WriteMaps()
		{
			try
			{
				string text = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location) ?? Paths.PluginPath;
				if (!Path.GetFileName(text).Contains("-"))
				{
					text = Path.Combine(Paths.PluginPath, "lel-RedRisingCards");
				}
				SkyCitadelMap.Write(text);
			}
			catch (Exception ex)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)("Couldn't write the Sky Citadel map: " + ex));
			}
		}

		private void Start()
		{
			CustomCard.BuildCard<GravityBootsCard>((Action<CardInfo>)delegate(CardInfo card)
			{
				GravityBootsCard.Card = card;
			});
			CustomCard.BuildCard<PulseFistCard>((Action<CardInfo>)delegate(CardInfo card)
			{
				PulseFistCard.Card = card;
			});
			CustomCard.BuildCard<RazorCard>();
			CustomCard.BuildCard<ReaperScytheCard>();
			CustomCard.BuildCard<TwinRazorsCard>();
			CustomCard.BuildCard<GhostCloakCard>();
			CustomCard.BuildCard<HelldiverCard>();
			CustomCard.BuildCard<ParasiteCard>();
			CustomCard.BuildCard<CarvedCard>();
			CustomCard.BuildCard<PeerlessScarredCard>();
			CustomCard.BuildCard<StormKnightCard>();
			CustomCard.BuildCard<RageKnightCard>();
			CustomCard.BuildCard<IronRainCard>();
			CustomCard.BuildCard<OverchargeCard>();
			CustomCard.BuildCard<HowlerAmbushCard>();
			CustomCard.BuildCard<ClawdrillCard>();
			CustomCard.BuildCard<ParasiteBroodCard>();
			CustomCard.BuildCard<AureateArmorCard>();
			CustomCard.BuildCard<ObsidianFrameCard>();
			CustomCard.BuildCard<WillowWayCard>();
			CustomCard.BuildCard<TempestCard>();
			CustomCard.BuildCard<BloodFuryCard>();
			CustomCard.BuildCard<PlanetfallCard>();
			CustomCard.BuildCard<ThunderheadCard>();
			CustomCard.BuildCard<ReapingStrokeCard>();
			CustomCard.BuildCard<ImperatorPlateCard>();
			CustomCard.BuildCard<RipwingCard>();
			CustomCard.BuildCard<WrathboltCard>();
			CustomCard.BuildCard<PhantomDrillCard>();
			CustomCard.BuildCard<GildedSeekerCard>();
			CustomCard.BuildCard<CometGauntletCard>();
			BooksCards.Register();
			GameModeManager.AddHook("BattleStart", (Func<IGameModeHandler, IEnumerator>)OnBattleStart);
			MapKit.Start();
		}

		private static IEnumerator OnBattleStart(IGameModeHandler gm)
		{
			PeerlessScarredEffect.RearmAll();
			AureateArmorEffect.RearmAll();
			BloodFuryEffect.ResetAll();
			MoltenPool.ClearAll();
			ThunderheadEffect.ResetAll();
			CometGauntletEffect.ResetAll();
			DrillRound.ClearAll();
			yield break;
		}
	}
}
namespace RedRisingCards.Util
{
	internal static class ArtSpec
	{
		internal enum MotionType
		{
			Bob,
			Sway,
			Pulse,
			Flicker,
			Fade,
			Loopmove,
			Expand,
			Spin,
			Shake,
			Strike,
			Burst,
			Blink,
			Jab,
			Hit,
			Swing
		}

		internal struct Motion
		{
			public MotionType Type;

			public float P;

			public float A;

			public float B;

			public float Ph;

			public float X0;

			public float Y0;

			public float X1;

			public float Y1;
		}

		internal struct Layer
		{
			public string Name;

			public float X;

			public float Y;

			public float W;

			public float H;

			public float Px;

			public float Py;

			public Motion[] Motions;
		}

		internal static readonly Dictionary<string, Layer[]> Cards = new Dictionary<string, Layer[]>
		{
			["gravity_boots"] = new Layer[6]
			{
				new Layer
				{
					Name = "speed",
					X = 251.67f,
					Y = 196.67f,
					W = 156.67f,
					H = 206.67f,
					Px = 330f,
					Py = 300f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 0.9f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 40f,
							Y0 = 0f,
							X1 = -60f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "chevron_a",
					X = 801.67f,
					Y = 140f,
					W = 136.67f,
					H = 108.33f,
					Px = 870f,
					Py = 194.1667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 1.2f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = -30f,
							X1 = 0f,
							Y1 = 50f
						}
					}
				},
				new Layer
				{
					Name = "chevron_b",
					X = 805f,
					Y = 193.33f,
					W = 130f,
					H = 101.67f,
					Px = 870f,
					Py = 244.1667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 1.2f,
							A = 0f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0f,
							Y0 = -30f,
							X1 = 0f,
							Y1 = 50f
						}
					}
				},
				new Layer
				{
					Name = "flame_l",
					X = 461.67f,
					Y = 540f,
					W = 136.67f,
					H = 265f,
					Px = 530f,
					Py = 575f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 1.6f,
							A = 10f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.35f,
							A = 0.18f,
							B = 0.25f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "flame_r",
					X = 651.67f,
					Y = 540f,
					W = 136.67f,
					H = 235f,
					Px = 720f,
					Py = 575f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 1.6f,
							A = 10f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.3f,
							A = 0.2f,
							B = 0.25f,
							Ph = 0.4f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "boot",
					X = 401.67f,
					Y = 95f,
					W = 446.67f,
					H = 513.33f,
					Px = 625f,
					Py = 520f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 1.6f,
							A = 10f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["pulse_fist"] = new Layer[6]
			{
				new Layer
				{
					Name = "ring_a",
					X = 763.33f,
					Y = 285f,
					W = 118.33f,
					H = 230f,
					Px = 745f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Expand,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0.05f,
							X0 = 0.7f,
							Y0 = 0f,
							X1 = 2.5f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "ring_b",
					X = 763.33f,
					Y = 285f,
					W = 118.33f,
					H = 230f,
					Px = 745f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Expand,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0.38f,
							X0 = 0.7f,
							Y0 = 0f,
							X1 = 2.5f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "ring_c",
					X = 763.33f,
					Y = 285f,
					W = 118.33f,
					H = 230f,
					Px = 745f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Expand,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0.71f,
							X0 = 0.7f,
							Y0 = 0f,
							X1 = 2.5f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "fist",
					X = 215f,
					Y = 246.67f,
					W = 555f,
					H = 300f,
					Px = 492.5f,
					Py = 396.6667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Jab,
							P = 1.8f,
							A = 22f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "core",
					X = 678.33f,
					Y = 326.67f,
					W = 148.33f,
					H = 146.67f,
					Px = 752f,
					Py = 400f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Jab,
							P = 1.8f,
							A = 22f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.6f,
							A = 0.18f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "sparks",
					X = 763.33f,
					Y = 295f,
					W = 153.33f,
					H = 206.67f,
					Px = 840f,
					Py = 398.3333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.45f,
							A = 0.8f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["razor"] = new Layer[4]
			{
				new Layer
				{
					Name = "arc_a",
					X = 200f,
					Y = 181.67f,
					W = 793.33f,
					H = 461.67f,
					Px = 380f,
					Py = 614f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 2f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.92f,
							Y0 = 0f,
							X1 = 1.06f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "arc_b",
					X = 273.33f,
					Y = 223.33f,
					W = 631.67f,
					H = 371.67f,
					Px = 380f,
					Py = 614f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 2f,
							A = 0f,
							B = 0f,
							Ph = -0.03f,
							X0 = 0.9f,
							Y0 = 0f,
							X1 = 1.04f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "blade",
					X = 261.67f,
					Y = 131.67f,
					W = 736.67f,
					H = 631.67f,
					Px = 380f,
					Py = 614f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 2f,
							A = -20f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Bob,
							P = 3f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glint",
					X = 908.33f,
					Y = 258.33f,
					W = 120f,
					H = 120f,
					Px = 380f,
					Py = 614f,
					Motions = new Motion[3]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 2f,
							A = -20f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Bob,
							P = 3f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.7f,
							A = 0.8f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["ghost_cloak"] = new Layer[3]
			{
				new Layer
				{
					Name = "dust",
					X = 250f,
					Y = 183.33f,
					W = 258.33f,
					H = 510f,
					Px = 379.1667f,
					Py = 438.3333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 3f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 30f,
							Y0 = -10f,
							X1 = -50f,
							Y1 = 30f
						}
					}
				},
				new Layer
				{
					Name = "cloak",
					X = 308.33f,
					Y = 86.67f,
					W = 500f,
					H = 603.33f,
					Px = 558.3333f,
					Py = 388.3333f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 3f,
							A = 14f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 4f,
							A = 0.55f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "eyes",
					X = 470f,
					Y = 265f,
					W = 160f,
					H = 90f,
					Px = 550f,
					Py = 310f,
					Motions = new Motion[3]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 3f,
							A = 14f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Blink,
							P = 3.3f,
							A = 0f,
							B = 0f,
							Ph = 0.2f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 4f,
							A = 0.3f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["helldiver"] = new Layer[8]
			{
				new Layer
				{
					Name = "speed",
					X = 121.67f,
					Y = 306.67f,
					W = 176.67f,
					H = 186.67f,
					Px = 210f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 0.6f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 40f,
							Y0 = 0f,
							X1 = -70f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "rocks",
					X = 611.67f,
					Y = 93.33f,
					W = 188.33f,
					H = 633.33f,
					Px = 705.8333f,
					Py = 410f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 1.5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "debris_a",
					X = 778.33f,
					Y = 256.67f,
					W = 118.33f,
					H = 255f,
					Px = 837.5f,
					Py = 384.1667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 0.9f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = -40f,
							Y0 = 0f,
							X1 = 60f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "debris_b",
					X = 756.67f,
					Y = 205f,
					W = 183.33f,
					H = 276.67f,
					Px = 848.3333f,
					Py = 343.3333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 0.9f,
							A = 0f,
							B = 0f,
							Ph = 0.5f,
							X0 = -40f,
							Y0 = 0f,
							X1 = 60f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "drill",
					X = 265f,
					Y = 281.67f,
					W = 540f,
					H = 236.67f,
					Px = 535f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "grooves_a",
					X = 521.67f,
					Y = 315f,
					W = 195f,
					H = 170f,
					Px = 619.1667f,
					Py = 400f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.16f,
							A = 1f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "grooves_b",
					X = 581.67f,
					Y = 333.33f,
					W = 175f,
					H = 136.67f,
					Px = 669.1667f,
					Py = 401.6667f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.16f,
							A = 1f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "sparks",
					X = 775f,
					Y = 273.33f,
					W = 155f,
					H = 270f,
					Px = 790f,
					Py = 400f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.2f,
							A = 0.15f,
							B = 0.5f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.33f,
							A = 0.12f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["parasite"] = new Layer[8]
			{
				new Layer
				{
					Name = "arc_a",
					X = 298.33f,
					Y = 230f,
					W = 525f,
					H = 376.67f,
					Px = 560.8333f,
					Py = 418.3333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.7f,
							A = 1f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "arc_b",
					X = 306.67f,
					Y = 230f,
					W = 536.67f,
					H = 356.67f,
					Px = 575f,
					Py = 408.3333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.7f,
							A = 1f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "bounce",
					X = 795f,
					Y = 286.67f,
					W = 101.67f,
					H = 145f,
					Px = 845.8333f,
					Py = 359.1667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Fade,
							P = 1.4f,
							A = 0.6f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "reticle",
					X = 688.33f,
					Y = 178.33f,
					W = 253.33f,
					H = 253.33f,
					Px = 815f,
					Py = 305f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = -35f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 1.3f,
							A = 0.06f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "core",
					X = 768.33f,
					Y = 258.33f,
					W = 93.33f,
					H = 93.33f,
					Px = 815f,
					Py = 305f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.45f,
							A = 0.3f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "legs",
					X = 120f,
					Y = 568.33f,
					W = 255f,
					H = 161.67f,
					Px = 250f,
					Py = 640f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 1.5f,
							A = 7f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Sway,
							P = 0.35f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "parasite",
					X = 93.33f,
					Y = 515f,
					W = 301.67f,
					H = 285f,
					Px = 250f,
					Py = 640f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 1.5f,
							A = 7f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "nerves",
					X = 291.67f,
					Y = 496.67f,
					W = 125f,
					H = 128.33f,
					Px = 330f,
					Py = 580f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 1.5f,
							A = 7f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.4f,
							A = 0.05f,
							B = 0.6f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["carved"] = new Layer[3]
			{
				new Layer
				{
					Name = "torso",
					X = 276.67f,
					Y = 116.67f,
					W = 548.33f,
					H = 555f,
					Px = 550f,
					Py = 640f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 3f,
							A = 0.015f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Hit,
							P = 1.6f,
							A = 0.02f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "chisel",
					X = 738.33f,
					Y = 46.67f,
					W = 190f,
					H = 216.67f,
					Px = 888f,
					Py = 83f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Strike,
							P = 1.6f,
							A = 34f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = -0.615f,
							Y1 = -0.788f
						}
					}
				},
				new Layer
				{
					Name = "sparks",
					X = 673.33f,
					Y = 161.67f,
					W = 158.33f,
					H = 113.33f,
					Px = 770f,
					Py = 245f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.6f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.5f,
							Y0 = 0f,
							X1 = 1.35f,
							Y1 = 0f
						}
					}
				}
			},
			["peerless_scarred"] = new Layer[4]
			{
				new Layer
				{
					Name = "eye",
					X = 258.33f,
					Y = 238.33f,
					W = 583.33f,
					H = 323.33f,
					Px = 550f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Blink,
							P = 4f,
							A = 0f,
							B = 0f,
							Ph = 0.6f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "scar_shadow",
					X = 348.33f,
					Y = 118.33f,
					W = 398.33f,
					H = 563.33f,
					Px = 547.5f,
					Py = 400f,
					Motions = new Motion[0]
				},
				new Layer
				{
					Name = "scar",
					X = 355f,
					Y = 126.67f,
					W = 385f,
					H = 546.67f,
					Px = 547.5f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Fade,
							P = 1.4f,
							A = 0.35f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glint",
					X = 723.33f,
					Y = 153.33f,
					W = 153.33f,
					H = 153.33f,
					Px = 800f,
					Py = 230f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = 45f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 1.1f,
							A = 0.22f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["reaper_scythe"] = new Layer[4]
			{
				new Layer
				{
					Name = "frost",
					X = 221.67f,
					Y = 116.67f,
					W = 636.67f,
					H = 693.33f,
					Px = 540f,
					Py = 463.3333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 3.2f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 30f,
							Y0 = -10f,
							X1 = -40f,
							Y1 = 40f
						}
					}
				},
				new Layer
				{
					Name = "whoosh",
					X = 210f,
					Y = 48.33f,
					W = 560f,
					H = 311.67f,
					Px = 470f,
					Py = 770f,
					Motions = new Motion[3]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 2.2f,
							A = 16f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Bob,
							P = 3.3f,
							A = 5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Burst,
							P = 2.2f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.97f,
							Y0 = 0f,
							X1 = 1.04f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "scythe",
					X = 213.33f,
					Y = 126.67f,
					W = 610f,
					H = 690f,
					Px = 470f,
					Py = 770f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 2.2f,
							A = 16f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Bob,
							P = 3.3f,
							A = 5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glint",
					X = 178.33f,
					Y = 325f,
					W = 120f,
					H = 121.67f,
					Px = 470f,
					Py = 770f,
					Motions = new Motion[3]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 2.2f,
							A = 16f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Bob,
							P = 3.3f,
							A = 5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.8f,
							A = 0.85f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["twin_razors"] = new Layer[5]
			{
				new Layer
				{
					Name = "blade_b",
					X = 283.33f,
					Y = 208.33f,
					W = 565f,
					H = 515f,
					Px = 795.2378f,
					Py = 670.8131f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 1.6f,
							A = -9f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "blade_a",
					X = 251.67f,
					Y = 208.33f,
					W = 565f,
					H = 515f,
					Px = 304.7622f,
					Py = 670.8131f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 1.6f,
							A = 9f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "clash",
					X = 238.33f,
					Y = 141.67f,
					W = 623.33f,
					H = 401.67f,
					Px = 550f,
					Py = 450f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.6f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.85f,
							Y0 = 0f,
							X1 = 1.15f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glint_a",
					X = 746.67f,
					Y = 180f,
					W = 98.33f,
					H = 98.33f,
					Px = 304.7622f,
					Py = 670.8131f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 1.6f,
							A = 9f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.9f,
							A = 0.9f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glint_b",
					X = 255f,
					Y = 180f,
					W = 98.33f,
					H = 98.33f,
					Px = 795.2378f,
					Py = 670.8131f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Swing,
							P = 1.6f,
							A = -9f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.9f,
							A = 0.9f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["storm_knight"] = new Layer[5]
			{
				new Layer
				{
					Name = "bolt_b",
					X = 548.33f,
					Y = 178.33f,
					W = 265f,
					H = 443.33f,
					Px = 639.7941f,
					Py = 530.8562f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.3f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 1f,
							Y0 = 0f,
							X1 = 1.08f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "bolt_a",
					X = 808.33f,
					Y = 175f,
					W = 175f,
					H = 338.33f,
					Px = 891.8241f,
					Py = 448.9667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.16f,
							A = 0.02f,
							B = 0.45f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "cloud",
					X = 561.67f,
					Y = 23.33f,
					W = 443.33f,
					H = 236.67f,
					Px = 783.3333f,
					Py = 141.6667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 4f,
							A = 5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "lance",
					X = 96.67f,
					Y = 416.67f,
					W = 820f,
					H = 326.67f,
					Px = 150f,
					Py = 690f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 2.2f,
							A = 6f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "arcs",
					X = 718.33f,
					Y = 430f,
					W = 195f,
					H = 118.33f,
					Px = 815.8333f,
					Py = 489.1667f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 2.2f,
							A = 6f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.2f,
							A = 0.1f,
							B = 0.9f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["rage_knight"] = new Layer[5]
			{
				new Layer
				{
					Name = "aura",
					X = 186.67f,
					Y = 41.67f,
					W = 705f,
					H = 716.67f,
					Px = 550f,
					Py = 400f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.9f,
							A = 0.06f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = -10f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "flames",
					X = 208.33f,
					Y = 55f,
					W = 676.67f,
					H = 620f,
					Px = 550f,
					Py = 620f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.38f,
							A = 0.15f,
							B = 0.2f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "helm",
					X = 378.33f,
					Y = 131.67f,
					W = 343.33f,
					H = 526.67f,
					Px = 550f,
					Py = 400f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 2.5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glow",
					X = 418.33f,
					Y = 160f,
					W = 263.33f,
					H = 466.67f,
					Px = 550f,
					Py = 400f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 2.5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.5f,
							A = 0.02f,
							B = 0.55f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "embers",
					X = 240f,
					Y = 121.67f,
					W = 575f,
					H = 276.67f,
					Px = 527.5f,
					Py = 260f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 1.4f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = -20f,
							X1 = 0f,
							Y1 = 90f
						}
					}
				}
			},
			["iron_rain"] = new Layer[7]
			{
				new Layer
				{
					Name = "streaks",
					X = 345f,
					Y = 58.33f,
					W = 410f,
					H = 223.33f,
					Px = 550f,
					Py = 170f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 0.45f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 40f,
							X1 = 0f,
							Y1 = -70f
						}
					}
				},
				new Layer
				{
					Name = "ground",
					X = 148.33f,
					Y = 600f,
					W = 823.33f,
					H = 163.33f,
					Px = 560f,
					Py = 730f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Hit,
							P = 1.8f,
							A = 0.035f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "shock_a",
					X = 353.33f,
					Y = 563.33f,
					W = 413.33f,
					H = 153.33f,
					Px = 560f,
					Py = 640f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.45f,
							Y0 = 0f,
							X1 = 2.1f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "shock_b",
					X = 378.33f,
					Y = 573.33f,
					W = 363.33f,
					H = 133.33f,
					Px = 560f,
					Py = 640f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = -0.035f,
							X0 = 0.4f,
							Y0 = 0f,
							X1 = 1.6f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "jets",
					X = 438.33f,
					Y = 75f,
					W = 215f,
					H = 181.67f,
					Px = 546f,
					Py = 220f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Strike,
							P = 1.8f,
							A = 70f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = -1f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.22f,
							A = 0.2f,
							B = 0.3f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "boot",
					X = 413.33f,
					Y = 183.33f,
					W = 390f,
					H = 460f,
					Px = 608f,
					Py = 560f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Strike,
							P = 1.8f,
							A = 70f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = -1f
						}
					}
				},
				new Layer
				{
					Name = "debris",
					X = 338.33f,
					Y = 348.33f,
					W = 465f,
					H = 290f,
					Px = 560f,
					Py = 640f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.5f,
							Y0 = 0f,
							X1 = 1.35f,
							Y1 = 0f
						}
					}
				}
			},
			["overcharge"] = new Layer[6]
			{
				new Layer
				{
					Name = "rays",
					X = 481.67f,
					Y = 178.33f,
					W = 501.67f,
					H = 493.33f,
					Px = 730f,
					Py = 420f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = 14f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.5f,
							A = 0.05f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "ring_a",
					X = 568.33f,
					Y = 258.33f,
					W = 323.33f,
					H = 323.33f,
					Px = 730f,
					Py = 420f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Expand,
							P = 1.4f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.6f,
							Y0 = 0f,
							X1 = 2.1f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "ring_b",
					X = 570f,
					Y = 260f,
					W = 320f,
					H = 320f,
					Px = 730f,
					Py = 420f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Expand,
							P = 1.4f,
							A = 0f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0.6f,
							Y0 = 0f,
							X1 = 2.1f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "fist",
					X = 153.33f,
					Y = 263.33f,
					W = 545f,
					H = 313.33f,
					Px = 425.8333f,
					Py = 420f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Jab,
							P = 1.4f,
							A = 24f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "orb",
					X = 590f,
					Y = 280f,
					W = 280f,
					H = 280f,
					Px = 730f,
					Py = 420f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.35f,
							A = 0.12f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "arcs",
					X = 638.33f,
					Y = 226.67f,
					W = 293.33f,
					H = 426.67f,
					Px = 730f,
					Py = 420f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.18f,
							A = 0.05f,
							B = 0.85f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = -30f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["howler_ambush"] = new Layer[5]
			{
				new Layer
				{
					Name = "smoke",
					X = 176.67f,
					Y = 170f,
					W = 390f,
					H = 538.33f,
					Px = 371.6667f,
					Py = 439.1667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 3.2f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 30f,
							Y0 = -10f,
							X1 = -40f,
							Y1 = 30f
						}
					}
				},
				new Layer
				{
					Name = "hood",
					X = 346.67f,
					Y = 105f,
					W = 420f,
					H = 593.33f,
					Px = 556.6667f,
					Py = 401.6667f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 3f,
							A = 10f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 4f,
							A = 0.45f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "claws",
					X = 721.67f,
					Y = 111.67f,
					W = 253.33f,
					H = 358.33f,
					Px = 830f,
					Py = 300f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Fade,
							P = 1.6f,
							A = 0.85f,
							B = 0f,
							Ph = 0.35f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "blade",
					X = 608.33f,
					Y = 326.67f,
					W = 390f,
					H = 268.33f,
					Px = 640f,
					Py = 560f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Strike,
							P = 1.6f,
							A = 48f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0.848f,
							Y1 = 0.5299f
						}
					}
				},
				new Layer
				{
					Name = "crit",
					X = 878.33f,
					Y = 263.33f,
					W = 208.33f,
					H = 218.33f,
					Px = 979.2192f,
					Py = 348.0323f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Strike,
							P = 1.6f,
							A = 48f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0.848f,
							Y1 = 0.5299f
						},
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.6f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.7f,
							Y0 = 0f,
							X1 = 1.3f,
							Y1 = 0f
						}
					}
				}
			},
			["clawdrill"] = new Layer[8]
			{
				new Layer
				{
					Name = "rock",
					X = 613.33f,
					Y = 423.33f,
					W = 373.33f,
					H = 335f,
					Px = 800f,
					Py = 590.8333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 1.5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "debris_a",
					X = 663.33f,
					Y = 403.33f,
					W = 115f,
					H = 131.67f,
					Px = 720.8333f,
					Py = 469.1667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 0.8f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 90f,
							Y1 = 40f
						}
					}
				},
				new Layer
				{
					Name = "debris_b",
					X = 581.67f,
					Y = 476.67f,
					W = 133.33f,
					H = 111.67f,
					Px = 648.3333f,
					Py = 532.5f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 0.8f,
							A = 0f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0f,
							Y0 = 0f,
							X1 = -30f,
							Y1 = -90f
						}
					}
				},
				new Layer
				{
					Name = "claws",
					X = 240f,
					Y = 143.33f,
					W = 420f,
					H = 410f,
					Px = 377.2072f,
					Py = 309.4879f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Sway,
							P = 0.3f,
							A = 2f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "drill",
					X = 185f,
					Y = 140f,
					W = 495f,
					H = 373.33f,
					Px = 432.5f,
					Py = 326.6667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "grooves_a",
					X = 443.33f,
					Y = 285f,
					W = 151.67f,
					H = 201.67f,
					Px = 519.1667f,
					Py = 385.8333f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.16f,
							A = 1f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "grooves_b",
					X = 490f,
					Y = 321.67f,
					W = 141.67f,
					H = 170f,
					Px = 560.8333f,
					Py = 406.6667f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Shake,
							P = 1f,
							A = 4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 0.16f,
							A = 1f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "sparks",
					X = 595f,
					Y = 363.33f,
					W = 201.67f,
					H = 298.33f,
					Px = 657.0631f,
					Py = 484.3612f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.2f,
							A = 0.15f,
							B = 0.5f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.33f,
							A = 0.12f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["parasite_brood"] = new Layer[7]
			{
				new Layer
				{
					Name = "reticle",
					X = 676.67f,
					Y = 150f,
					W = 266.67f,
					H = 270f,
					Px = 810f,
					Py = 285f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = -35f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 1.3f,
							A = 0.06f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "core",
					X = 760f,
					Y = 235f,
					W = 100f,
					H = 100f,
					Px = 810f,
					Py = 285f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.45f,
							A = 0.3f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "drops",
					X = 681.67f,
					Y = 290f,
					W = 146.67f,
					H = 110f,
					Px = 755f,
					Py = 345f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 1.6f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = -380f,
							Y1 = -250f
						}
					}
				},
				new Layer
				{
					Name = "larva_a",
					X = 195f,
					Y = 496.67f,
					W = 231.67f,
					H = 178.33f,
					Px = 310.8333f,
					Py = 585.8333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 340f,
							Y1 = 205f
						}
					}
				},
				new Layer
				{
					Name = "larva_b",
					X = 208.33f,
					Y = 521.67f,
					W = 201.67f,
					H = 160f,
					Px = 309.1667f,
					Py = 601.6667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0.33f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 340f,
							Y1 = 205f
						}
					}
				},
				new Layer
				{
					Name = "larva_c",
					X = 238.33f,
					Y = 488.33f,
					W = 185f,
					H = 145f,
					Px = 330.8333f,
					Py = 560.8333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0.66f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 340f,
							Y1 = 205f
						}
					}
				},
				new Layer
				{
					Name = "eggs",
					X = 108.33f,
					Y = 468.33f,
					W = 330f,
					H = 303.33f,
					Px = 280f,
					Py = 640f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 1.2f,
							A = 0.03f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["aureate_armor"] = new Layer[6]
			{
				new Layer
				{
					Name = "halo",
					X = 228.33f,
					Y = 50f,
					W = 643.33f,
					H = 280f,
					Px = 550f,
					Py = 440f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 2f,
							A = 0.03f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 2f,
							A = 0.4f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "ring",
					X = 370f,
					Y = 260f,
					W = 360f,
					H = 360f,
					Px = 550f,
					Py = 440f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Expand,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.8f,
							Y0 = 0f,
							X1 = 2.4f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "plate",
					X = 126.67f,
					Y = 151.67f,
					W = 846.67f,
					H = 563.33f,
					Px = 550f,
					Py = 440f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 3f,
							A = 5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "crack",
					X = 436.67f,
					Y = 220f,
					W = 125f,
					H = 190f,
					Px = 499.1667f,
					Py = 315f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Bob,
							P = 3f,
							A = 5f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.5f,
							A = 0.02f,
							B = 0.6f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "sparks",
					X = 325f,
					Y = 85f,
					W = 235f,
					H = 185f,
					Px = 470f,
					Py = 250f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Burst,
							P = 1.8f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0.6f,
							Y0 = 0f,
							X1 = 1.3f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glint",
					X = 701.67f,
					Y = 191.67f,
					W = 116.67f,
					H = 116.67f,
					Px = 760f,
					Py = 250f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = 40f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Pulse,
							P = 1.1f,
							A = 0.22f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["obsidian_frame"] = new Layer[6]
			{
				new Layer
				{
					Name = "aura",
					X = 238.33f,
					Y = 128.33f,
					W = 623.33f,
					H = 623.33f,
					Px = 550f,
					Py = 440f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 1.6f,
							A = 0.05f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "pluses_a",
					X = 245f,
					Y = 511.67f,
					W = 623.33f,
					H = 145f,
					Px = 556.6667f,
					Py = 584.1667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 2.2f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = -10f,
							X1 = 0f,
							Y1 = 260f
						}
					}
				},
				new Layer
				{
					Name = "pluses_b",
					X = 215f,
					Y = 341.67f,
					W = 693.33f,
					H = 123.33f,
					Px = 561.6667f,
					Py = 403.3333f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 2.2f,
							A = 0f,
							B = 0f,
							Ph = 0.5f,
							X0 = 0f,
							Y0 = -10f,
							X1 = 0f,
							Y1 = 260f
						}
					}
				},
				new Layer
				{
					Name = "crystals",
					X = 323.33f,
					Y = 111.67f,
					W = 453.33f,
					H = 635f,
					Px = 550f,
					Py = 716f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Hit,
							P = 2f,
							A = 0.02f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "veins",
					X = 383.33f,
					Y = 205f,
					W = 335f,
					H = 440f,
					Px = 550f,
					Py = 716f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Hit,
							P = 2f,
							A = 0.02f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Flicker,
							P = 0.7f,
							A = 0.01f,
							B = 0.55f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "glint",
					X = 546.67f,
					Y = 196.67f,
					W = 106.67f,
					H = 106.67f,
					Px = 600f,
					Py = 250f,
					Motions = new Motion[2]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.9f,
							A = 0.25f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						},
						new Motion
						{
							Type = MotionType.Fade,
							P = 1.8f,
							A = 0.7f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				}
			},
			["willow_way"] = new Layer[6]
			{
				new Layer
				{
					Name = "leaves_a",
					X = 321.67f,
					Y = 385f,
					W = 471.67f,
					H = 343.33f,
					Px = 557.5f,
					Py = 556.6667f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Loopmove,
							P = 3f,
							A = 0f,
							B = 0f,
							Ph = 0f,
							X0 = 40f,
							Y0 = 20f,
							X1 = -60f,
							Y1 = -40f
						}
					}
				},
				new Layer
				{
					Name = "trail_outer",
					X = 200f,
					Y = 66.67f,
					W = 698.33f,
					H = 721.67f,
					Px = 550f,
					Py = 430f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = -260f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "trail_inner",
					X = 391.67f,
					Y = 158.33f,
					W = 411.67f,
					H = 233.33f,
					Px = 550f,
					Py = 430f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = -330f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "blade",
					X = 493.33f,
					Y = 345f,
					W = 418.33f,
					H = 170f,
					Px = 550f,
					Py = 430f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Spin,
							P = 1f,
							A = -260f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f
						}
					}
				},
				new Layer
				{
					Name = "hub",
					X = 476.67f,
					Y = 355f,
					W = 146.67f,
					H = 150f,
					Px = 550f,
					Py = 430f,
					Motions = new Motion[1]
					{
						new Motion
						{
							Type = MotionType.Pulse,
							P = 0.4f,
							A = 0.15f,
							B = 0f,
							Ph = 0f,
							X0 = 0f,
							Y0 = 0f,
							X1 = 0f,
							Y1 = 0f