public void Awake()
        {
            string pluginfolder = System.IO.Path.GetDirectoryName(GetType().Assembly.Location);

            //asset bundle to load
            string assetBundle = "talox";

            //prefab location inside asset bundle
            string prefab = "assets/prefabs/taloxbody.prefab";

            //load assetbundle then load the prefab
            _TaloxBody = AssetBundle.LoadFromFile($"{pluginfolder}/{assetBundle}").LoadAsset <GameObject>(prefab);

            R2API.SurvivorAPI.SurvivorCatalogReady += (s, e) =>
            {
                var survivor = new SurvivorDef
                {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("AssassinBody"),
                    descriptionToken = "TALOX_DESCRIPTION",
                    displayPrefab    = _TaloxBody,
                    primaryColor     = new Color(0.8039216f, 0.482352942f, 0.843137264f),
                    unlockableName   = ""
                };

                R2API.SurvivorAPI.SurvivorDefinitions.Add(survivor);
            };
        }
        private void Awake()
        {
            float healthMultiplier;
            float damageMultiplier;

            float.TryParse(base.Config.Wrap("Settings", "healthMultiplier", "", "0.1").Value, out healthMultiplier);
            float.TryParse(base.Config.Wrap("Settings", "damageMultiplier", "", "5").Value, out damageMultiplier);

            Chat.AddMessage("Glass Artifact by lukeshep42 has loaded.");
            SurvivorAPI.SurvivorCatalogReady += delegate
            {
                foreach (SurvivorDef s in SurvivorAPI.SurvivorDefinitions)
                {
                    CharacterBody c = s.bodyPrefab.GetComponent <CharacterBody>();
                    c.baseMaxHealth  *= (float)healthMultiplier;
                    c.levelMaxHealth *= (float)healthMultiplier;
                    c.baseDamage     *= (float)damageMultiplier;
                    c.levelDamage    *= (float)damageMultiplier;
                }
                BodyCatalog.FindBodyPrefab("EngiTurretBody").GetComponent <CharacterBody>().baseMaxHealth  *= (float)healthMultiplier;
                BodyCatalog.FindBodyPrefab("EngiTurretBody").GetComponent <CharacterBody>().levelMaxHealth *= (float)healthMultiplier;
                BodyCatalog.FindBodyPrefab("EngiTurretBody").GetComponent <CharacterBody>().baseDamage     *= (float)damageMultiplier;
                BodyCatalog.FindBodyPrefab("EngiTurretBody").GetComponent <CharacterBody>().levelDamage    *= (float)damageMultiplier;
            };
        }
Exemple #3
0
        //The Awake() method is run at the very start when the game is initialized.
        public void Awake()
        {
            //Here we are subscribing to the SurvivorCatalogReady event, which is run when the subscriber catalog can be modified.
            //We insert Bandit as a new character here, which is then automatically added to the internal game catalog and reconstructed.
            R2API.SurvivorAPI.SurvivorCatalogReady += (s, e) =>
            {
                var survivor = new SurvivorDef
                {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("BanditBody"),
                    descriptionToken = "BANDIT_DESCRIPTION",
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/Characters/BanditDisplay"),
                    primaryColor     = new Color(0.8039216f, 0.482352942f, 0.843137264f),
                    unlockableName   = ""
                };

                var skill = survivor.bodyPrefab.GetComponent <SkillLocator>();

                skill.primary.skillNameToken        = "Blast";
                skill.primary.skillDescriptionToken = "Fire a powerful slug for <style=cIsDamage>150% damage</style>.";

                skill.secondary.skillNameToken        = "Lights Out";
                skill.secondary.skillDescriptionToken = "Take aim for a headshot, dealing <style=cIsDamage> 600 % damage </style>.If the ability <style=cIsDamage> kills an enemy </style>, the Bandit's <style=cIsUtility>Cooldowns are all reset to 0</style>.";

                skill.utility.skillNameToken        = "Smokebomb";
                skill.utility.skillDescriptionToken = "Turn invisible for <style=cIsDamage>3 seconds</style>, gaining <style=cIsUtility>increased movement speed</style>.";

                skill.special.skillNameToken        = "Thermite Toss";
                skill.special.skillDescriptionToken = "Fire off a burning Thermite grenade, dealing <style=cIsDamage>damage over time</style>.";

                R2API.SurvivorAPI.SurvivorDefinitions.Insert(3, survivor);
            };
        }
 public void Awake()
 {
     #region survivor
     SurvivorAPI.SurvivorCatalogReady += delegate(object s, EventArgs e)
     {
         {
             var         bandit = BodyCatalog.FindBodyPrefab("BanditBody");
             SurvivorDef item   = new SurvivorDef
             {
                 bodyPrefab       = bandit,
                 descriptionToken = "test",
                 displayPrefab    = Resources.Load <GameObject>("prefabs/characterbodies/banditbody").GetComponent <ModelLocator>().modelTransform.gameObject,
                 primaryColor     = new Color(0.87890625f, 0.662745098f, 0.3725490196f),
                 unlockableName   = "",
                 survivorIndex    = SurvivorIndex.Count
             };
             #region skills
             #if skills
             Primary.SetPrimary(bandit);
             PrepSecondary.SetSecondary(bandit);
             Banditspecial(bandit);
             EntityStates.Bandit.Utility.SetUtility(bandit);
             #endif
             #endregion skills
             SkillManagement.banditskilldescriptions(bandit);
             SurvivorAPI.AddSurvivor(item);
         }
     };
     #endregion
     #region timer
     #if timer
     Timer.Init();
     #endif
     #endregion
 }
