예제 #1
0
 private static void CreateSkillFamilies()
 {
     skillLocator.SetFieldValue <GenericSkill[]>("allSkills", new GenericSkill[0]);
     {
         skillLocator.primary = megaMushrum.AddComponent <GenericSkill>();
         SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
         newFamily.variants = new SkillFamily.Variant[1];
         LoadoutAPI.AddSkillFamily(newFamily);
         skillLocator.primary.SetFieldValue("_skillFamily", newFamily);
     }
     {
         skillLocator.secondary = megaMushrum.AddComponent <GenericSkill>();
         SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
         newFamily.variants = new SkillFamily.Variant[1];
         LoadoutAPI.AddSkillFamily(newFamily);
         skillLocator.secondary.SetFieldValue("_skillFamily", newFamily);
     }
     {
         skillLocator.utility = megaMushrum.AddComponent <GenericSkill>();
         SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
         newFamily.variants = new SkillFamily.Variant[1];
         LoadoutAPI.AddSkillFamily(newFamily);
         skillLocator.utility.SetFieldValue("_skillFamily", newFamily);
     }
     {
         skillLocator.special = megaMushrum.AddComponent <GenericSkill>();
         SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
         newFamily.variants = new SkillFamily.Variant[1];
         LoadoutAPI.AddSkillFamily(newFamily);
         skillLocator.special.SetFieldValue("_skillFamily", newFamily);
     }
 }
예제 #2
0
        private static void SpecialSetup()
        {
            SkillLocator component = WispSurvivor.characterPrefab.GetComponent <SkillLocator>();

            LanguageAPI.Add("EXAMPLESURVIVOR_SPECIAL_BURST_NAME", "Burst");
            LanguageAPI.Add("EXAMPLESURVIVOR_SPECIAL_BURST_DESCRIPTION", "Shatter your barrier for <style=cIsDamage>700-800%</style> damage. " +
                            "If tethered, duplicate explosion on target.");

            // set up your primary skill def here!

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(EntityStates.WispSurvivorStates.WispBurst));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 7f;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Skill;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = true;
            mySkillDef.noSprint              = false;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 1f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon4;
            mySkillDef.skillDescriptionToken = "EXAMPLESURVIVOR_SPECIAL_BURST_DESCRIPTION";
            mySkillDef.skillName             = "EXAMPLESURVIVOR_SPECIAL_BURST_NAME";
            mySkillDef.skillNameToken        = "EXAMPLESURVIVOR_SPECIAL_BURST_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);
            component.special = WispSurvivor.characterPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.special.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.special.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };


            // add this code after defining a new skilldef if you're adding an alternate skill

            /*Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
             * skillFamily.variants[skillFamily.variants.Length - 1] = new SkillFamily.Variant
             * {
             *  skillDef = newSkillDef,
             *  unlockableName = "",
             *  viewableNode = new ViewablesCatalog.Node(newSkillDef.skillNameToken, false, null)
             * };*/
        }
예제 #3
0
        void PrimarySetup()
        {
            SkillLocator component = characterPrefab.GetComponent <SkillLocator>();

            LanguageAPI.Add("EXAMPLESURVIVOR_PRIMARY_CROSSBOW_NAME", "Crossbow");
            LanguageAPI.Add("EXAMPLESURVIVOR_PRIMARY_CROSSBOW_DESCRIPTION", "Fire an arrow, dealing <style=cIsDamage>200% damage</style>.");

            // set up your primary skill def here!

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(ExampleSurvivorFireArrow));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 0f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Any;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = false;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon1;
            mySkillDef.skillDescriptionToken = "EXAMPLESURVIVOR_PRIMARY_CROSSBOW_DESCRIPTION";
            mySkillDef.skillName             = "EXAMPLESURVIVOR_PRIMARY_CROSSBOW_NAME";
            mySkillDef.skillNameToken        = "EXAMPLESURVIVOR_PRIMARY_CROSSBOW_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.primary = characterPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.primary.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.primary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };


            // add this code after defining a new skilldef if you're adding an alternate skill

            /*Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
             * skillFamily.variants[skillFamily.variants.Length - 1] = new SkillFamily.Variant
             * {
             *  skillDef = newSkillDef,
             *  unlockableName = "",
             *  viewableNode = new ViewablesCatalog.Node(newSkillDef.skillNameToken, false, null)
             * };*/
        }
예제 #4
0
    /// <summary>
    /// Creates an EmptySkillFamily. Be sure to call DestroyGenericSkillComponents before doing this.
    /// </summary>
    /// <param name="survivor"></param>
    public static void CreateEmptySkillFamily(GameObject survivor)
    {
        SkillLocator skillLocator = survivor.GetComponent <SkillLocator>();

        skillLocator.SetFieldValue <GenericSkill[]>("allSkills", new GenericSkill[0]);
        {
            skillLocator.primary = survivor.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.primary.SetFieldValue("_skillFamily", newFamily);
        }
        {
            skillLocator.secondary = survivor.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.secondary.SetFieldValue("_skillFamily", newFamily);
        }
        {
            skillLocator.utility = survivor.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.utility.SetFieldValue("_skillFamily", newFamily);
        }
        {
            skillLocator.special = survivor.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.special.SetFieldValue("_skillFamily", newFamily);
        }
    }
예제 #5
0
        internal static void UltSetup()
        {
            {
                SkillLocator component = characterPrefab.GetComponent <SkillLocator>();

                LanguageAPI.Add("ROCKETEER_ULT_NAME", "Big Booma Cannon");
                LanguageAPI.Add("ROCKETEER_ULT_DESCRIPTION", "Ready to go, Boss. " +
                                "Each rocket does <style=cIsDamage>1500% damage</style> and takes <style=cIsDamage>12 seconds</style> to recharge. " +
                                "When launched each rocket increases the damage of all rockets additively by <style=cIsDamage>175%</style>. Hold up to <style=cIsDamage>5</style>.");

                // set up your primary skill def here!

                chargeUltDef = ScriptableObject.CreateInstance <SkillDef>();
                chargeUltDef.activationState            = new SerializableEntityStateType(typeof(RocketeerChargeUlt));
                chargeUltDef.activationStateMachineName = "Weapon";
                chargeUltDef.baseMaxStock                 = 5;
                chargeUltDef.baseRechargeInterval         = 12f;
                chargeUltDef.beginSkillCooldownOnSkillEnd = true;
                chargeUltDef.canceledFromSprinting        = false;
                chargeUltDef.fullRestockOnAssign          = true;
                chargeUltDef.interruptPriority            = InterruptPriority.Skill;
                chargeUltDef.isCombatSkill                = true;
                chargeUltDef.mustKeyPress                 = false;
                chargeUltDef.rechargeStock                = 1;
                chargeUltDef.requiredStock                = 1;
                chargeUltDef.stockToConsume               = 0;
                chargeUltDef.icon = Resources.Load <Sprite>("Textures/MiscIcons/texMysteryIcon");
                chargeUltDef.skillDescriptionToken = "ROCKETEER_ULT_DESCRIPTION";
                chargeUltDef.skillName             = "ROCKETEER_ULT_NAME";
                chargeUltDef.skillNameToken        = "ROCKETEER_ULT_NAME";

                LoadoutAPI.AddSkillDef(chargeUltDef);

                component.special = characterPrefab.AddComponent <GenericSkill>();
                SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
                newFamily.variants = new SkillFamily.Variant[1];
                LoadoutAPI.AddSkillFamily(newFamily);
                component.special.SetFieldValue("_skillFamily", newFamily);
                SkillFamily skillFamily = component.special.skillFamily;

                skillFamily.variants[0] = new SkillFamily.Variant
                {
                    skillDef       = chargeUltDef,
                    unlockableName = "",
                    viewableNode   = new ViewablesCatalog.Node(chargeUltDef.skillNameToken, false, null)
                };


                // add this code after defining a new skilldef if you're adding an alternate skill


                ContentPacks.skillDefs.Add(chargeUltDef);
                ContentPacks.skillFamilies.Add(newFamily);
            }
        }
