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; }; }
//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 }
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."; }; }
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); } }; }
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; } }
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); }
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++; } }
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); }; }
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); } }
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); }
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)); }
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); }
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); }
//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)); }
// 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); } } }
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); } };