Exemple #5
0
        public void Awake()
        {
            On.RoR2.EngiMineController.Start += (orig, self) =>
            {
                self.explosionRadius = 25;//4.1x size
                self.GetComponent <ProjectileDamage>().damage *= 5;
                self.primingDelay = 1f;
                orig(self);
            };

            On.RoR2.EngiMineController.PrepForExplosion += (orig, self) =>
            {
                self.detatchForce *= 2;

                self.proximityDetector.gameObject.transform.localScale = Vector3.one * 16f;
                orig(self);
            };


            SurvivorAPI.SurvivorCatalogReady += delegate(object s, EventArgs e)
            {
                BodyCatalog.FindBodyPrefab("EngiBody").GetComponent <SkillLocator>().secondary.baseMaxStock          = 2;
                BodyCatalog.FindBodyPrefab("EngiBody").GetComponent <SkillLocator>().secondary.baseRechargeInterval *= 4;
                BodyCatalog.FindBodyPrefab("EngiBody").GetComponent <SkillLocator>().secondary.skillDescriptionToken = "Place a mine that deals <style=cIsDamage>1500% damage</style> when an enemy walks nearby. Can place up to 10.";
            };
        }
Exemple #6
0
        public void Awake()
        {
            SurvivorAPI.SurvivorCatalogReady += delegate(object s, EventArgs e)
            {
                BodyCatalog.FindBodyPrefab("MercBody").GetComponent <SkillLocator>().special.baseRechargeInterval  = 20;
                BodyCatalog.FindBodyPrefab("MercBody").GetComponent <SkillLocator>().special.skillNameToken        = "Shadow Clone";
                BodyCatalog.FindBodyPrefab("MercBody").GetComponent <SkillLocator>().special.skillDescriptionToken = "Summon two exact copies of yourself that <style=cIsUtility>inherit all your items</style> and live for 8 seconds ";
            };

            On.EntityStates.Merc.EvisDash.OnEnter += (orig, self) =>
            {
                self.outer.commonComponents.characterBody.AddTimedBuff(BuffIndex.Cloak, 2.5f);
                if (self.outer.commonComponents.characterBody.isPlayerControlled)
                {
                    var networkClient = NetworkClient.allClients.FirstOrDefault();
                    if (networkClient != null)
                    {
                        networkClient.RegisterHandlerSafe(HandleId, HandleDropItem);
                    }
                    var user = LocalUserManager.GetFirstLocalUser();

                    SendDropItem(user.cachedBody.gameObject, ItemIndex.Syringe);
                }
                else
                {
                    orig(self);
                }
            };
        }
Exemple #7
0
        public void LoadPlayer()
        {
            var player = ProperSave.GetPlayerFromUsername(username);

            if (player == null)
            {
                Debug.Log("Could not find player: " + username);
                return;
            }

            foreach (var minion in minions)
            {
                minion.LoadMinion(player.master);
            }

            var bodyPrefab = BodyCatalog.FindBodyPrefab(characterBodyName);

            player.master.bodyPrefab = bodyPrefab;

            player.master.loadout.Clear();
            player.master.loadout.FromXml(XElement.Parse(loadoutXML));

            inventory.LoadInventory(player.master);

            player.master.money = (uint)money;

            ProperSave.Instance.StartCoroutine(WaitForStart(player));
        }
        public override void OnEnter()
        {
            base.OnEnter();
            if (base.isAuthority)
            {
                //this.targetTracker = base.GetComponent<TargetTracker>();
                this.ownerPrefab = base.gameObject;
                CharacterBody   targetBody      = this.targetPrefab.GetComponent <CharacterBody>();
                CharacterBody   ownerBody       = this.ownerPrefab.GetComponent <CharacterBody>();
                GameObject      bodyPrefab      = BodyCatalog.FindBodyPrefab(targetBody);
                CharacterMaster characterMaster = MasterCatalog.allAiMasters.FirstOrDefault((CharacterMaster master) => master.bodyPrefab == bodyPrefab);
                this.masterSummon         = new MasterSummon();
                masterSummon.masterPrefab = characterMaster.gameObject;
                masterSummon.position     = ownerBody.footPosition;
                CharacterDirection component = ownerBody.GetComponent <CharacterDirection>();
                masterSummon.rotation           = (component ? Quaternion.Euler(0f, component.yaw, 0f) : ownerBody.transform.rotation);
                masterSummon.summonerBodyObject = (ownerBody ? ownerBody.gameObject : null);

                CharacterMaster characterMaster2 = masterSummon.Perform();

                GameObject       trackingTargetAsGO = this.targetTracker.GetTrackingTargetAsGO();
                RoR2.Console.Log log = new RoR2.Console.Log();
                if (trackingTargetAsGO != null)
                {
                    log.message = "REEE";
                    RoR2.Console.logs.Add(log);
                }
                else
                {
                    log.message = "YEET";
                    RoR2.Console.logs.Add(log);
                }
            }
        }
        public static void AssemblySetup()
        {
            var PodTypes  = Assembly.GetExecutingAssembly().GetTypes().Where(type => !type.IsAbstract && type.IsSubclassOf(typeof(PodBase)));
            int podAmount = 0;

            foreach (var podType in PodTypes)
            {
                PodBase podBase = (PodBase)Activator.CreateInstance(podType);
                if (ValidatePod(instance.Config, podBase))
                {
                    podBase.Init(instance.Config);
                    _logger.LogMessage("Added pod for " + podBase.BodyName);
                    podAmount++;
                }
            }
            _logger.LogMessage($"Amount of pod types added: " + podAmount);

            var survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.FindBodyPrefab("EnforcerBody"));

            if (survivorDef)
            {
                _logger.LogMessage("Enforcer is loaded, setting him up.");
                //Enfucker.Init(survivorDef);
                return;
            }
        }