예제 #6
0
        void SecondarySkills()
        {
            {
                SkillLocator skillLocator = myCharacter.GetComponent <SkillLocator>();

                skillLocator.secondary = myCharacter.AddComponent <GenericSkill>();
                SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
                newFamily.variants = new SkillFamily.Variant[1];

                LoadoutAPI.AddSkillFamily(newFamily);
                skillLocator.secondary.SetFieldValue("_skillFamily", newFamily);
            }

            {
                GameObject   gameObject  = myCharacter;
                SkillLocator component   = gameObject.GetComponent <SkillLocator>();
                SkillFamily  skillFamily = component.secondary.skillFamily;

                SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();
                mySkillDef.activationState            = new SerializableEntityStateType(typeof(EntityStates.Drone.DroneWeapon.FireTwinRocket));
                mySkillDef.activationStateMachineName = "WeaponRocket";
                mySkillDef.baseMaxStock                 = 2;
                mySkillDef.baseRechargeInterval         = 4f;
                mySkillDef.beginSkillCooldownOnSkillEnd = true;
                mySkillDef.canceledFromSprinting        = false;
                mySkillDef.fullRestockOnAssign          = false;
                mySkillDef.interruptPriority            = InterruptPriority.PrioritySkill;
                mySkillDef.isBullets             = false;
                mySkillDef.isCombatSkill         = false;
                mySkillDef.mustKeyPress          = false;
                mySkillDef.noSprint              = true;
                mySkillDef.rechargeStock         = 1;
                mySkillDef.requiredStock         = 1;
                mySkillDef.shootDelay            = 0.25f;
                mySkillDef.stockToConsume        = 1;
                mySkillDef.icon                  = Resources.Load <GameObject>("Prefabs/CharacterBodies/engibody").GetComponent <SkillLocator>().primary.skillFamily.variants[0].skillDef.icon;
                mySkillDef.skillDescriptionToken = "Fire two large rockets";
                mySkillDef.skillName             = "PP_PLAYABLETC_SPECIAL";
                mySkillDef.skillNameToken        = "Explosive Ordenance";

                LoadoutAPI.AddSkillDef(mySkillDef);


                skillFamily.variants[0] =
                    new SkillFamily.Variant
                {
                    skillDef       = mySkillDef,
                    unlockableName = "",
                    viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
                };
            }
        }
예제 #7
0
        private static void PrimarySetup(GameObject bodyPrefab)
        {
            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(PaladinMod.States.Slash));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 0f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Any;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = false;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0.5f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon1;
            mySkillDef.skillDescriptionToken = "PALADIN_PRIMARY_SLASH_DESCRIPTION";
            mySkillDef.skillName             = "PALADIN_PRIMARY_SLASH_NAME";
            mySkillDef.skillNameToken        = "PALADIN_PRIMARY_SLASH_NAME";
            mySkillDef.keywordTokens         = new string[] {
                "KEYWORD_SWORDBEAM"
            };

            if (bodyPrefab.name == "LunarKnightBody")
            {
                mySkillDef.activationState            = new SerializableEntityStateType(typeof(PaladinMod.States.LunarKnight.MaceSlam));
                mySkillDef.activationStateMachineName = "Body";
            }

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.primary = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.primary._skillFamily = newFamily;
            SkillFamily skillFamily = skillLocator.primary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
예제 #8
0
        void PrimarySkills()
        {
            {
                SkillLocator skillLocator = myCharacter.GetComponent <SkillLocator>();

                skillLocator.primary = myCharacter.AddComponent <GenericSkill>();
                SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();
                newFamily.variants = new SkillFamily.Variant[1];
                LoadoutAPI.AddSkillFamily(newFamily);
                skillLocator.primary.SetFieldValue("_skillFamily", newFamily);
            }

            {
                GameObject   gameObject  = myCharacter;
                SkillLocator component   = gameObject.GetComponent <SkillLocator>();
                SkillFamily  skillFamily = component.primary.skillFamily;

                SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();
                mySkillDef.activationState            = new SerializableEntityStateType(typeof(EntityStates.Drone.DroneWeapon.FireMegaTurret));
                mySkillDef.activationStateMachineName = "WeaponGun";
                mySkillDef.baseMaxStock                 = 1;
                mySkillDef.baseRechargeInterval         = 2f;
                mySkillDef.beginSkillCooldownOnSkillEnd = false;
                mySkillDef.canceledFromSprinting        = false;
                mySkillDef.fullRestockOnAssign          = true;
                mySkillDef.interruptPriority            = InterruptPriority.Any;
                mySkillDef.isBullets             = false;
                mySkillDef.isCombatSkill         = true;
                mySkillDef.mustKeyPress          = false;
                mySkillDef.noSprint              = false;
                mySkillDef.rechargeStock         = 1;
                mySkillDef.requiredStock         = 1;
                mySkillDef.shootDelay            = 1f;
                mySkillDef.stockToConsume        = 1;
                mySkillDef.icon                  = Resources.Load <GameObject>("Prefabs/CharacterBodies/commandobody").GetComponent <SkillLocator>().special.skillFamily.variants[0].skillDef.icon;
                mySkillDef.skillDescriptionToken = "Spray bullets in the direction of enemies";
                mySkillDef.skillName             = "PP_PLAYABLETC_PRIMARY";
                mySkillDef.skillNameToken        = "Supressive Fire";

                LoadoutAPI.AddSkillDef(mySkillDef);


                skillFamily.variants[0] =
                    new SkillFamily.Variant
                {
                    skillDef       = mySkillDef,
                    unlockableName = "",
                    viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
                };
            }
        }
예제 #9
0
        private void secondarySetup()
        {
            SkillLocator component = characterPrefab.GetComponent <SkillLocator>();

            LanguageAPI.Add("EXAMPLESURVIVOR_PRIMARY_CROSSBOW_NAME", "Crossbow");
            LanguageAPI.Add("EXAMPLESURVIVOR_PRIMARY_CROSSBOW_DESCRIPTION", "Fire an arrow, dealing <style=cIsDamage>200% damage</style>.");
            var skillGutsSwordAttack = ScriptableObject.CreateInstance <SkillDef>();

            skillGutsSwordAttack.activationState            = new SerializableEntityStateType(typeof(GutsSwordAttack));
            skillGutsSwordAttack.activationStateMachineName = "Weapon";
            skillGutsSwordAttack.baseMaxStock                 = 1;
            skillGutsSwordAttack.baseRechargeInterval         = 0f;
            skillGutsSwordAttack.beginSkillCooldownOnSkillEnd = false;
            skillGutsSwordAttack.canceledFromSprinting        = false;
            skillGutsSwordAttack.fullRestockOnAssign          = true;
            skillGutsSwordAttack.interruptPriority            = InterruptPriority.Any;
            skillGutsSwordAttack.isBullets      = false;
            skillGutsSwordAttack.isCombatSkill  = true;
            skillGutsSwordAttack.mustKeyPress   = false;
            skillGutsSwordAttack.noSprint       = true;
            skillGutsSwordAttack.rechargeStock  = 1;
            skillGutsSwordAttack.requiredStock  = 1;
            skillGutsSwordAttack.shootDelay     = 0f;
            skillGutsSwordAttack.stockToConsume = 1;
            skillGutsSwordAttack.icon           = Assets.icon1;
            //skillGutsSwordAttack.skillDescriptionToken = "EXAMPLESURVIVOR_PRIMARY_CROSSBOW_DESCRIPTION";
            //skillGutsSwordAttack.skillName = "EXAMPLESURVIVOR_PRIMARY_CROSSBOW_NAME";
            //skillGutsSwordAttack.skillNameToken = "EXAMPLESURVIVOR_PRIMARY_CROSSBOW_NAME";

            LoadoutAPI.AddSkillDef(skillGutsSwordAttack);
            component.secondary = characterPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.secondary.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.secondary.skillFamily;

            component.secondary.SetFieldValue("_skillFamily", newFamily);


            skillFamily = component.secondary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = skillGutsSwordAttack,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(skillGutsSwordAttack.skillNameToken, false, null)
            };
        }
        private void UtilitySetup()
        {
            SkillLocator component = myCharacter.GetComponent <SkillLocator>();

            string desc = "<style=cIsUtility>Leap</style> a short distance.";

            LanguageAPI.Add("GROVETENDER_UTILITY_DODGE_NAME", "Sidestep");
            LanguageAPI.Add("GROVETENDER_UTILITY_DODGE_DESCRIPTION", desc);

            SkillDef tempDef    = Resources.Load <GameObject>("Prefabs/CharacterBodies/CrocoBody").GetComponentInChildren <SkillLocator>().utility.skillFamily.variants[1].skillDef;
            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(EntityStates.Croco.ChainableLeap));
            mySkillDef.activationStateMachineName = "Body";
            mySkillDef.baseRechargeInterval       = 8;
            mySkillDef.baseMaxStock = 1;
            mySkillDef.beginSkillCooldownOnSkillEnd = tempDef.beginSkillCooldownOnSkillEnd;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = tempDef.fullRestockOnAssign;
            mySkillDef.interruptPriority            = tempDef.interruptPriority;
            mySkillDef.isBullets             = tempDef.isBullets;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = tempDef.mustKeyPress;
            mySkillDef.noSprint              = false;
            mySkillDef.rechargeStock         = tempDef.rechargeStock;
            mySkillDef.requiredStock         = tempDef.requiredStock;
            mySkillDef.shootDelay            = tempDef.shootDelay;
            mySkillDef.stockToConsume        = tempDef.stockToConsume;
            mySkillDef.icon                  = tempDef.icon;
            mySkillDef.skillDescriptionToken = "GROVETENDER_UTILITY_DODGE_DESCRIPTION";
            mySkillDef.skillName             = "GROVETENDER_UTILITY_DODGE_NAME";
            mySkillDef.skillNameToken        = "GROVETENDER_UTILITY_DODGE_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.utility = myCharacter.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.utility.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.utility.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = tempDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
        private void SpecialSetup()
        {
            SkillLocator component = myCharacter.GetComponent <SkillLocator>();

            string desc = "Fire a burst of <style=cIsUtility>chains</style> that deal <style=cIsDamage>8x" + FireShotgun.projectileDamageCoefficient * 100f + "% damage</style> and <style=cIsUtility>pull</style> enemies hit.";

            LanguageAPI.Add("GROVETENDER_SPECIAL_CHAINS_NAME", "Scorched Shotgun");
            LanguageAPI.Add("GROVETENDER_SPECIAL_CHAINS_DESCRIPTION", desc);

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(PrepShotgun));
            mySkillDef.activationStateMachineName = "Body";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 8;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.PrioritySkill;
            mySkillDef.isBullets             = true;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = true;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon4;
            mySkillDef.skillDescriptionToken = "GROVETENDER_SPECIAL_CHAINS_DESCRIPTION";
            mySkillDef.skillName             = "GROVETENDER_SPECIAL_CHAINS_NAME";
            mySkillDef.skillNameToken        = "GROVETENDER_SPECIAL_CHAINS_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.special = myCharacter.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.special.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.special.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
        private void SecondarySetup()
        {
            SkillLocator component = myCharacter.GetComponent <SkillLocator>();

            string desc = "Fire a <style=cIsUtility>piercing Wisp</style> that deals <style=cIsDamage>" + HealingWisp.damageCoefficient * 100f + "% damage</style>.";

            LanguageAPI.Add("GROVETENDER_SECONDARY_HEAL_NAME", "Piercing Wisp");
            LanguageAPI.Add("GROVETENDER_SECONDARY_HEAL_DESCRIPTION", desc);

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(HealingWisp));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 5f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Skill;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = false;
            mySkillDef.noSprint              = false;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon2;
            mySkillDef.skillDescriptionToken = "GROVETENDER_SECONDARY_HEAL_DESCRIPTION";
            mySkillDef.skillName             = "GROVETENDER_SECONDARY_HEAL_NAME";
            mySkillDef.skillNameToken        = "GROVETENDER_SECONDARY_HEAL_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.secondary = myCharacter.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.secondary.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.secondary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
