private static SkillDef NewSkillDef(SerializableEntityStateType state, string stateMachine, int stock, float cooldown, int stockConsumed)
        {
            SkillDef skillDef = ScriptableObject.CreateInstance <SkillDef>();

            skillDef.skillName             = "SKILL_LUNAR_PRIMARY_REPLACEMENT_NAME";
            skillDef.skillNameToken        = "SKILL_LUNAR_PRIMARY_REPLACEMENT_NAME";
            skillDef.skillDescriptionToken = "SKILL_LUNAR_PRIMARY_REPLACEMENT_DESCRIPTION";
            skillDef.icon = null;

            skillDef.activationState            = state;
            skillDef.activationStateMachineName = stateMachine;
            skillDef.baseMaxStock                 = stock;
            skillDef.baseRechargeInterval         = cooldown;
            skillDef.beginSkillCooldownOnSkillEnd = false;
            skillDef.canceledFromSprinting        = false;
            skillDef.forceSprintDuringState       = false;
            skillDef.fullRestockOnAssign          = true;
            skillDef.interruptPriority            = InterruptPriority.Any;
            skillDef.resetCooldownTimerOnUse      = false;
            skillDef.isCombatSkill                = true;
            skillDef.mustKeyPress                 = false;
            skillDef.cancelSprintingOnActivation  = true;
            skillDef.rechargeStock                = 1;
            skillDef.requiredStock                = 1;
            skillDef.stockToConsume               = stockConsumed;

            Loadouts.AddSkillDef(skillDef);

            return(skillDef);
        }
        //public static SkillDef DeploySwarmDef;

        internal static void RegisterSkills()
        {
            Loadouts.AddSkill(typeof(EmptySkill));
            Loadouts.AddSkill(typeof(States.Parent.MultiSlam));
            Loadouts.AddSkill(typeof(States.Scavenger.HoarderSit));
            Loadouts.AddSkill(typeof(States.ClayDunestrider.XLRecover));
            Loadouts.AddSkill(typeof(States.GreaterWisp.WispAmalgamateCharge));
            Loadouts.AddSkill(typeof(States.LesserWisp.ChargeArchwispCannon));
            Loadouts.AddSkill(typeof(States.BeetleQueen.BeetleSwarm));
            Loadouts.AddSkill(typeof(States.BeetleQueen.OnlyBeetleSwarm));
            Loadouts.AddSkill(typeof(States.ElderLemurian.ChargeSingleFireball));
            Loadouts.AddSkill(typeof(States.BrassContraption.MegaBrassBall));
            Loadouts.AddSkill(typeof(States.StoneGolem.ChargeLaser));
            Loadouts.AddSkill(typeof(States.LesserWisp.ChargeWispLaser));
            Loadouts.AddSkill(typeof(States.GreaterWisp.ChargeDoubleWispLaser));
            Loadouts.AddSkill(typeof(States.ArchaicWisp.ChargeMegaWispLaser));
            Loadouts.AddSkill(typeof(States.Imp.IchorClaws));
            Loadouts.AddSkill(typeof(States.ImpOverlord.FireIchorSpikes));
            Loadouts.AddSkill(typeof(States.SolusProbe.GaussianBurst));
            Loadouts.AddSkill(typeof(States.SolusProbe.MK2Charge));
            Loadouts.AddSkill(typeof(States.ClayMan.SuperbleedSwipe));

            //Loadouts.AddSkill(typeof(States.RoboBallBoss.DeploySwarm));

            //Skill that does absolutely nothing, useful for getting variants without a certain skill (No teleporting imps/parents)
            emptySkillDef = NewSkillDef(new SerializableEntityStateType(typeof(EmptySkill)), "Body");
            //An Attempt at a modified parent slam attack
            multiSlamDef = NewSkillDef(new SerializableEntityStateType(typeof(States.Parent.MultiSlam)), "Body");
            //Used for the hoarder scavanger.
            hoarderSitDef            = NewSkillDef(new SerializableEntityStateType(typeof(States.Scavenger.HoarderSit)), "Body");
            xlRecoverDef             = NewSkillDef(new SerializableEntityStateType(typeof(States.ClayDunestrider.XLRecover)), "Body");
            wispAmalgamateDef        = NewSkillDef(new SerializableEntityStateType(typeof(States.GreaterWisp.WispAmalgamateCharge)), "Weapon");
            chargeArchCannonDef      = NewSkillDef(new SerializableEntityStateType(typeof(States.LesserWisp.ChargeArchwispCannon)), "Weapon");
            beetleSwarmDef           = NewSkillDef(new SerializableEntityStateType(typeof(States.BeetleQueen.BeetleSwarm)), "Body");
            onlyBeetleSwarmDef       = NewSkillDef(new SerializableEntityStateType(typeof(States.BeetleQueen.OnlyBeetleSwarm)), "Body");
            chargeSingleFireballDef  = NewSkillDef(new SerializableEntityStateType(typeof(States.ElderLemurian.ChargeSingleFireball)), "Weapon");
            megaBrassBallDef         = NewSkillDef(new SerializableEntityStateType(typeof(States.BrassContraption.MegaBrassBall)), "Weapon");
            golemLaserDef            = NewSkillDef(new SerializableEntityStateType(typeof(States.StoneGolem.ChargeLaser)), "Weapon");
            chargeWispLaserDef       = NewSkillDef(new SerializableEntityStateType(typeof(States.LesserWisp.ChargeWispLaser)), "Weapon");
            chargeDoubleWispLaserDef = NewSkillDef(new SerializableEntityStateType(typeof(States.GreaterWisp.ChargeDoubleWispLaser)), "Weapon");
            chargeMegaWispLaserDef   = NewSkillDef(new SerializableEntityStateType(typeof(States.ArchaicWisp.ChargeMegaWispLaser)), "Weapon");
            ichorClawsDef            = NewSkillDef(new SerializableEntityStateType(typeof(States.Imp.IchorClaws)), "Weapon");
            fireIchorSpikesDef       = NewSkillDef(new SerializableEntityStateType(typeof(States.ImpOverlord.FireIchorSpikes)), "Weapon");
            gaussianBurstDef         = NewSkillDef(new SerializableEntityStateType(typeof(States.SolusProbe.GaussianBurst)), "Weapon");
            mk2ChargeDef             = NewSkillDef(new SerializableEntityStateType(typeof(States.SolusProbe.MK2Charge)), "Weapon");
            superbleedSwipeDef       = NewSkillDef(new SerializableEntityStateType(typeof(States.ClayMan.SuperbleedSwipe)), "Weapon");

            BuildSkillDefs(emptySkillDef, 0, 1000);
            BuildSkillDefs(hoarderSitDef, 1, 1, 10f, 1);
            BuildSkillDefs(xlRecoverDef, 1, 1, 10f, 1);
            BuildSkillDefs(wispAmalgamateDef, 1, 1, 4f, 1);
            BuildSkillDefs(chargeArchCannonDef, 1, 1, 3f, 1);
            BuildSkillDefs(beetleSwarmDef, 1, 1, 30f, 1);
            BuildSkillDefs(onlyBeetleSwarmDef, 1, 1, 15, 1);
            BuildSkillDefs(chargeSingleFireballDef, 5, 1, 3, 1, 5);
            BuildSkillDefs(megaBrassBallDef, 1, 1, 5, 1);
            BuildSkillDefs(golemLaserDef, 1, 1, 10, 1);
            BuildSkillDefs(chargeWispLaserDef, 1, 1, 6, 1);
            BuildSkillDefs(chargeDoubleWispLaserDef, 1, 1, 9, 1);
            BuildSkillDefs(chargeMegaWispLaserDef, 1, 1, 10, 1);
            BuildSkillDefs(ichorClawsDef, 1, 1, 1.5f, 1);
            BuildSkillDefs(fireIchorSpikesDef, 3, 1, 3, 1, 2);
            BuildSkillDefs(gaussianBurstDef, 6, 1, 1, 1, 2);
            BuildSkillDefs(mk2ChargeDef, 1, 1, 2, 1);
            BuildSkillDefs(superbleedSwipeDef, 1, 1, 1, 1);
        }