Exemple #10
0
        private static void CCSpawnBody(ConCommandArgs args)
        {
            if (args.Count == 0)
            {
                Log.MessageNetworked(Lang.SPAWNBODY_ARGS, args, LogLevel.MessageClientOnly);
                return;
            }
            if (args.sender == null)
            {
                Log.Message(Lang.DS_NOTYETIMPLEMENTED, LogLevel.Error);
                return;
            }

            string character = StringFinder.Instance.GetBodyName(args[0]);

            if (character == null)
            {
                Log.MessageNetworked(string.Format(Lang.SPAWN_ERROR, args[0]), args, LogLevel.MessageClientOnly);
                return;
            }

            GameObject body       = BodyCatalog.FindBodyPrefab(character);
            GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(body, args.sender.master.GetBody().transform.position, Quaternion.identity);

            NetworkServer.Spawn(gameObject);
            Log.MessageNetworked(string.Format(Lang.SPAWN_ATTEMPT_1, character), args);
        }
        private void CharacterMaster_TransformBody(On.RoR2.CharacterMaster.orig_TransformBody orig, RoR2.CharacterMaster self, string bodyName)
        {
            var baseAI = self.GetComponent <BaseAI>();

            if (baseAI)
            {
                //Chat.AddMessage($"baseAI found");
                var masterPrefab = MasterCatalog.FindMasterPrefab(bodyName);
                if (masterPrefab)
                {
                    //Chat.AddMessage($"1");
                    ReplaceSkillDrivers(self, baseAI, masterPrefab);
                }
                if (!masterPrefab)
                {
                    var bodyPrefab = BodyCatalog.FindBodyPrefab(bodyName);
                    if (bodyPrefab)
                    {
                        var masterIndex = MasterCatalog.FindAiMasterIndexForBody(bodyPrefab.GetComponent <CharacterBody>().bodyIndex);
                        masterPrefab = MasterCatalog.GetMasterPrefab(masterIndex);
                        if (masterPrefab)
                        {
                            //Chat.AddMessage($"2");
                            ReplaceSkillDrivers(self, baseAI, masterPrefab);
                        }
                    }
                }
            }
            orig(self, bodyName);
        }
Exemple #12
0
        public static void ChangeCharacter(GUIStyle buttonStyle, GUIStyle Highlighted, string buttonName)
        {
            int buttonPlacement = 1;

            foreach (var prefab in Main.bodyPrefabs)
            {
                if (GUI.Button(btn.BtnRect(buttonPlacement, false, buttonName), prefab.name.Replace("Body", ""), Navigation.HighlighedCheck(buttonStyle, Highlighted, 1.1f, buttonPlacement)))
                {
                    GameObject newBody = BodyCatalog.FindBodyPrefab(prefab.name);
                    if (newBody == null)
                    {
                        return;
                    }
                    var localUser = LocalUserManager.GetFirstLocalUser();
                    if (localUser == null || localUser.cachedMasterController == null || localUser.cachedMasterController.master == null)
                    {
                        return;
                    }
                    var master = localUser.cachedMasterController.master;

                    master.bodyPrefab = newBody;
                    master.Respawn(master.GetBody().transform.position, master.GetBody().transform.rotation);
                    Utility.SoftResetMenu();
                }
                buttonPlacement++;
            }
        }