예제 #13
0
        static void UtilitySetup()
        {
            //KevinsAdditionsPlugin._logger.LogError("The Imp Overlord has " + component.skillSlotCount + " at his disposal.");
            LanguageAPI.Add("PLAYERIMPOVERLORD_UTILITY_BLINK_NAME", "Blink");
            LanguageAPI.Add("PLAYERIMPOVERLORD_UTILITY_BLINK_DESCRIPTION", "Blink to the nearest enemy, landing on top of them and dealing damage.");

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(BlinkState));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 9f;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = false;
            mySkillDef.interruptPriority            = InterruptPriority.Death;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = true;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon3;
            mySkillDef.skillDescriptionToken = "PLAYERIMPOVERLORD_UTILITY_BLINK_DESCRIPTION";
            mySkillDef.skillName             = "PLAYERIMPOVERLORD_UTILITY_BLINK_NAME";
            mySkillDef.skillNameToken        = "PLAYERIMPOVERLORD_UTILITY_BLINK_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.utility = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.utility.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.utility.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
            component.utility.baseSkill       = mySkillDef;
            component.utility.skillDef        = mySkillDef;
            component.utility.defaultSkillDef = mySkillDef;
        }
예제 #14
0
        static void PrimarySetup()
        {
            LanguageAPI.Add("PLAYERIMPOVERLORD_PRIMARY_VOIDSPIKES_NAME", "Void Spikes");
            LanguageAPI.Add("PLAYERIMPOVERLORD_PRIMARY_VOIDSPIKES_DESCRIPTION", "Fire 6 \"Void Spikes\", dealing <style=cIsDamage>400% damage</style> and <style=cDeath>bleed</style> on hit.");

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(FireVoidspikes));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 3;
            mySkillDef.baseRechargeInterval         = 4f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = false;
            mySkillDef.interruptPriority            = InterruptPriority.Death;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = true;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon1;
            mySkillDef.skillDescriptionToken = "PLAYERIMPOVERLORD_PRIMARY_VOIDSPIKES_DESCRIPTION";
            mySkillDef.skillName             = "PLAYERIMPOVERLORD_PRIMARY_VOIDSPIKES_NAME";
            mySkillDef.skillNameToken        = "PLAYERIMPOVERLORD_PRIMARY_VOIDSPIKES_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.primary = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.primary.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.primary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
            component.primary.baseSkill       = mySkillDef;
            component.primary.skillDef        = mySkillDef;
            component.primary.defaultSkillDef = mySkillDef;
        }
예제 #15
0
        static void SpecialSetup()
        {
            LanguageAPI.Add("PLAYERIMPOVERLORD_SPECIAL_REVERTFORM_NAME", "Revert Form");
            LanguageAPI.Add("PLAYERIMPOVERLORD_SPECIAL_REVERTFORM_DESCRIPTION", "Revert to your original form.");

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(RevertFormState));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 0.5f;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Death;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = false;
            mySkillDef.mustKeyPress          = true;
            mySkillDef.noSprint              = false;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon4;
            mySkillDef.skillDescriptionToken = "PLAYERIMPOVERLORD_SPECIAL_REVERTFORM_DESCRIPTION";
            mySkillDef.skillName             = "PLAYERIMPOVERLORD_SPECIAL_REVERTFORM_NAME";
            mySkillDef.skillNameToken        = "PLAYERIMPOVERLORD_SPECIAL_REVERTFORM_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.special = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.special.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.special.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
            component.special.baseSkill       = mySkillDef;
            component.special.skillDef        = mySkillDef;
            component.special.defaultSkillDef = mySkillDef;
        }
예제 #16
0
        static void SecondarySetup()
        {
            LanguageAPI.Add("PLAYERIMPOVERLORD_SECONDARY_GROUNDPOUND_NAME", "Ground Pound");
            LanguageAPI.Add("PLAYERIMPOVERLORD_SECONDARY_GROUNDPOUND_DESCRIPTION", "Furiously pound the ground below you six times, dealing <style=cIsDamage>400% damage</style> each hit.");

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(GroundPound));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 1f;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = false;
            mySkillDef.interruptPriority            = InterruptPriority.Death;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = true;
            mySkillDef.mustKeyPress          = true;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Assets.icon2;
            mySkillDef.skillDescriptionToken = "PLAYERIMPOVERLORD_SECONDARY_GROUNDPOUND_DESCRIPTION";
            mySkillDef.skillName             = "PLAYERIMPOVERLORD_SECONDARY_GROUNDPOUND_NAME";
            mySkillDef.skillNameToken        = "PLAYERIMPOVERLORD_SECONDARY_GROUNDPOUND_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            component.secondary = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            component.secondary.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = component.secondary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
            component.secondary.baseSkill     = mySkillDef;
            component.secondary.skillDef      = mySkillDef;
            component.utility.defaultSkillDef = mySkillDef;
        }
예제 #17
0
        private void SpecialSetup(SkillLocator skillLocator)
        {
            LanguageAPI.Add("EXECUTIONER_SPECIAL_SKILLNAME_NAME", "Execution");
            LanguageAPI.Add("EXECUTIONER_SPECIAL_SKILLNAME_DESCRIPTION", "Slam your axe, dealing varying damage depending on how many targets you hit, single targets take more damage. Killing an enemy with Execution fears nearby enemies.");

            var mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(ExampleState));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 5f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Any;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = false;
            mySkillDef.mustKeyPress          = false;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 0;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Resources.Load <Sprite>("");
            mySkillDef.skillDescriptionToken = "EXECUTIONER_SPECIAL_SKILLNAME_DESCRIPTION";
            mySkillDef.skillName             = "EXECUTIONER_SPECIAL_SKILLNAME_NAME";
            mySkillDef.skillNameToken        = "EXECUTIONER_SPECIAL_SKILLNAME_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.special = characterPrefab.AddComponent <GenericSkill>();

            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);

            skillLocator.special.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamilyVariants = skillLocator.special.skillFamily;

            skillFamilyVariants.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