Exemple #13
0
    public void OnStart()
    {
        SurvivorModInfo survivorModInfo = new SurvivorModInfo {
            bodyPrefabString       = "BanditBody",
            descriptionTokenString = "BANDIT_DESCRIPTION",
            portraitPrefabString   = "Prefabs/Characters/BanditDisplay",
            usedColor                      = new Color(0.8039216f, 0.482352942f, 0.843137264f),
            toReplace                      = 3,
            unlockableNameString           = "",
            primarySkillNameToken          = "Blast",
            primarySkillDescriptionToken   = "Fire a powerful slug for <style=cIsDamage>150% damage</style>.",
            secondarySkillNameToken        = "Lights Out",
            secondarySkillDescriptionToken = "Take aim for a headshot, dealing <style=cIsDamage>600% damage</style>. If the ability <style=cIsDamage>kills an enemy</style>, the Bandit's <style=cIsUtility>Cooldowns are all reset to 0</style>.",
            utilitySkillNameToken          = "Smokebomb",
            utilitySkillDescriptionToken   = "Turn invisible for <style=cIsDamage>3 seconds</style>, gaining <style=cIsUtility>increased movement speed</style>.",
            specialSkillNameToken          = "Thermite Toss",
            specialSkillDescriptionToken   = "Fire off a burning Thermite grenade, dealing <style=cIsDamage>damage over time</style>.",
        };
        var org_secondary = BodyCatalog.FindBodyPrefab(survivorModInfo.bodyPrefabString).GetComponents <GenericSkill>()[1];

        survivorModInfo.Primary = org_secondary;
        survivorModInfo.Primary.baseMaxStock = 6;
        var mult_secondary = BodyCatalog.FindBodyPrefab("ToolbotBody").GetComponents <GenericSkill>()[1];

        survivorModInfo.Secondary = mult_secondary;
        survivorModInfo.Secondary.activationState = mult_secondary.activationState;
        ModLoader.SurvivorMods.Add(survivorModInfo);
    }
        public void Awake()
        {
            R2API.SurvivorAPI.SurvivorCatalogReady += (s, e) =>
            {
                var survivor = new SurvivorDef
                {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("BanditBody"),
                    descriptionToken = "BANDIT_DESCRIPTION",
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/Characters/BanditDisplay"),
                    primaryColor     = new Color(0.8039216f, 0.482352942f, 0.843137264f),
                    unlockableName   = ""
                };

                /*
                 * var newsurvivor = new SurvivorDef
                 * {
                 *  bodyPrefab = BodyCatalog.FindBodyPrefab("BanditBody"),
                 *  descriptionToken = "NEW_SURVIVOR_DESCRIPTION",
                 *  displayPrefab = Resources.Load<GameObject>("Prefabs/Characters/BanditDisplay"),
                 *  primaryColor = new Color(0.1f, 0.4f, 0.8f),
                 *  unlockableName = "",
                 *
                 * };
                 * R2API.SurvivorAPI.SurvivorDefinitions.Insert(7, newsurvivor);*/

                R2API.SurvivorAPI.SurvivorDefinitions.Insert(3, survivor);
            };
        }
Exemple #15
0
        public static void Init()
        {
            SurvivorDefinitions = new ObservableCollection <SurvivorDef>(new List <SurvivorDef> {
                new SurvivorDef {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("CommandoBody"),
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/CharacterDisplays/CommandoDisplay"),
                    descriptionToken = "COMMANDO_DESCRIPTION",
                    primaryColor     = new Color(0.929411769f, 0.5882353f, 0.07058824f),
                    survivorIndex    = SurvivorIndex.Commando
                },
                new SurvivorDef {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("ToolbotBody"),
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/CharacterDisplays/ToolbotDisplay"),
                    descriptionToken = "TOOLBOT_DESCRIPTION",
                    primaryColor     = new Color(0.827451f, 0.768627465f, 0.3137255f),
                    unlockableName   = "Characters.Toolbot",
                    survivorIndex    = SurvivorIndex.Toolbot
                },
                new SurvivorDef {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("HuntressBody"),
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/CharacterDisplays/HuntressDisplay"),
                    primaryColor     = new Color(0.8352941f, 0.235294119f, 0.235294119f),
                    descriptionToken = "HUNTRESS_DESCRIPTION",
                    unlockableName   = "Characters.Huntress",
                    survivorIndex    = SurvivorIndex.Huntress
                },
                new SurvivorDef {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("EngiBody"),
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/CharacterDisplays/EngiDisplay"),
                    descriptionToken = "ENGI_DESCRIPTION",
                    primaryColor     = new Color(0.372549027f, 0.8862745f, 0.5254902f),
                    unlockableName   = "Characters.Engineer",
                    survivorIndex    = SurvivorIndex.Engineer
                },
                new SurvivorDef {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("MageBody"),
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/CharacterDisplays/MageDisplay"),
                    descriptionToken = "MAGE_DESCRIPTION",
                    primaryColor     = new Color(0.968627453f, 0.75686276f, 0.992156863f),
                    unlockableName   = "Characters.Mage",
                    survivorIndex    = SurvivorIndex.Mage
                },
                new SurvivorDef {
                    bodyPrefab       = BodyCatalog.FindBodyPrefab("MercBody"),
                    displayPrefab    = Resources.Load <GameObject>("Prefabs/CharacterDisplays/MercDisplay"),
                    descriptionToken = "MERC_DESCRIPTION",
                    primaryColor     = new Color(0.423529416f, 0.819607854f, 0.917647064f),
                    unlockableName   = "Characters.Mercenary",
                    survivorIndex    = SurvivorIndex.Merc
                }
            });

            _wasReady = true;
            SurvivorCatalogReady?.Invoke(null, null);

            ReconstructSurvivors();

            SurvivorDefinitions.CollectionChanged += (sender, args) => { ReconstructSurvivors(); };
        }
        private void BodyCatalog_Init(On.RoR2.BodyCatalog.orig_Init orig)
        {
            orig();

            defaultspeed = BodyCatalog.FindBodyPrefab("EngiTurretBody").GetComponent<CharacterBody>().baseAttackSpeed;
            defaultdamage = BodyCatalog.FindBodyPrefab("EngiTurretBody").GetComponent<CharacterBody>().baseDamage;
            defaultleveldamage = BodyCatalog.FindBodyPrefab("EngiTurretBody").GetComponent<CharacterBody>().levelDamage;
        }
        //-----------------------------------------------

        public void Awake()
        {
            frame          = 0;
            isImp          = false;
            count          = false;
            master         = gameObject.GetComponent <CharacterMaster>();
            origBodyPrefab = BodyCatalog.FindBodyPrefab(master.GetBodyObject()); //origBody is where the user's original bodyprefab is stored
        }
 public void Start()
 {
     Chat.AddMessage("The storm has ripped the survivors apart");
     if (Input.GetKeyDown(KeyCode.Y))
     {
         GameObject CharacterBody = BodyCatalog.FindBodyPrefab("prefabs/characterbodies/engibody");
         CharacterMaster.Respawn(CharacterMaster.GetBody().transform.position, master.GetBody().transform.rotation);
     }
 }
Exemple #19
0
        private static void MMSpawnAs(ConCommandArgs args)
        {
            if (args.Count == 0)
            {
                return;
            }

            string character = GetBodyName(args[0]);

            if (character == null)
            {
                Debug.Log("Please use mmspawnlist to view all bodies");
                return;
            }

            GameObject newBody = BodyCatalog.FindBodyPrefab(character);

            if (args.sender == null && args.Count < 2)
            {
                Debug.Log("Error");
                return;
            }

            CharacterMaster master = args.sender?.master;

            if (args.Count > 1)
            {
                NetworkUser player = GetNetUserFromString(args.userArgs, 1);

                if (player != null)
                {
                    master = player.master;
                }

                else
                {
                    Debug.Log("User not found");
                    return;
                }
            }

            if (!master.GetBody())
            {
                Debug.Log("User is dead");
                return;
            }

            master.bodyPrefab = newBody;
            Debug.Log(args.sender.userName + " is spawning as " + character);
            RoR2.ConVar.BoolConVar stage1pod = ((RoR2.ConVar.BoolConVar)(typeof(Stage)).GetFieldCached("stage1PodConVar").GetValue(null));
            bool oldVal = stage1pod.value;

            stage1pod.SetBool(false);

            master.Respawn(master.GetBody().transform.position, master.GetBody().transform.rotation);
            stage1pod.SetBool(oldVal);
        }
Exemple #20
0
        public void LoadEnemy()
        {
            if (enemyName.Contains("EngiTurret") || enemyName.Contains("BeetleGuardAlly") || enemyName.Contains("ShopkeeperMaster"))
            {
                return;
            }

            var gameobject = GameObject.Instantiate(MasterCatalog.FindMasterPrefab(enemyName + "Master"));
            var enemy      = gameobject.GetComponent <CharacterMaster>();
            var inventory  = enemy.inventory;

            NetworkServer.Spawn(gameobject);

            if (enemyName == "BeetleQueen")
            {
                enemyName = "BeetleQueen2";
            }

            enemy.SpawnBody(BodyCatalog.FindBodyPrefab(enemyName + "Body"), transform.position.GetVector3(), transform.rotation.GetQuaternion());

            enemy.teamIndex = (TeamIndex)teamIndex;
            for (int i = 0; i < (int)ItemIndex.Count; i++)
            {
                inventory.GiveItem((ItemIndex)i, items[i]);
            }
            inventory.SetEquipmentIndex((EquipmentIndex)equipmentIndex);

            enemy.isBoss = isBoss;

            if (enemyName.Contains("TitanGold"))
            {
                var bossFight           = new GoldshoresBossfight();
                var bossGroupGameObject = Object.Instantiate(Resources.Load <GameObject>("Prefabs/NetworkedObjects/Bossgroup"));
                var bossGroup           = bossGroupGameObject.GetComponent <BossGroup>();

                NetworkServer.Spawn(bossGroupGameObject);

                bossGroup.bossDropChance = 1f;
                bossGroup.dropPosition   = GoldshoresMissionController.instance.bossSpawnPosition;

                bossGroup.combatSquad.AddMember(enemy);
                TeleporterInteraction.instance.SetFieldValue("bossGroup", bossGroup);
                bossFight.SetFieldValue("hasSpawnedBoss", true);
                bossFight.SetFieldValue("bossInstanceBody", enemy.GetBody());

                enemy.GetBody().AddBuff(BuffIndex.Immune);

                GoldshoresMissionController.instance.GetComponent <EntityStateMachine>().SetNextState(bossFight);
            }
            else if (isBoss)
            {
                TeleporterInteraction.instance.GetFieldValue <BossGroup>("bossGroup").combatSquad.AddMember(enemy);
            }

            SavedGames.instance.StartCoroutine(WaitForStart(enemy));
        }