예제 #18
0
        private void UtilitySetup(SkillLocator skillLocator)
        {
            LanguageAPI.Add("EXECUTIONER_UTILITY_SKILLNAME_NAME", "Crowd Dispersion");
            LanguageAPI.Add("EXECUTIONER_UTILITY_SKILLNAME_DESCRIPTION", "Boost forward and fear all enemies.");

            var mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(ExampleState));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 5f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Any;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = false;
            mySkillDef.mustKeyPress          = false;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 0;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Resources.Load <Sprite>("");
            mySkillDef.skillDescriptionToken = "EXECUTIONER_UTILITY_SKILLNAME_DESCRIPTION";
            mySkillDef.skillName             = "EXECUTIONER_UTILITY_SKILLNAME_NAME";
            mySkillDef.skillNameToken        = "EXECUTIONER_UTILITY_SKILLNAME_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.utility = characterPrefab.AddComponent <GenericSkill>();

            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);

            skillLocator.utility.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamilyVariants = skillLocator.utility.skillFamily;

            skillFamilyVariants.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
예제 #19
0
        private static void SpecialSetup(GameObject bodyPrefab)
        {
            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(ROR2_SaxtonHale.States.Rage));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 300f;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.PrioritySkill;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = false;
            mySkillDef.mustKeyPress          = false;
            mySkillDef.noSprint              = false;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0.5f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Resources.Load <Sprite>("textures/itemicons/texMaskIcon");
            mySkillDef.skillDescriptionToken = "SAXTONHALE_SPECIAL_CLASSIC_DESCRIPTION";
            mySkillDef.skillName             = "SAXTONHALE_SPECIAL_CLASSIC_NAME";
            mySkillDef.skillNameToken        = "SAXTONHALE_SPECIAL_CLASSIC_NAME";
            mySkillDef.keywordTokens         = new string[] {
                "KEYWORD_SCARED"
            };

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.special = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.special._skillFamily = newFamily;
            SkillFamily skillFamily = skillLocator.special.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
예제 #20
0
        private void ModifySkill()
        {
            LoadoutAPI.AddSkill(typeof(MirrorLaser));
            LoadoutAPI.AddSkill(typeof(SearchLaser));
            SkillDef newSkillDefRed = Object.Instantiate(drone1Skill);

            newSkillDefRed.activationState              = new SerializableEntityStateType(typeof(MirrorLaser));
            newSkillDefRed.baseRechargeInterval         = 5f;
            newSkillDefRed.beginSkillCooldownOnSkillEnd = true;
            newSkillDefRed.baseMaxStock        = 1;
            newSkillDefRed.fullRestockOnAssign = false;
            LoadoutAPI.AddSkillDef(newSkillDefRed);
            SkillLocator locator        = droneBodyRed.GetComponent <SkillLocator>();
            SkillFamily  newSkillFamily = Object.Instantiate(locator.primary.skillFamily);

            newSkillFamily.variants    = new SkillFamily.Variant[1];
            newSkillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef      = newSkillDefRed,
                unlockableDef = null,
                viewableNode  = new ViewablesCatalog.Node("", false, null)
            };
            locator.primary.SetFieldValue("_skillFamily", newSkillFamily);
            LoadoutAPI.AddSkillFamily(newSkillFamily);
            SkillDef newSkillDefGreen = Object.Instantiate(drone1Skill);

            newSkillDefGreen.activationState              = new SerializableEntityStateType(typeof(SearchLaser));
            newSkillDefGreen.baseRechargeInterval         = newSkillDefRed.baseRechargeInterval;
            newSkillDefGreen.beginSkillCooldownOnSkillEnd = newSkillDefRed.beginSkillCooldownOnSkillEnd;
            newSkillDefGreen.baseMaxStock        = newSkillDefRed.baseMaxStock;
            newSkillDefGreen.fullRestockOnAssign = newSkillDefRed.fullRestockOnAssign;
            LoadoutAPI.AddSkillDef(newSkillDefGreen);
            locator                    = droneBodyGreen.GetComponent <SkillLocator>();
            newSkillFamily             = Object.Instantiate(locator.primary.skillFamily);
            newSkillFamily.variants    = new SkillFamily.Variant[1];
            newSkillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef      = newSkillDefGreen,
                unlockableDef = null,
                viewableNode  = new ViewablesCatalog.Node("", false, null)
            };
            locator.primary.SetFieldValue("_skillFamily", newSkillFamily);
            LoadoutAPI.AddSkillFamily(newSkillFamily);
        }
예제 #21
0
        private static void SecondarySetup(GameObject bodyPrefab)
        {
            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(ROR2_SaxtonHale.States.ChargeSuperJump));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 10f;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Death;
            mySkillDef.isBullets             = false;
            mySkillDef.isCombatSkill         = false;
            mySkillDef.mustKeyPress          = true;
            mySkillDef.noSprint              = true;
            mySkillDef.rechargeStock         = 1;
            mySkillDef.requiredStock         = 1;
            mySkillDef.shootDelay            = 0.5f;
            mySkillDef.stockToConsume        = 1;
            mySkillDef.icon                  = Resources.Load <Sprite>("textures/bufficons/texWarcryBuffIcon");
            mySkillDef.skillDescriptionToken = "SAXTONHALE_SECONDARY_SUPERJUMP_DESCRIPTION";
            mySkillDef.skillName             = "SAXTONHALE_SECONDARY_SUPERJUMP_NAME";
            mySkillDef.skillNameToken        = "SAXTONHALE_SECONDARY_SUPERJUMP_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.secondary = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.secondary._skillFamily = newFamily;
            SkillFamily skillFamily = skillLocator.secondary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
예제 #22
0
        private static void SpecialSetup(GameObject bodyPrefab)
        {
            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(ROR2_Scout.States.ActivateRage));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 60f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Any;
            mySkillDef.isBullets      = false;
            mySkillDef.isCombatSkill  = false;
            mySkillDef.mustKeyPress   = false;
            mySkillDef.noSprint       = true;
            mySkillDef.rechargeStock  = 1;
            mySkillDef.requiredStock  = 1;
            mySkillDef.shootDelay     = 0.5f;
            mySkillDef.stockToConsume = 1;
            //mySkillDef.icon = Modules.Assets.icon1;
            mySkillDef.skillDescriptionToken = "SCOUT_SPECIAL_FF2_DESCRIPTION";
            mySkillDef.skillName             = "SCOUT_SPECIAL_FF2_NAME";
            mySkillDef.skillNameToken        = "SCOUT_SPECIAL_FF2_NAME";

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.special = bodyPrefab.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.special._skillFamily = newFamily;
            SkillFamily skillFamily = skillLocator.special.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef       = mySkillDef,
                unlockableName = "",
                viewableNode   = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
        private void RegisterSkillType(List <ICustomSkill> skills)
        {
            if (skills.Count > 0)
            {
                SkillFamily family = GetSkillFamily(skills);

                foreach (var skill in skills)
                {
                    LoadoutAPI.AddSkill(skill.GetType());
                }
                foreach (var variant in family.variants)
                {
                    LoadoutAPI.AddSkillDef(variant.skillDef);
                }
                LoadoutAPI.AddSkillFamily(family);

                switch (skills.First().SkillType)
                {
                case SkillType.Primary:
                    locator.primary.SetFieldValue <SkillFamily>("_skillFamily", family);
                    break;

                case SkillType.Secondary:
                    locator.secondary.SetFieldValue <SkillFamily>("_skillFamily", family);
                    break;

                case SkillType.Special:
                    locator.special.SetFieldValue <SkillFamily>("_skillFamily", family);
                    break;

                case SkillType.Utility:
                    locator.utility.SetFieldValue <SkillFamily>("_skillFamily", family);
                    break;

                case SkillType.Passive:
                    locator.passiveSkill.SetFieldValue <SkillFamily>("_skillFamily", family);
                    break;
                }
            }
        }