Exemple #21
0
        private static void CCSpawnAI(ConCommandArgs args)
        {
            string prefabString    = ArgsHelper.GetValue(args.userArgs, 0);
            string eliteString     = ArgsHelper.GetValue(args.userArgs, 1);
            string teamString      = ArgsHelper.GetValue(args.userArgs, 2);
            string braindeadString = ArgsHelper.GetValue(args.userArgs, 3);

            var character = Character.GetCharacter(prefabString);

            if (character == null)
            {
                Debug.LogFormat("Could not spawn {0}, Try: spawn_ai GolemBody", character.body);
                return;
            }

            var prefab = MasterCatalog.FindMasterPrefab(character.master);
            var body   = BodyCatalog.FindBodyPrefab(character.body);


            var             bodyGameObject = Instantiate <GameObject>(prefab, args.sender.master.GetBody().transform.position, Quaternion.identity);
            CharacterMaster master         = bodyGameObject.GetComponent <CharacterMaster>();

            NetworkServer.Spawn(bodyGameObject);
            master.SpawnBody(body, args.sender.master.GetBody().transform.position, Quaternion.identity);

            EliteIndex eliteIndex = EliteIndex.None;

            if (Enum.TryParse <EliteIndex>(eliteString, true, out eliteIndex))
            {
                if ((int)eliteIndex > (int)EliteIndex.None && (int)eliteIndex < (int)EliteIndex.Count)
                {
                    master.inventory.SetEquipmentIndex(EliteCatalog.GetEliteDef(eliteIndex).eliteEquipmentIndex);
                }
            }

            TeamIndex teamIndex = TeamIndex.Neutral;

            if (Enum.TryParse <TeamIndex>(teamString, true, out teamIndex))
            {
                if ((int)teamIndex >= (int)TeamIndex.None && (int)teamIndex < (int)TeamIndex.Count)
                {
                    master.teamIndex = teamIndex;
                }
            }

            bool braindead;

            if (bool.TryParse(braindeadString, out braindead))
            {
                if (braindead)
                {
                    Destroy(master.GetComponent <BaseAI>());
                }
            }
            Debug.Log("Attempting to spawn " + character.body);
        }
Exemple #22
0
        private static void CCSpawnAs(ConCommandArgs args)
        {
            if (args.Count == 0)
            {
                Log.MessageNetworked(Lang.SPAWNAS_ARGS, args, LogLevel.MessageClientOnly);
                return;
            }
            string character = StringFinder.Instance.GetBodyName(args[0]);

            if (character == null)
            {
                Log.MessageNetworked(Lang.SPAWN_ERROR + args[0], args, LogLevel.MessageClientOnly);
                Log.MessageNetworked("Please use list_body to print CharacterBodies", args, LogLevel.MessageClientOnly);
                return;
            }
            GameObject newBody = BodyCatalog.FindBodyPrefab(character);

            if (args.sender == null && args.Count < 2)
            {
                Log.Message(Lang.DS_REQUIREFULLQUALIFY, LogLevel.Error);
                return;
            }

            CharacterMaster master = args.sender?.master;

            if (args.Count > 1)
            {
                NetworkUser player = Util.GetNetUserFromString(args.userArgs, 1);
                if (player != null)
                {
                    master = player.master;
                }
                else
                {
                    Log.MessageNetworked(Lang.PLAYER_NOTFOUND, args, LogLevel.MessageClientOnly);
                    return;
                }
            }

            if (!master.GetBody())
            {
                Log.MessageNetworked(Lang.PLAYER_DEADRESPAWN, args, LogLevel.MessageClientOnly);
                return;
            }

            master.bodyPrefab = newBody;
            Log.MessageNetworked(args.sender.userName + " is spawning as " + character, args);
            RoR2.ConVar.BoolConVar stage1pod = ((RoR2.ConVar.BoolConVar)(typeof(Stage)).GetFieldCached("stage1PodConVar").GetValue(null));
            bool oldVal = stage1pod.value;

            stage1pod.SetBool(false);

            master.Respawn(master.GetBody().transform.position, master.GetBody().transform.rotation);
            stage1pod.SetBool(oldVal);
        }
Exemple #23
0
        //Using start because you should never use Awake() unless you specifically need to.
        public void Start()
        {
            configWrappingPaper = Config.Wrap <bool>("Settings", "Use default crosshair", "Use the default dot crosshair?", false);

            //Get the gameobject for huntress
            GameObject huntress = BodyCatalog.FindBodyPrefab("HuntressBody");

            if (!huntress)
            {
                Debug.Log("Huntress prefab not found, breaking");
                return;
            }

            if (!configWrappingPaper.Value)
            {
                huntress.GetComponent <CharacterBody>().crosshairPrefab = Resources.Load <GameObject>("prefabs/crosshair/tiltedbracketcrosshair");
            }

            SkillFamily huntressPrimaryFamily = LoadoutUtilities.GetSkillFamily(huntress, SkillSlot.Primary);

            Sprite huntressPrimarySprite = Resources.Load <Sprite>("NotActuallyAPath");

            ViewablesCatalog.Node huntressPrimaryNode = LoadoutUtilities.CreateViewableNode("ReinHuntressPrimary");

            LoadoutUtilities.NewSkillInfo huntressPrimary = new LoadoutUtilities.NewSkillInfo
            {
                activationState            = new SerializableEntityStateType(typeof(ReinHuntressSkills.Skills.Primary.HuntressPrimary)),
                activationStateMachineName = "Weapon",
                icon                         = huntressPrimarySprite,
                viewableNode                 = huntressPrimaryNode,
                unlockableName               = "",
                skillName                    = "RandomName1",
                skillNameToken               = "RandomName1",
                skillDescriptionToken        = "This skill does stuff",
                interruptPriority            = InterruptPriority.Any,
                baseRechargeInterval         = 0f,
                baseMaxStock                 = 1,
                rechargeStock                = 1,
                isBullets                    = false,
                shootDelay                   = 0.3f,
                beginSkillCooldownOnSkillEnd = false,
                requiredStock                = 1,
                stockToConsume               = 1,
                canceledFromSprinting        = false,
                noSprint                     = false,
                isCombatSkill                = true,
                mustKeyPress                 = false,
                fullRestockOnAssign          = true
            };

            LoadoutUtilities.AddSkillToVariants(huntressPrimaryFamily, huntressPrimary);
        }
        public void LoadPlayer()
        {
            var player = SavedGames.GetPlayerFromUsername(username);

            if (player == null)
            {
                Debug.Log("Could not find player: " + username);
                return;
            }

            var inventory       = player.master.inventory;
            var healthComponent = player.GetCurrentBody().GetComponent <HealthComponent>();
            var bodyPrefab      = BodyCatalog.FindBodyPrefab(characterBodyName);

            player.master.bodyPrefab = bodyPrefab;
            if (alive)
            {
                player.master.Respawn(transform.position.GetVector3(), transform.rotation.GetQuaternion());
            }
            else
            {
                healthComponent?.Suicide();
            }

            for (int i = 0; i < items.Length; i++)
            {
                inventory.RemoveItem((ItemIndex)i, int.MaxValue);
                inventory.GiveItem((ItemIndex)i, items[i]);
            }

            inventory.SetEquipmentIndex((EquipmentIndex)equipItem0);
            if (equipItemCount == 2)
            {
                inventory.SetActiveEquipmentSlot((byte)1);
                inventory.SetEquipmentIndex((EquipmentIndex)equipItem1);
            }

            inventory.AddInfusionBonus((uint)-inventory.infusionBonus);
            inventory.AddInfusionBonus((uint)infusion);

            player.master.money = (uint)money;


            foreach (var item in deployables)
            {
                item.LoadDeployable(player.master);
            }

            SavedGames.instance.StartCoroutine(WaitForStart(player));
        }