예제 #24
0
        internal static void CreateSkillFamilies(GameObject targetPrefab)
        {
            foreach (GenericSkill obj in targetPrefab.GetComponentsInChildren <GenericSkill>())
            {
                HenryPlugin.DestroyImmediate(obj);
            }

            SkillLocator skillLocator = targetPrefab.GetComponent <SkillLocator>();

            skillLocator.primary = targetPrefab.AddComponent <GenericSkill>();
            SkillFamily primaryFamily = ScriptableObject.CreateInstance <SkillFamily>();

            primaryFamily.variants            = new SkillFamily.Variant[0];
            skillLocator.primary._skillFamily = primaryFamily;
            LoadoutAPI.AddSkillFamily(primaryFamily);

            skillLocator.secondary = targetPrefab.AddComponent <GenericSkill>();
            SkillFamily secondaryFamily = ScriptableObject.CreateInstance <SkillFamily>();

            secondaryFamily.variants            = new SkillFamily.Variant[0];
            skillLocator.secondary._skillFamily = secondaryFamily;
            LoadoutAPI.AddSkillFamily(secondaryFamily);

            skillLocator.utility = targetPrefab.AddComponent <GenericSkill>();
            SkillFamily utilityFamily = ScriptableObject.CreateInstance <SkillFamily>();

            utilityFamily.variants            = new SkillFamily.Variant[0];
            skillLocator.utility._skillFamily = utilityFamily;
            LoadoutAPI.AddSkillFamily(utilityFamily);

            skillLocator.special = targetPrefab.AddComponent <GenericSkill>();
            SkillFamily specialFamily = ScriptableObject.CreateInstance <SkillFamily>();

            specialFamily.variants            = new SkillFamily.Variant[0];
            skillLocator.special._skillFamily = specialFamily;
            LoadoutAPI.AddSkillFamily(specialFamily);
        }
예제 #25
0
        private void CreateNewFamilies()
        {
            var primaryFamily   = ScriptableObject.CreateInstance <SkillFamily>();
            var secondaryFamily = ScriptableObject.CreateInstance <SkillFamily>();
            var utilityFamily   = ScriptableObject.CreateInstance <SkillFamily>();
            var specialFamily   = ScriptableObject.CreateInstance <SkillFamily>();

            LoadoutAPI.AddSkillFamily(primaryFamily);
            LoadoutAPI.AddSkillFamily(secondaryFamily);
            LoadoutAPI.AddSkillFamily(utilityFamily);
            LoadoutAPI.AddSkillFamily(specialFamily);

            var skillLoc = this.sniperBody.GetComponent <SkillLocator>();

            skillLoc.primary.SetFieldValue <SkillFamily>("_skillFamily", primaryFamily);
            skillLoc.secondary.SetFieldValue <SkillFamily>("_skillFamily", secondaryFamily);
            skillLoc.utility.SetFieldValue <SkillFamily>("_skillFamily", utilityFamily);
            skillLoc.special.SetFieldValue <SkillFamily>("_skillFamily", specialFamily);

            primaryFamily.variants   = Array.Empty <SkillFamily.Variant>();
            secondaryFamily.variants = Array.Empty <SkillFamily.Variant>();
            utilityFamily.variants   = Array.Empty <SkillFamily.Variant>();
            specialFamily.variants   = Array.Empty <SkillFamily.Variant>();
        }
예제 #26
0
        private void SelectablePassive()
        {
            GenericSkill primary   = this.artiSkillLocator.primary;
            GenericSkill secondary = this.artiSkillLocator.secondary;
            GenericSkill utility   = this.artiSkillLocator.utility;
            GenericSkill special   = this.artiSkillLocator.special;

            SkillFamily passiveFamily   = ScriptableObject.CreateInstance <SkillFamily>();
            SkillFamily primaryFamily   = primary.skillFamily;
            SkillFamily secondaryFamily = secondary.skillFamily;
            SkillFamily utilityFamily   = utility.skillFamily;
            SkillFamily specialFamily   = special.skillFamily;

            GenericSkill passive = primary;

            primary   = secondary;
            secondary = utility;
            utility   = special;
            special   = this.artiBody.AddComponent <GenericSkill>();

            this.artiSkillLocator.primary   = primary;
            this.artiSkillLocator.secondary = secondary;
            this.artiSkillLocator.utility   = utility;
            this.artiSkillLocator.special   = special;

            PassiveSkillDef envSuit            = ScriptableObject.CreateInstance <PassiveSkillDef>();
            PassiveSkillDef elementalIntensity = ScriptableObject.CreateInstance <PassiveSkillDef>();

            envSuit.skillNameToken        = this.artiSkillLocator.passiveSkill.skillNameToken;
            envSuit.skillDescriptionToken = this.artiSkillLocator.passiveSkill.skillDescriptionToken;
            envSuit.icon = this.artiSkillLocator.passiveSkill.icon;

            envSuit.stateMachineDefaults = new PassiveSkillDef.StateMachineDefaults[1]
            {
                new PassiveSkillDef.StateMachineDefaults
                {
                    machineName        = "Body",
                    initalState        = new EntityStates.SerializableEntityStateType(typeof(EntityStates.Mage.MageCharacterMain)),
                    mainState          = new EntityStates.SerializableEntityStateType(typeof(EntityStates.Mage.MageCharacterMain)),
                    defaultInitalState = new EntityStates.SerializableEntityStateType(typeof(EntityStates.GenericCharacterMain)),
                    defaultMainState   = new EntityStates.SerializableEntityStateType(typeof(EntityStates.GenericCharacterMain))
                }
            };

            elementalIntensity.skillNameToken        = "REIN_ALTARTI_PASSIVE_NAME";
            elementalIntensity.skillDescriptionToken = "REIN_ALTARTI_PASSIVE_DESC";
            Texture2D tex = Tools.LoadTexture2D(Rein.Properties.Resources.passive_2__1_);

            elementalIntensity.icon = Sprite.Create(tex, new Rect(0f, 0f, tex.width, tex.height), envSuit.icon.pivot);

            elementalIntensity.stateMachineDefaults = new PassiveSkillDef.StateMachineDefaults[1]
            {
                new PassiveSkillDef.StateMachineDefaults
                {
                    machineName        = "Jet",
                    initalState        = new EntityStates.SerializableEntityStateType(typeof(States.Main.AltArtiPassive)),
                    mainState          = new EntityStates.SerializableEntityStateType(typeof(States.Main.AltArtiPassive)),
                    defaultInitalState = new EntityStates.SerializableEntityStateType(typeof(EntityStates.Idle)),
                    defaultMainState   = new EntityStates.SerializableEntityStateType(typeof(EntityStates.Idle))
                }
            };


            elementalIntensity.applyVisuals = (model) =>
            {
                CharacterModel.RendererInfo[] renderInfos = model.baseRendererInfos;
                if (renderInfos.Length == 10)
                {
                    ((SkinnedMeshRenderer)model.baseRendererInfos[9].renderer).sharedMesh = this.artiChangedMesh;
                    model.baseRendererInfos[2].renderer.gameObject.SetActive(false);
                    model.baseRendererInfos[3].renderer.gameObject.SetActive(false);
                    model.baseRendererInfos[5].renderer.gameObject.SetActive(false);
                    model.baseRendererInfos[6].renderer.gameObject.SetActive(false);
                }
                else
                {
                    ((SkinnedMeshRenderer)model.baseRendererInfos[3].renderer).sharedMesh = this.artiChangedMesh;
                    model.baseRendererInfos[0].renderer.gameObject.SetActive(false);
                    model.baseRendererInfos[1].renderer.gameObject.SetActive(false);
                }
            };

            elementalIntensity.removeVisuals = (model) =>
            {
                CharacterModel.RendererInfo[] renderInfos = model.baseRendererInfos;
                if (renderInfos.Length == 10)
                {
                    try
                    {
                        ((SkinnedMeshRenderer)model.baseRendererInfos[9].renderer).sharedMesh = this.artiDefaultMesh;
                    } catch { }
                    model.baseRendererInfos[2].renderer.gameObject.SetActive(true);
                    model.baseRendererInfos[3].renderer.gameObject.SetActive(true);
                    model.baseRendererInfos[5].renderer.gameObject.SetActive(true);
                    model.baseRendererInfos[6].renderer.gameObject.SetActive(true);
                }
                else
                {
                    ((SkinnedMeshRenderer)model.baseRendererInfos[3].renderer).sharedMesh = this.artiDefaultMesh;
                    model.baseRendererInfos[0].renderer.gameObject.SetActive(true);
                    model.baseRendererInfos[1].renderer.gameObject.SetActive(true);
                }
            };

            passiveFamily.variants = new SkillFamily.Variant[2]
            {
                new SkillFamily.Variant
                {
                    skillDef       = envSuit,
                    unlockableName = "",
                    viewableNode   = new ViewablesCatalog.Node("envSuit", false)
                },
                new SkillFamily.Variant
                {
                    skillDef       = elementalIntensity,
                    unlockableName = "",
                    viewableNode   = new ViewablesCatalog.Node("elementalIntensity", false)
                }
            };

            _ = LoadoutAPI.AddSkillDef(envSuit);
            _ = LoadoutAPI.AddSkillDef(elementalIntensity);
            _ = LoadoutAPI.AddSkillFamily(passiveFamily);

            _ = this.addedSkills.Add(envSuit);
            _ = this.addedSkills.Add(elementalIntensity);
            _ = this.addedSkillFamilies.Add(passiveFamily);

            passive.SetFieldValue <SkillFamily>("_skillFamily", passiveFamily);
            primary.SetFieldValue <SkillFamily>("_skillFamily", primaryFamily);
            secondary.SetFieldValue <SkillFamily>("_skillFamily", secondaryFamily);
            utility.SetFieldValue <SkillFamily>("_skillFamily", utilityFamily);
            special.SetFieldValue <SkillFamily>("_skillFamily", specialFamily);
        }
        private void passivesetup()
        {
            GenericSkill skill = myCharacter.AddComponent <GenericSkill>();

            SkillFamily passiveFamily = ScriptableObject.CreateInstance <SkillFamily>();

            skill.SetFieldValue <SkillFamily>("_skillFamily", passiveFamily);
            passiveFamily.variants = new SkillFamily.Variant[4];
            LoadoutAPI.AddSkillFamily(passiveFamily);
            SkillLocator skillLocator = myCharacter.GetComponent <SkillLocator>();

            {
                SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();
                mySkillDef.skillDescriptionToken = "Start off with some movement items";
                mySkillDef.skillName             = "VT_SCAVSTASHMOVEMENT_MISC";
                mySkillDef.skillNameToken        = "Scavenger's Stash - Movement";
                mySkillDef.activationState       = new SerializableEntityStateType(typeof(EntityStates.BaseState));

                LoadoutAPI.AddSkillDef(mySkillDef);
                GameObject gameObject = myCharacter;

                passiveFamily.variants[1] =
                    new SkillFamily.Variant
                {
                    skillDef       = mySkillDef,
                    unlockableName = "",

                    viewableNode = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
                };
            }
            {
                SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();
                mySkillDef.skillDescriptionToken = "Start off with some attack speed items";
                mySkillDef.skillName             = "VT_SCAVSTASHATTACKSPEED_MISC";
                mySkillDef.skillNameToken        = "Scavenger's Stash - Attack speed";
                mySkillDef.activationState       = new SerializableEntityStateType(typeof(EntityStates.BaseState));

                LoadoutAPI.AddSkillDef(mySkillDef);
                GameObject gameObject = myCharacter;

                passiveFamily.variants[2] =
                    new SkillFamily.Variant
                {
                    skillDef       = mySkillDef,
                    unlockableName = "",

                    viewableNode = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
                };
            }
            {
                SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();
                mySkillDef.skillDescriptionToken = "Start off with some healing items";
                mySkillDef.skillName             = "VT_SCAVSTASHHEALING_MISC";
                mySkillDef.skillNameToken        = "Scavenger's Stash - Healing";
                mySkillDef.activationState       = new SerializableEntityStateType(typeof(EntityStates.BaseState));

                LoadoutAPI.AddSkillDef(mySkillDef);
                GameObject gameObject = myCharacter;

                passiveFamily.variants[0] =
                    new SkillFamily.Variant
                {
                    skillDef       = mySkillDef,
                    unlockableName = "",

                    viewableNode = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
                };
            }
            {
                SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();
                mySkillDef.skillDescriptionToken = "Start off with some lunar items";
                mySkillDef.skillName             = "VT_SCAVSTASHLUNAR_MISC";
                mySkillDef.skillNameToken        = "Scavenger's Stash - Devotee";
                mySkillDef.activationState       = new SerializableEntityStateType(typeof(EntityStates.BaseState));

                LoadoutAPI.AddSkillDef(mySkillDef);
                GameObject gameObject = myCharacter;

                passiveFamily.variants[3] =
                    new SkillFamily.Variant
                {
                    skillDef       = mySkillDef,
                    unlockableName = "",

                    viewableNode = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
                };
            }


            PlayerCharacterMasterController.onPlayerAdded += PlayerCharacterMasterController_onPlayerAdded;

            //PlayerCharacterMasterController.onPlayerAdded += (master) => { master.master.onBodyDeath.AddListener(() => {}); };
        }
예제 #28
0
        public static void SkillSetup(GameObject sx)
        {
            foreach (GenericSkill obj in sx.GetComponentsInChildren <GenericSkill>())
            {
                DiggerPlugin.DestroyImmediate(obj);
            }

            SkillLocator skillLocator = sx.GetComponentInChildren <SkillLocator>();

            SkillDef mySkillDef = ScriptableObject.CreateInstance <SkillDef>();

            mySkillDef.activationState            = new SerializableEntityStateType(typeof(EntityStates.Direseeker.ChargeUltraFireball));
            mySkillDef.activationStateMachineName = "Weapon";
            mySkillDef.baseMaxStock                 = 2;
            mySkillDef.baseRechargeInterval         = 8f;
            mySkillDef.beginSkillCooldownOnSkillEnd = true;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Any;
            mySkillDef.resetCooldownTimerOnUse      = false;
            mySkillDef.isCombatSkill                = true;
            mySkillDef.mustKeyPress                 = false;
            mySkillDef.cancelSprintingOnActivation  = false;
            mySkillDef.rechargeStock                = 1;
            mySkillDef.requiredStock                = 1;
            mySkillDef.stockToConsume               = 1;

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.primary = sx.AddComponent <GenericSkill>();
            SkillFamily newFamily = ScriptableObject.CreateInstance <SkillFamily>();

            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.primary.SetFieldValue("_skillFamily", newFamily);
            SkillFamily skillFamily = skillLocator.primary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef     = mySkillDef,
                viewableNode = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };

            mySkillDef = ScriptableObject.CreateInstance <SkillDef>();
            mySkillDef.activationState            = new SerializableEntityStateType(typeof(EntityStates.LemurianBruiserMonster.Flamebreath));
            mySkillDef.activationStateMachineName = "Body";
            mySkillDef.baseMaxStock                 = 1;
            mySkillDef.baseRechargeInterval         = 0f;
            mySkillDef.beginSkillCooldownOnSkillEnd = false;
            mySkillDef.canceledFromSprinting        = false;
            mySkillDef.fullRestockOnAssign          = true;
            mySkillDef.interruptPriority            = InterruptPriority.Any;
            mySkillDef.resetCooldownTimerOnUse      = false;
            mySkillDef.isCombatSkill                = true;
            mySkillDef.mustKeyPress                 = false;
            mySkillDef.cancelSprintingOnActivation  = false;
            mySkillDef.rechargeStock                = 1;
            mySkillDef.requiredStock                = 1;
            mySkillDef.stockToConsume               = 0;

            LoadoutAPI.AddSkillDef(mySkillDef);

            skillLocator.secondary = sx.AddComponent <GenericSkill>();
            newFamily          = ScriptableObject.CreateInstance <SkillFamily>();
            newFamily.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily);
            skillLocator.secondary.SetFieldValue("_skillFamily", newFamily);
            skillFamily = skillLocator.secondary.skillFamily;

            skillFamily.variants[0] = new SkillFamily.Variant
            {
                skillDef     = mySkillDef,
                viewableNode = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)
            };
        }