Exemple #25
0
 // Token: 0x06000009 RID: 9 RVA: 0x00002310 File Offset: 0x00000510
 public SurvivorDef RegisterModSurvivor()
 {
     this.characterObject = UnityEngine.Object.Instantiate <GameObject>(BodyCatalog.FindBodyPrefab(this.bodyPrefabString));
     this.characterObject.SetActive(false);
     UnityEngine.Object.DontDestroyOnLoad(this.characterObject);
     return(new SurvivorDef
     {
         bodyPrefab = this.characterObject,
         displayPrefab = Resources.Load <GameObject>(this.portraitPrefabString),
         descriptionToken = this.descriptionTokenString,
         primaryColor = new Color(this.usedColor.r, this.usedColor.g, this.usedColor.b),
         unlockableName = this.unlockableNameString
     });
 }
        /// <summary>
        /// A helper to easily set up and initialize an pod from your pod classes if the user has it enabled in their configuration files.
        /// </summary>
        /// <param name="configFile">The configuration file from the main plugin."</param>
        /// <param name="podBase">A new instance of an PodBase class."</param>
        public static bool ValidatePod(BepInEx.Configuration.ConfigFile configFile, PodBase podBase)
        {
            var survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.FindBodyPrefab(podBase.BodyName));

            if (survivorDef != null)
            {
                var enabled = configFile.Bind <bool>(podBase.ConfigCategory, "Enable Pod Modification?", true, "[Server] Should this body's pod get modified?").Value;
                if (enabled)
                {
                    return(true);
                }
            }
            return(false);
        }
        internal void LoadPlayer(NetworkUser player)
        {
            var master = player.master;

            foreach (var minion in minions)
            {
                minion.LoadMinion(master);
            }

            var bodyPrefab = BodyCatalog.FindBodyPrefab(characterBodyName);

            master.bodyPrefab = bodyPrefab;

            loadout.LoadData(master.loadout);

            inventory.LoadInventory(master.inventory);

            if (ModSupport.IsSSLoaded)
            {
                ProperSavePlugin.Instance.StartCoroutine(LoadShareSuiteMoney(money));
            }
            player.master.money = money;

            player.masterController.lunarCoinChanceMultiplier = lunarCoinChanceMultiplier;
            var stats = player.masterController.GetComponent <PlayerStatsComponent>().currentStats;

            for (var i = 0; i < statsFields.Length; i++)
            {
                var fieldValue = statsFields[i];
                stats.SetStatValueFromString(StatDef.allStatDefs[i], fieldValue);
            }
            for (var i = 0; i < statsUnlockables.Length; i++)
            {
                var unlockableIndex = statsUnlockables[i];
                stats.AddUnlockable(new UnlockableIndex(unlockableIndex));
            }

            if (ModSupport.IsTLCLoaded || ModSupport.IsBDTLCLoaded)
            {
                Stage.onStageStartGlobal += ResetLunarCoins;
                void ResetLunarCoins(Stage stage)
                {
                    Stage.onStageStartGlobal -= ResetLunarCoins;
                    player.DeductLunarCoins(player.lunarCoins);
                    player.AwardLunarCoins(lunarCoins);
                }
            }
        }
Exemple #28
0
        private static void SpawnAs(NetworkUser user, string bodyString, string userString)
        {
            if (!SpawnAsEnabled.Value)
            {
                return;
            }

            CharacterMaster sender = user.master;

            if (HostOnlySpawnAsEnabled.Value)
            {
                if (NetworkUser.readOnlyInstancesList[0].netId != user.netId)
                {
                    return;
                }
            }

            bodyString = bodyString.Replace("Master", "");
            bodyString = bodyString.Replace("Body", "");
            bodyString = bodyString + "Body";

            NetworkUser     player = GetNetUserFromString(userString);
            CharacterMaster master = player != null ? player.master : sender;

            if (!master.alive)
            {
                Debug.Log("Player is dead and cannot respawn.");
                return;
            }

            GameObject bodyPrefab = BodyCatalog.FindBodyPrefab(bodyString);

            if (bodyPrefab == null)
            {
                List <string> array = new List <string>();
                foreach (var item in BodyCatalog.allBodyPrefabs)
                {
                    array.Add(item.name);
                }
                string list = string.Join("\n", array);
                Debug.LogFormat("Could not spawn as {0}, Try: spawn_as GolemBody   --- \n{1}", bodyString, list);
                return;
            }
            master.bodyPrefab = bodyPrefab;
            Debug.Log(master.GetBody().GetUserName() + " is spawning as " + bodyString);

            master.Respawn(master.GetBody().transform.position, master.GetBody().transform.rotation);
        }
        public static void AddModdedVariant(MonsterVariantInfo info)
        {
            On.RoR2.BodyCatalog.Init += (orig) =>
            {
                orig();

                GameObject bodyPrefab = BodyCatalog.FindBodyPrefab(info.bodyName + "Body");
                if (!bodyPrefab)
                {
                    Debug.LogError("Failed to add variant: " + info.bodyName + "Body does not exist.");
                    return;
                }

                bodyPrefab.AddComponent <Components.VariantHandler>().Init(info);
            };
        }
 public void Awake() => SurvivorAPI.SurvivorCatalogReady += delegate(object s, EventArgs e)
 {
     {
         var         Bomber = BodyCatalog.FindBodyPrefab("BomberBody");
         SurvivorDef item   = new SurvivorDef
         {
             bodyPrefab       = Bomber,
             descriptionToken = "Shotgun",
             displayPrefab    = Bomber.GetComponent <ModelLocator>().modelTransform.gameObject,
             primaryColor     = new Color(42.947f, 19.846f, 4.338f),
             unlockableName   = "",
             survivorIndex    = SurvivorIndex.Count
         };
         SurvivorAPI.AddSurvivor(item);
     }
 };