예제 #29
0
        public static void Initialize()
        {
            #region Weak Stan Fragment
            weakStanFragmentMaster = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/charactermasters/JellyfishMaster"), "WeakStanFragmentMaster", true);
            weakStanFragmentBody   = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/characterbodies/JellyfishBody"), "WeakStanFragmentBody", true);
            if (!weakStanFragmentMaster.GetComponent <NetworkIdentity>())
            {
                weakStanFragmentMaster.AddComponent <NetworkIdentity>();
            }
            if (!weakStanFragmentBody.GetComponent <NetworkIdentity>())
            {
                weakStanFragmentBody.AddComponent <NetworkIdentity>();
            }
            CharacterBody weakStanBody         = weakStanFragmentBody.GetComponent <CharacterBody>();
            SkillLocator  weakStanSkills       = weakStanFragmentBody.GetComponent <SkillLocator>();
            var           weakStanStateMachine = weakStanFragmentBody.GetComponent <EntityStateMachine>();
            weakStanBody.baseNameToken    = "WEAKSTANFRAGMENT_NAME";
            weakStanBody.portraitIcon     = Assets.stanFace.texture;
            weakStanBody.baseMaxHealth    = 200f;
            weakStanBody.levelMaxHealth   = 30f;
            weakStanBody.baseMoveSpeed    = 20f;
            weakStanBody.baseAcceleration = 30f;

            //Replaces default deathstate to prevent errors.
            LoadoutAPI.AddSkill(typeof(States.SummonStates.WeakStanDeathState));
            weakStanFragmentBody.GetComponent <CharacterDeathBehavior>().deathState = new SerializableEntityStateType(typeof(States.SummonStates.WeakStanDeathState));

            //Sets custom non-ability entitystates.
            LoadoutAPI.AddSkill(typeof(States.SummonStates.WeakStanSpawnState));
            LoadoutAPI.AddSkill(typeof(States.SummonStates.WeakStanMain));
            //StanWorshipperPlugin.entityStateTypes.Add(typeof(States.SummonStates.WeakStanSpawnState));
            //StanWorshipperPlugin.entityStateTypes.Add(typeof(States.SummonStates.WeakStanMain));
            weakStanStateMachine.initialStateType = new SerializableEntityStateType(typeof(States.SummonStates.WeakStanSpawnState));
            weakStanStateMachine.mainStateType    = new SerializableEntityStateType(typeof(States.SummonStates.WeakStanMain));

            //Disable default renderer and replace with sprite renderer for Stan sprite.
            weakStanFragmentBody.GetComponentInChildren <SkinnedMeshRenderer>().gameObject.SetActive(false);
            SpriteRenderer weakStanSpriteRenderer = weakStanFragmentBody.AddComponent <SpriteRenderer>();
            weakStanSpriteRenderer.sprite = Assets.stanFace;

            //Adds a red light to the body.
            Light weakStanLight = weakStanFragmentBody.AddComponent <Light>();
            weakStanLight.type       = LightType.Point;
            weakStanLight.range      = 10f;
            weakStanLight.renderMode = LightRenderMode.Auto;
            weakStanLight.intensity  = 100f;
            weakStanLight.color      = Color.red;

            //Remove the default explode skill.
            foreach (GenericSkill i in weakStanBody.GetComponentsInChildren <GenericSkill>())
            {
                DestroyImmediate(i);
            }
            var passive = weakStanSkills.passiveSkill;
            passive.enabled               = true;
            passive.skillNameToken        = "";
            passive.skillDescriptionToken = "";
            passive.icon = null;


            //Adds the body to the character master.
            weakStanFragmentMaster.GetComponent <CharacterMaster>().bodyPrefab = weakStanFragmentBody;

            BaseAI weakStanBaseAI = weakStanFragmentMaster.GetComponent <BaseAI>();
            weakStanBaseAI.neverRetaliateFriendlies = true;
            #endregion

            #region Strong Stan Fragment
            strongStanFragmentMaster = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/charactermasters/RoboBallBossMaster"), "StrongStanFragmentMaster", true);
            strongStanFragmentBody   = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/characterbodies/RoboBallBossBody"), "StrongStanFragmentBody", true);
            if (!strongStanFragmentMaster.GetComponent <NetworkIdentity>())
            {
                strongStanFragmentMaster.AddComponent <NetworkIdentity>();
            }
            if (!strongStanFragmentBody.GetComponent <NetworkIdentity>())
            {
                strongStanFragmentBody.AddComponent <NetworkIdentity>();
            }
            CharacterBody strongStanBody         = strongStanFragmentBody.GetComponent <CharacterBody>();
            SkillLocator  strongStanSkills       = strongStanFragmentBody.GetComponent <SkillLocator>();
            var           strongStanStateMachine = strongStanFragmentBody.GetComponent <EntityStateMachine>();
            strongStanBody.baseNameToken = "STRONGSTANFRAGMENT_NAME";
            strongStanBody.portraitIcon  = Assets.stanFace2.texture;
            strongStanBody.baseMoveSpeed = 1f;

            //Remove default DeathState to prevent weird errors/unwanted effects.
            LoadoutAPI.AddSkill(typeof(States.SummonStates.StrongStanDeathState));
            //StanWorshipperPlugin.entityStateTypes.Add(typeof(States.SummonStates.StrongStanDeathState));
            strongStanFragmentBody.GetComponent <CharacterDeathBehavior>().deathState = new SerializableEntityStateType(typeof(States.SummonStates.StrongStanDeathState));

            //Sets custom non-ability entitystates.
            LoadoutAPI.AddSkill(typeof(States.SummonStates.StrongStanSpawnState));
            LoadoutAPI.AddSkill(typeof(States.SummonStates.StrongStanMain));
            //StanWorshipperPlugin.entityStateTypes.Add(typeof(States.SummonStates.StrongStanSpawnState));
            //StanWorshipperPlugin.entityStateTypes.Add(typeof(States.SummonStates.StrongStanMain));
            strongStanStateMachine.initialStateType = new SerializableEntityStateType(typeof(States.SummonStates.StrongStanSpawnState));
            strongStanStateMachine.mainStateType    = new SerializableEntityStateType(typeof(States.SummonStates.StrongStanMain));

            //Remove default render meshes and replace with sprite mesh for strongstan.
            foreach (SkinnedMeshRenderer i in strongStanFragmentBody.GetComponentsInChildren <SkinnedMeshRenderer>())
            {
                i.gameObject.SetActive(false);
            }
            SpriteRenderer strongStanSpriteRenderer = strongStanFragmentBody.AddComponent <SpriteRenderer>();
            strongStanSpriteRenderer.sprite = Assets.stanFace2Large;

            //Add red light to strongstan.
            Light strongStanLight = strongStanFragmentBody.AddComponent <Light>();
            strongStanLight.type       = LightType.Point;
            strongStanLight.range      = 8f;
            strongStanLight.renderMode = LightRenderMode.Auto;
            strongStanLight.intensity  = 75f;
            strongStanLight.color      = Color.red;

            //Remove the solus boss templates default utility(spawn probes) and ultimate(aoe slow rape).
            foreach (GenericSkill i in strongStanBody.GetComponentsInChildren <GenericSkill>())
            {
                DestroyImmediate(i);
            }
            //Define the strong stan fragmen's skilldef and add it to him

            var chargePoopBlast = ScriptableObject.CreateInstance <SkillDef>();
            chargePoopBlast.activationState            = new SerializableEntityStateType(typeof(States.SummonStates.ChargePoopBlast));
            chargePoopBlast.activationStateMachineName = "Weapon";
            chargePoopBlast.baseMaxStock                 = 1;
            chargePoopBlast.baseRechargeInterval         = 0f;
            chargePoopBlast.beginSkillCooldownOnSkillEnd = true;
            chargePoopBlast.canceledFromSprinting        = false;
            chargePoopBlast.fullRestockOnAssign          = true;
            chargePoopBlast.interruptPriority            = InterruptPriority.Any;
            chargePoopBlast.isCombatSkill                = true;
            chargePoopBlast.mustKeyPress                 = false;
            chargePoopBlast.cancelSprintingOnActivation  = true;
            chargePoopBlast.rechargeStock                = 1;
            chargePoopBlast.requiredStock                = 1;
            chargePoopBlast.stockToConsume               = 1;
            chargePoopBlast.icon = null;
            chargePoopBlast.skillDescriptionToken = "";
            chargePoopBlast.skillName             = "";
            chargePoopBlast.skillNameToken        = "";
            LoadoutAPI.AddSkillDef(chargePoopBlast);
            StanWorshipperPlugin.skillDefs.Add(chargePoopBlast);
            strongStanSkills.primary = strongStanFragmentBody.AddComponent <GenericSkill>();
            SkillFamily newFamily2 = ScriptableObject.CreateInstance <SkillFamily>();
            newFamily2.variants = new SkillFamily.Variant[1];
            LoadoutAPI.AddSkillFamily(newFamily2);
            strongStanSkills.primary.SetFieldValue("_skillFamily", newFamily2);
            SkillFamily skillFamily2 = strongStanSkills.primary.skillFamily;
            skillFamily2.variants[0] = new SkillFamily.Variant
            {
                skillDef = chargePoopBlast,
            };

            //Actually adds the body defined above to the strongstan character master.
            strongStanFragmentMaster.GetComponent <CharacterMaster>().bodyPrefab = strongStanFragmentBody;

            BaseAI strongStanBaseAI = strongStanFragmentMaster.GetComponent <BaseAI>();
            strongStanBaseAI.aimVectorMaxSpeed        = 500f;
            strongStanBaseAI.aimVectorDampTime        = 0.1f;
            strongStanBaseAI.enemyAttentionDuration   = 0.25f;
            strongStanBaseAI.fullVision               = true;
            strongStanBaseAI.neverRetaliateFriendlies = true;
            #endregion

            StanWorshipperPlugin.characterBodies.Add(strongStanFragmentBody);
            StanWorshipperPlugin.characterBodies.Add(weakStanFragmentBody);
            StanWorshipperPlugin.characterMasters.Add(strongStanFragmentMaster);
            StanWorshipperPlugin.characterMasters.Add(weakStanFragmentMaster);
        }
예제 #30
0
        public static void Initialize()
        {
            //Primary
            var poopSlinger = ScriptableObject.CreateInstance <SkillDef>();

            poopSlinger.activationState            = new SerializableEntityStateType(typeof(States.Poopslinger));
            poopSlinger.activationStateMachineName = "Weapon";
            poopSlinger.baseMaxStock                 = 1;
            poopSlinger.baseRechargeInterval         = 0f;
            poopSlinger.beginSkillCooldownOnSkillEnd = true;
            poopSlinger.canceledFromSprinting        = false;
            poopSlinger.fullRestockOnAssign          = true;
            poopSlinger.interruptPriority            = InterruptPriority.Any;
            poopSlinger.isCombatSkill                = true;
            poopSlinger.mustKeyPress                 = false;
            poopSlinger.rechargeStock                = 1;
            poopSlinger.requiredStock                = 1;
            poopSlinger.canceledFromSprinting        = false;
            poopSlinger.stockToConsume               = 1;
            poopSlinger.icon = Assets.icon1;
            poopSlinger.skillDescriptionToken = "STANWORSHIPPER_SLOT1_PRIMARY_DESCRIPTION";
            poopSlinger.skillName             = "STANWORSHIPPER_SLOT1_PRIMARY_NAME";
            poopSlinger.skillNameToken        = "STANWORSHIPPER_SLOT1_PRIMARY_NAME";

            //Secondary
            var summonMinor = ScriptableObject.CreateInstance <SkillDef>();

            summonMinor.activationState            = new SerializableEntityStateType(typeof(States.SummonMinor));
            summonMinor.activationStateMachineName = "Weapon";
            summonMinor.baseMaxStock                 = 1;
            summonMinor.baseRechargeInterval         = 25f;
            summonMinor.beginSkillCooldownOnSkillEnd = true;
            summonMinor.canceledFromSprinting        = false;
            summonMinor.fullRestockOnAssign          = true;
            summonMinor.interruptPriority            = InterruptPriority.Skill;
            summonMinor.isCombatSkill                = true;
            summonMinor.mustKeyPress                 = false;
            summonMinor.cancelSprintingOnActivation  = false;
            summonMinor.rechargeStock                = 1;
            summonMinor.requiredStock                = 1;
            summonMinor.stockToConsume               = 1;
            summonMinor.icon = Assets.icon2;
            summonMinor.skillDescriptionToken = "STANWORSHIPPER_SLOT2_SECONDARY_DESCRIPTION";
            summonMinor.skillName             = "STANWORSHIPPER_SLOT2_SECONDARY_NAME";
            summonMinor.skillNameToken        = "STANWORSHIPPER_SLOT2_SECONDARY_NAME";

            //Utility
            var sacrifice = ScriptableObject.CreateInstance <SkillDef>();

            sacrifice.activationState            = new SerializableEntityStateType(typeof(States.Sacrifice));
            sacrifice.activationStateMachineName = "Sacrifice";
            sacrifice.baseMaxStock                 = 1;
            sacrifice.baseRechargeInterval         = 16f;
            sacrifice.beginSkillCooldownOnSkillEnd = true;
            sacrifice.canceledFromSprinting        = false;
            sacrifice.fullRestockOnAssign          = true;
            sacrifice.interruptPriority            = InterruptPriority.Skill;
            sacrifice.isCombatSkill                = false;
            sacrifice.mustKeyPress                 = false;
            sacrifice.cancelSprintingOnActivation  = false;
            sacrifice.rechargeStock                = 1;
            sacrifice.requiredStock                = 1;
            sacrifice.stockToConsume               = 1;
            sacrifice.icon = Assets.icon3;
            sacrifice.skillDescriptionToken = "STANWORSHIPPER_SLOT3_UTILITY_DESCRIPTION";
            sacrifice.skillName             = "STANWORSHIPPER_SLOT3_UTILITY_NAME";
            sacrifice.skillNameToken        = "STANWORSHIPPER_SLOT3_UTILITY_NAME";

            //Ultimate
            var summonMajor = ScriptableObject.CreateInstance <SkillDef>();

            summonMajor.activationState            = new SerializableEntityStateType(typeof(States.SummonMajor));
            summonMajor.activationStateMachineName = "Weapon";
            summonMajor.baseMaxStock                 = 1;
            summonMajor.baseRechargeInterval         = 50f;
            summonMajor.beginSkillCooldownOnSkillEnd = true;
            summonMajor.canceledFromSprinting        = false;
            summonMajor.fullRestockOnAssign          = false;
            summonMajor.interruptPriority            = InterruptPriority.Skill;
            summonMajor.isCombatSkill                = true;
            summonMajor.mustKeyPress                 = false;
            summonMajor.cancelSprintingOnActivation  = false;
            summonMajor.rechargeStock                = 1;
            summonMajor.requiredStock                = 1;
            summonMajor.stockToConsume               = 1;
            summonMajor.icon = Assets.icon4;
            summonMajor.skillDescriptionToken = "STANWORSHIPPER_SLOT4_ULTIMATE_DESCRIPTION";
            summonMajor.skillName             = "STANWORSHIPPER_SLOT4_ULTIMATE_NAME";
            summonMajor.skillNameToken        = "STANWORSHIPPER_SLOT4_ULTIMATE_NAME";

            LoadoutAPI.AddSkillDef(poopSlinger);
            LoadoutAPI.AddSkillDef(summonMinor);
            LoadoutAPI.AddSkillDef(sacrifice);
            LoadoutAPI.AddSkillDef(summonMajor);

            var skillLocator = Character.stanWorshipperBody.GetComponent <SkillLocator>();

            //Passive
            skillLocator.passiveSkill.enabled               = true;
            skillLocator.passiveSkill.skillNameToken        = "STANWORSHIPPER_PASSIVE_NAME";
            skillLocator.passiveSkill.skillDescriptionToken = "STANWORSHIPPER_PASSIVE_DESCRIPTION";
            //This is f*****g retarded and doesn't even work but I'm too lazy to add to the asset bundle rn.
            Texture2D texture = Resources.Load <Texture2D>("textures/shrinesymbols/texShrineBloodSymbol");
            Sprite    sprite  = Sprite.Create(texture, new Rect(new Vector2(0, 0), new Vector2(1, 1)), Vector2.zero, 100f);

            skillLocator.passiveSkill.icon = sprite;

            //Primary
            var skillFamily1 = skillLocator.primary.skillFamily;

            skillFamily1.variants = new SkillFamily.Variant[1]; // substitute 1 for the number of skill variants you are implementing

            skillFamily1.variants[0] = new SkillFamily.Variant
            {
                skillDef     = poopSlinger,
                viewableNode = new ViewablesCatalog.Node(poopSlinger.skillNameToken, false, null)
            };
            LoadoutAPI.AddSkillFamily(skillFamily1);

            //Secondary
            var skillFamily2 = skillLocator.secondary.skillFamily;

            skillFamily2.variants = new SkillFamily.Variant[1]; // substitute 1 for the number of skill variants you are implementing

            skillFamily2.variants[0] = new SkillFamily.Variant
            {
                skillDef     = summonMinor,
                viewableNode = new ViewablesCatalog.Node(summonMinor.skillNameToken, false, null)
            };
            LoadoutAPI.AddSkillFamily(skillFamily2);

            //Utility
            var skillFamily3 = skillLocator.utility.skillFamily;

            skillFamily3.variants = new SkillFamily.Variant[1]; // substitute 1 for the number of skill variants you are implementing

            skillFamily3.variants[0] = new SkillFamily.Variant
            {
                skillDef     = sacrifice,
                viewableNode = new ViewablesCatalog.Node(sacrifice.skillNameToken, false, null)
            };
            LoadoutAPI.AddSkillFamily(skillFamily3);

            //Ultimate
            var skillFamily4 = skillLocator.special.skillFamily;

            skillFamily4.variants = new SkillFamily.Variant[1]; // substitute 1 for the number of skill variants you are implementing

            skillFamily4.variants[0] = new SkillFamily.Variant
            {
                skillDef     = summonMajor,
                viewableNode = new ViewablesCatalog.Node(summonMajor.skillNameToken, false, null)
            };
            LoadoutAPI.AddSkillFamily(skillFamily4);
        }