private static void CreateEarthPowerWave() { earthPowerWave = CloneProjectilePrefab("BrotherUltLineProjectileRotateLeft", "EarthPowerProjectile"); earthPowerWave.GetComponent <ProjectileDamage>().damageType = DamageType.IgniteOnHit; RegigigasPlugin.DestroyImmediate(earthPowerWave.GetComponent <RotateAroundAxis>()); GameObject waveGhost = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/ProjectileGhosts/BrotherUltLineGhost"), "EarthPowerProjectileGhost", true); if (!waveGhost.GetComponent <NetworkIdentity>()) { waveGhost.AddComponent <NetworkIdentity>(); } // gather materials and stuff PostProcessProfile magmaWormPP = Resources.Load <GameObject>("Prefabs/CharacterBodies/MagmaWormBody").GetComponentInChildren <PostProcessVolume>().sharedProfile; Material matMagmaOpaqueLarge = Resources.Load <GameObject>("Prefabs/ProjectileGhosts/MagmaOrbGhost").transform.Find("Particles").Find("SpitCore").GetComponent <ParticleSystemRenderer>().material; Material matMagmaOpaqueDirectional = Resources.Load <GameObject>("Prefabs/Effects/MagmaWormBurrow").transform.Find("ParticleLoop").Find("Magma, Directional").GetComponent <ParticleSystemRenderer>().material; Material titanPredictionEffect = Resources.Load <GameObject>("Prefabs/Projectiles/TitanPreFistProjectile").transform.Find("TeamAreaIndicator, GroundOnly").GetComponent <TeamAreaIndicator>().teamMaterialPairs[0].sharedMaterial; Material matSpiteBombPredictionEffect = Resources.Load <GameObject>("Prefabs/Effects/SpiteBombDelayEffect").transform.Find("Nova Sphere").GetComponent <ParticleSystemRenderer>().material; waveGhost.transform.Find("Size").Find("IndicatorFX").GetComponent <MeshRenderer>().material = titanPredictionEffect; waveGhost.transform.Find("Size").Find("IndicatorFX").Find("Edges").GetComponent <MeshRenderer>().material = matSpiteBombPredictionEffect; waveGhost.transform.Find("Size").Find("FireFX").Find("Dust, Directional").GetComponent <ParticleSystemRenderer>().material = matMagmaOpaqueDirectional; waveGhost.transform.Find("Size").Find("FireFX").Find("SparksUp").GetComponent <ParticleSystemRenderer>().material = matMagmaOpaqueLarge; waveGhost.transform.Find("Size").Find("FireFX").GetComponent <PostProcessVolume>().sharedProfile = magmaWormPP; earthPowerWave.GetComponent <ProjectileController>().ghostPrefab = waveGhost; }
public static GameObject CreateDefaultTextObject() { var textPrefab = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/effects/DamageRejected"), "DeathMessageAboveCorpse_DefaultTextObjectChild"); textPrefab.name = "DeathMessageAboveCorpse_DefaultTextObject"; UnityEngine.Object.Destroy(textPrefab.GetComponent <EffectComponent>()); textPrefab.GetComponent <ObjectScaleCurve>().overallCurve = AnimationCurve.Constant(0f, 1f, 1f); UnityEngine.Object.Destroy(textPrefab.GetComponent <VelocityRandomOnStart>()); UnityEngine.Object.Destroy(textPrefab.GetComponent <ConstantForce>()); UnityEngine.Object.Destroy(textPrefab.GetComponent <Rigidbody>()); UnityEngine.Object.Destroy(textPrefab.transform.Find("TextMeshPro").gameObject.GetComponent <ScaleSpriteByCamDistance>()); textPrefab.AddComponent <NetworkIdentity>(); DeathMessageLocator deathMessageLocator = textPrefab.AddComponent <DeathMessageLocator>(); deathMessageLocator.textMeshPro = textPrefab.transform.Find("TextMeshPro").gameObject.GetComponent <TextMeshPro>(); deathMessageLocator.textMeshPro.fontSize = fontSize; deathMessageLocator.languageTextMeshController = textPrefab.transform.Find("TextMeshPro").gameObject.GetComponent <LanguageTextMeshController>(); deathMessageLocator.destroyOnTimer = textPrefab.GetComponent <DestroyOnTimer>(); textPrefab.GetComponent <DestroyOnTimer>().duration = cfgDuration.Value > 0 ? cfgDuration.Value : 360000; PrefabAPI.RegisterNetworkPrefab(textPrefab); defaultTextObject = textPrefab; return(textPrefab); }
public override void OnPluginAwake() { base.OnPluginAwake(); inWorldPrefab = PrefabAPI.InstantiateClone(Main.AssetBundle.LoadAsset <GameObject>("Assets/Equipment/Siren Pole/InWorld.prefab"), "MysticsItems_SirenPoleInWorld", false); inWorldPrefab.AddComponent <NetworkIdentity>(); PrefabAPI.RegisterNetworkPrefab(inWorldPrefab); }
public Brooch() { var origCost = 25f; onBehav += () => { broochPrefab = UnityEngine.Object.Instantiate(Resources.Load <InteractableSpawnCard>("SpawnCards/InteractableSpawnCard/iscChest1")); broochPrefab.directorCreditCost = 0; broochPrefab.sendOverNetwork = true; broochPrefab.skipSpawnWhenSacrificeArtifactEnabled = false; broochPrefab.prefab = PrefabAPI.InstantiateClone(broochPrefab.prefab, "chestBrooch"); broochPrefab.prefab.AddComponent <CaptainsBroochDroppod>().enabled = !safeMode; var pInt = broochPrefab.prefab.GetComponent <PurchaseInteraction>(); origCost = pInt.cost; pInt.cost = Mathf.CeilToInt(origCost * (1f + extraCost)); pInt.automaticallyScaleCostWithDifficulty = true; }; ConfigEntryChanged += (sender, args) => { if (args.target.boundProperty.Name == nameof(safeMode)) { broochPrefab.prefab.GetComponent <CaptainsBroochDroppod>().enabled = !(bool)args.newValue; } else if (args.target.boundProperty.Name == nameof(extraCost)) { broochPrefab.prefab.GetComponent <PurchaseInteraction>().cost = Mathf.CeilToInt(origCost * (1f + extraCost)); } }; }
public static void RegisterSurvivors() { SurvivorDef survivorDef = ScriptableObject.CreateInstance <SurvivorDef>(); survivorDef.displayNameToken = "ROCKETEER_NAME"; survivorDef.unlockableDef = null; survivorDef.descriptionToken = "ROCKETEER_DESCRIPTION"; survivorDef.primaryColor = characterColor; survivorDef.bodyPrefab = characterPrefab; survivorDef.displayPrefab = characterDisplay; survivorDef.outroFlavorToken = "MINER_OUTRO_FLAVOR"; survivorDef.hidden = false; survivorDef.desiredSortPosition = 17f; bodyPrefabs.Add(characterPrefab); survivorDefs.Add(survivorDef); // now that the body prefab's set up, clone it here to make the display prefab characterDisplay = PrefabAPI.InstantiateClone(characterPrefab.GetComponent <ModelLocator>().modelBaseTransform.gameObject, "RocketeerDisplay", true, "C:\\Users\\Tinde\\Desktop\\Lurgypai\\ROR2\\mods\\Projects\\files\\ExampleSurvivor\\ExampleSurvivor\\ExampleSurvivor\\ExampleSurvivor\\Rocketeer.cs", "RegisterCharacter", 153); characterDisplay.AddComponent <NetworkIdentity>(); // write a clean survivor description here! string desc = "Rocketeer.<color=#CCD3E0>" + Environment.NewLine + Environment.NewLine; desc = desc + "< ! > After jetting, the Rocketeer can activate a final secondary jet to negate fall damage." + Environment.NewLine + Environment.NewLine; desc = desc + "< ! > Remember that the Rocketeer's Big Booma Cannon does additional damage for each stored rocket." + Environment.NewLine + Environment.NewLine; desc = desc + "< ! > The Rocketeer spawns with a Shiny Jetpack." + Environment.NewLine + Environment.NewLine; // add the language tokens LanguageAPI.Add("ROCKETEER_NAME", "Rocketeer"); LanguageAPI.Add("ROCKETEER_DESCRIPTION", desc); LanguageAPI.Add("ROCKETEER_SUBTITLE", "Flight of the boomble-bee."); }
public override GameObject CreatePod() { GameObject podPrefab = PrefabAPI.InstantiateClone(genericPodPrefab, PodPrefabName); podPrefab.AddComponent <CommandoPodComponent>(); return(podPrefab); }
private void CreateDoppelganger() { doppelganger = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/CharacterMasters/MercMonsterMaster"), "PaladinMonsterMaster"); doppelganger.GetComponent <CharacterMaster>().bodyPrefab = Modules.Prefabs.paladinPrefab; Modules.Prefabs.masterPrefabs.Add(doppelganger); }
public override GameObject CreatePod() { GameObject podPrefab = PrefabAPI.InstantiateClone(roboCratePodPrefab, PodPrefabName); podPrefab.AddComponent <AcridPodComponent>(); return(podPrefab); }
public void CreateProjectile() { HyperchargedProjectile = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Projectiles/LightningStake"), "HyperchargedProjectile", true); var controller = HyperchargedProjectile.GetComponent <ProjectileController>(); controller.startSound = "Play_titanboss_shift_shoot"; var impactExplosion = HyperchargedProjectile.GetComponent <ProjectileImpactExplosion>(); impactExplosion.lifetime = 0.5f; impactExplosion.impactEffect = Resources.Load <GameObject>("Prefabs/Effects/ImpactEffects/LightningStrikeImpact"); impactExplosion.blastRadius = 7f; impactExplosion.bonusBlastForce = new Vector3(0, 750, 0); // register it for networking if (HyperchargedProjectile) { PrefabAPI.RegisterNetworkPrefab(HyperchargedProjectile); } // add it to the projectile catalog or it won't work in multiplayer RoR2.ProjectileCatalog.getAdditionalEntries += list => { list.Add(HyperchargedProjectile); }; }
private void SceneManager_sceneLoaded(UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode loadSceneMode) { if (scene.name == "voidoutro" && VoidOutroHolder == null) { var tempGameObject = new GameObject(); var banned = new string[] { "Music & Sound", "SkipVoteController" }; foreach (var obj in UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects()) { if (banned.Contains(obj.name)) { continue; } obj.transform.parent = tempGameObject.transform; } VoidOutroHolder = PrefabAPI.InstantiateClone(tempGameObject, "Void Outro Holder"); } if (scene.name == "outro") { Instantiate(VoidOutroHolder); } }
public override void OnLoad() { base.OnLoad(); itemDef.name = "MysticsItems_DasherDisc"; SetItemTierWhenAvailable(ItemTier.Tier3); itemDef.tags = new ItemTag[] { ItemTag.Utility }; MysticsItemsContent.Resources.unlockableDefs.Add(GetUnlockableDef()); itemDef.pickupModelPrefab = PrepareModel(Main.AssetBundle.LoadAsset <GameObject>("Assets/Items/Dasher Disc/Model.prefab")); itemDef.pickupIconSprite = Main.AssetBundle.LoadAsset <Sprite>("Assets/Items/Dasher Disc/Icon.png"); Material mat = itemDef.pickupModelPrefab.transform.Find("mdlDasherDisc").GetComponent <MeshRenderer>().sharedMaterial; HopooShaderToMaterial.Standard.Apply(mat); HopooShaderToMaterial.Standard.Emission(mat, 4f); HopooShaderToMaterial.Standard.Gloss(mat); MysticsItemsDasherDiscSpinner spinner = itemDef.pickupModelPrefab.transform.Find("mdlDasherDisc").gameObject.AddComponent <MysticsItemsDasherDiscSpinner>(); spinner.trail = itemDef.pickupModelPrefab.transform.Find("mdlDasherDisc").Find("Particle System").gameObject; itemDisplayPrefab = PrepareItemDisplayModel(PrefabAPI.InstantiateClone(itemDef.pickupModelPrefab, itemDef.pickupModelPrefab.name + "Display", false)); itemDisplayPrefab.transform.Find("mdlDasherDisc").localScale = Vector3.one * 5f; controllerPrefab.AddComponent <GenericOwnership>(); NetworkedBodyAttachment networkedBodyAttachment = controllerPrefab.AddComponent <NetworkedBodyAttachment>(); networkedBodyAttachment.forceHostAuthority = true; EntityStateMachine stateMachine = controllerPrefab.AddComponent <EntityStateMachine>(); stateMachine.mainStateType = stateMachine.initialStateType = new SerializableEntityStateType(typeof(DiscBaseState.Ready)); NetworkStateMachine networkStateMachine = controllerPrefab.AddComponent <NetworkStateMachine>(); networkStateMachine.SetFieldValue("stateMachines", new EntityStateMachine[] { stateMachine }); DiscController component = controllerPrefab.AddComponent <DiscController>(); GameObject follower = PrefabAPI.InstantiateClone(itemDisplayPrefab, "DasherDiscFollower", false); follower.transform.SetParent(controllerPrefab.transform); component.follower = follower; component.disc = follower.transform.Find("mdlDasherDisc").gameObject; component.discSpinner = component.disc.GetComponent <MysticsItemsDasherDiscSpinner>(); MysticsItemsContent.Resources.entityStateTypes.Add(typeof(DiscBaseState)); MysticsItemsContent.Resources.entityStateTypes.Add(typeof(DiscBaseState.Ready)); MysticsItemsContent.Resources.entityStateTypes.Add(typeof(DiscBaseState.Trigger)); MysticsItemsContent.Resources.entityStateTypes.Add(typeof(DiscBaseState.Invincible)); On.RoR2.CharacterBody.Awake += (orig, self) => { orig(self); self.onInventoryChanged += delegate() { if (NetworkServer.active) { self.AddItemBehavior <MysticsItemsDasherDiscBehaviour>(self.inventory.GetItemCount(itemDef)); } }; }; }
private static GameObject CreateTracer(string originalTracerName, string newTracerName) { if (Resources.Load <GameObject>("Prefabs/Effects/Tracers/" + originalTracerName) == null) { return(null); } GameObject newTracer = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/Effects/Tracers/" + originalTracerName), newTracerName, true); if (!newTracer.GetComponent <EffectComponent>()) { newTracer.AddComponent <EffectComponent>(); } if (!newTracer.GetComponent <VFXAttributes>()) { newTracer.AddComponent <VFXAttributes>(); } if (!newTracer.GetComponent <NetworkIdentity>()) { newTracer.AddComponent <NetworkIdentity>(); } newTracer.GetComponent <Tracer>().speed = 250f; newTracer.GetComponent <Tracer>().length = 50f; AddNewEffectDef(newTracer); return(newTracer); }
/// <summary> /// An example targeting indicator implementation. We clone the woodsprite's indicator, but we edit it to our liking. We'll use this in our activate equipment. /// We shouldn't need to network this as this only shows for the player with the Equipment. /// </summary> private void CreateTargetingIndicator() { TargetingIndicatorPrefabBase = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/WoodSpriteIndicator"), "ExampleIndicator", false); TargetingIndicatorPrefabBase.GetComponentInChildren <SpriteRenderer>().sprite = MainAssets.LoadAsset <Sprite>("ExampleReticuleIcon.png"); TargetingIndicatorPrefabBase.GetComponentInChildren <SpriteRenderer>().color = Color.white; TargetingIndicatorPrefabBase.GetComponentInChildren <SpriteRenderer>().transform.rotation = Quaternion.identity; TargetingIndicatorPrefabBase.GetComponentInChildren <TMPro.TextMeshPro>().color = new Color(0.423f, 1, 0.749f); }
public override void OnPluginAwake() { controllerPrefab = PrefabAPI.InstantiateClone(new GameObject(), "DasherDiscController", false); controllerPrefab.AddComponent <NetworkIdentity>().localPlayerAuthority = false; PrefabAPI.RegisterNetworkPrefab(controllerPrefab); NetworkingAPI.RegisterMessageType <DiscBaseState.Ready.SyncFireTrigger>(); }
internal static void CreateGenericDoppelganger(GameObject bodyPrefab, string masterName, string masterToCopy) { GameObject newMaster = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/CharacterMasters/" + masterToCopy + "MonsterMaster"), masterName, true); newMaster.GetComponent <CharacterMaster>().bodyPrefab = bodyPrefab; masterPrefabs.Add(newMaster); }
public void SetupWorms() { wardPrefab = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("prefabs/networkedobjects/mushroomward"), "WormTelegraphIndicator"); Destroy(wardPrefab.GetComponent <TeamFilter>()); Destroy(wardPrefab.GetComponent <HealingWard>()); EditWorm(magmaWormPrefab); EditWorm(elecWormPrefab); }
public static void SetupBattery() { var battery = Resources.Load <GameObject>("prefabs/networkedobjects/questvolatilebatteryworldpickup"); batteryQuestPrefab = PrefabAPI.InstantiateClone(battery, "QuestVolatileBatteryWorldPickupPPP", true); //Destroy(batteryQuestPrefab.GetComponent<AwakeEvent>()); //Destroy(batteryQuestPrefab.GetComponent<NetworkParent>()); batteryQuestPrefab.GetComponent <GenericPickupController>().enabled = true; batteryQuestPrefab.AddComponent <MakeAvailable>().genericPickupController = batteryQuestPrefab.GetComponent <GenericPickupController>(); }
public static void CreateDoppelganger() { doppelganger = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/CharacterMasters/CommandoMonsterMaster"), "RocketeerMonsterMaster", true, "C:\\Users\\Tinde\\Desktop\\Lurgypai\\ROR2\\mods\\Projects\\files\\ExampleSurvivor\\ExampleSurvivor\\ExampleSurvivor\\ExampleSurvivor\\Rocketeer.cs", "CreateDoppelganger", 159); CharacterMaster component = doppelganger.GetComponent <CharacterMaster>(); component.bodyPrefab = characterPrefab; ContentPacks.masterPrefabs.Add(doppelganger); }
public override GameObject CreatePod() { GameObject podPrefab = PrefabAPI.InstantiateClone(genericPodPrefab, PodPrefabName); /*podPrefab.GetComponentInChildren<MeshRenderer>().material * = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.FindBodyPrefab(BodyName)) * .displayPrefab.transform.Find("MageMesh").GetComponent<SkinnedMeshRenderer>().material;*/ podPrefab.AddComponent <ArtificerPodComponent>(); return(podPrefab); }
private void CreateDoppelganger() { doppelganger = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/CharacterMasters/LoaderMonsterMaster"), "HaleMonsterMaster"); doppelganger.GetComponent <CharacterMaster>().bodyPrefab = Modules.Prefabs.halePrefab; MasterCatalog.getAdditionalEntries += delegate(List <GameObject> list) { list.Add(doppelganger); }; }
public override void SetupBehavior() { base.SetupBehavior(); PermanentScannerPrefab = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/NetworkedObjects/ChestScanner"), "Bulletstorm_ChestScanner", true); ChestRevealer chestRevealer = PermanentScannerPrefab.GetComponent <ChestRevealer>(); chestRevealer.radius = 1000; chestRevealer.pulseTravelSpeed = 1000; chestRevealer.revealDuration = 1; chestRevealer.pulseInterval = 10; chestRevealer.pulseEffectScale = 0; // a scale of zero should make it invisible //chestRevealer.pulseEffectPrefab = null; //throws an error if null if (ScanDuration <= 0) { chestRevealer.revealDuration = 99999; //~27 hours } else { chestRevealer.revealDuration = Mathf.Max(1, ScanDuration); } DestroyOnTimer destroyOnTimer = PermanentScannerPrefab.GetComponent <DestroyOnTimer>(); if (KeepScanningPastStart) { //UnityEngine.Object.Destroy(destroyOnTimer); destroyOnTimer.duration = 99999; } else { destroyOnTimer.duration = ScanDuration; } if (PermanentScannerPrefab) { PrefabAPI.RegisterNetworkPrefab(PermanentScannerPrefab); } if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ((count, inv, master) => { return(ScanChance + ScanChancePerStack * (count - 1)); }, (value, inv, master) => { return($"Scan Chance: {Pct(value)}"); } )); Compat_ItemStats.CreateItemStatDef(itemDef, ((count, inv, master) => { return(ScanDuration); }, (value, inv, master) => { string text = $"Scan Duration: "; text += ScanDuration == 0 ? $"27:00:00" : $"{GenTimeSpanFromSeconds(value)}"; return(text); } )); } }
internal static GameObject CreateDisplayPrefab(string modelName, GameObject prefab) { GameObject newPrefab = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/CharacterBodies/CommandoBody"), modelName + "Prefab"); GameObject model = CreateModel(newPrefab, modelName); Transform modelBaseTransform = SetupModel(newPrefab, model.transform); model.AddComponent <CharacterModel>().baseRendererInfos = prefab.GetComponentInChildren <CharacterModel>().baseRendererInfos; return(model.gameObject); }
private static void SetupProjectiles() { var rocketPrefab = Resources.Load <GameObject>("prefabs/projectiles/PaladinRocket"); debuffHitProjectile = PrefabAPI.InstantiateClone(rocketPrefab, "DebuffHitProjectile"); debuffHitProjectile.AddComponent <ApplyPlayerDebuffsOnHit>(); buffTransferProjectile = PrefabAPI.InstantiateClone(rocketPrefab, "BuffTransferProjectile"); buffTransferProjectile.AddComponent <GiveHitEnemyBuffTransfer>(); }
internal static void CreateGenericDoppelganger(GameObject bodyPrefab, string masterName, string masterToCopy) { GameObject newMaster = PrefabAPI.InstantiateClone(Resources.Load <GameObject>("Prefabs/CharacterMasters/" + masterToCopy + "MonsterMaster"), masterName, true); newMaster.GetComponent <CharacterMaster>().bodyPrefab = bodyPrefab; MasterCatalog.getAdditionalEntries += delegate(List <GameObject> list) { list.Add(newMaster); }; }
private static GameObject CloneProjectilePrefab(string prefabName, string newPrefabName) { var prefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/Projectiles/" + prefabName); if (prefab == null) { TTGL_SurvivorPlugin.instance.Logger.LogError("Could not load Prefabs / Projectiles / " + prefabName); } GameObject newPrefab = PrefabAPI.InstantiateClone(prefab, newPrefabName); return(newPrefab); }
public override void OnLoad() { base.OnLoad(); itemDef.name = "MysticsItems_Backpack"; SetItemTierWhenAvailable(ItemTier.Tier3); itemDef.tags = new ItemTag[] { ItemTag.Utility }; MysticsItemsContent.Resources.unlockableDefs.Add(GetUnlockableDef()); itemDef.pickupModelPrefab = PrepareModel(Main.AssetBundle.LoadAsset <GameObject>("Assets/Items/Backpack/Model.prefab")); itemDef.pickupIconSprite = Main.AssetBundle.LoadAsset <Sprite>("Assets/Items/Backpack/Icon.png"); var mat = itemDef.pickupModelPrefab.GetComponentInChildren <Renderer>().sharedMaterial; HopooShaderToMaterial.Standard.Apply(mat); HopooShaderToMaterial.Standard.DisableEverything(mat); itemDisplayPrefab = PrepareItemDisplayModel(PrefabAPI.InstantiateClone(itemDef.pickupModelPrefab, itemDef.pickupModelPrefab.name + "Display", false)); //mat.SetFloat("_NormalStrength", 0f); onSetupIDRS += () => { AddDisplayRule("CommandoBody", "Chest", new Vector3(0.00145F, 0.1424F, -0.2211F), new Vector3(0F, 180F, 0F), new Vector3(0.28214F, 0.28214F, 0.28214F)); AddDisplayRule("HuntressBody", "Chest", new Vector3(0.00002F, 0.06688F, -0.1311F), new Vector3(0F, 180F, 0F), new Vector3(0.23527F, 0.21892F, 0.23527F)); AddDisplayRule("Bandit2Body", "Chest", new Vector3(0.00001F, 0.1205F, -0.19442F), new Vector3(0F, 180F, 0F), new Vector3(0.26903F, 0.26903F, 0.26903F)); AddDisplayRule("ToolbotBody", "Chest", new Vector3(0.00002F, 0.80955F, -3.0003F), new Vector3(0F, 180F, 0F), new Vector3(1.91497F, 2.05923F, 1.91497F)); AddDisplayRule("EngiBody", "Chest", new Vector3(0F, 0.22328F, -0.30179F), new Vector3(0F, 180F, 0F), new Vector3(0.20968F, 0.20968F, 0.20968F)); AddDisplayRule("EngiTurretBody", "Head", new Vector3(0.27521F, 0.12166F, 1.14743F), new Vector3(85.1495F, 160.0622F, 70.12805F), new Vector3(0.55429F, 0.55429F, 0.55429F)); AddDisplayRule("EngiWalkerTurretBody", "Head", new Vector3(0F, 0.28722F, -1.25043F), new Vector3(43.3701F, 180F, 0F), new Vector3(0.57174F, 0.69535F, 0.55769F)); AddDisplayRule("MageBody", "Chest", new Vector3(0F, 0.06311F, -0.36474F), new Vector3(350.1945F, 180F, 0F), new Vector3(0.149F, 0.149F, 0.149F)); AddDisplayRule("MercBody", "Chest", new Vector3(0F, -0.05041F, -0.25515F), new Vector3(0F, 180F, 0F), new Vector3(0.32494F, 0.32494F, 0.32494F)); AddDisplayRule("TreebotBody", "PlatformBase", new Vector3(-0.3864F, 1.18414F, -0.80142F), new Vector3(38.11974F, 196.571F, 5.81885F), new Vector3(0.23823F, 0.23823F, 0.23823F)); AddDisplayRule("LoaderBody", "MechBase", new Vector3(0F, 0.11231F, -0.2115F), new Vector3(0F, 180F, 0F), new Vector3(0.20914F, 0.20914F, 0.20914F)); AddDisplayRule("CrocoBody", "SpineChest3", new Vector3(0F, 0F, 0F), new Vector3(288.0211F, 180.0001F, 180.0788F), new Vector3(2.34323F, 2.34323F, 2.34323F)); AddDisplayRule("CaptainBody", "Chest", new Vector3(-0.05223F, 0.02899F, -0.26799F), new Vector3(0F, 185.0811F, 0F), new Vector3(0.40041F, 0.40041F, 0.40041F)); AddDisplayRule("BrotherBody", "chest", BrotherInfection.red, new Vector3(0F, 0.21823F, -0.11272F), new Vector3(0F, 240.0996F, 0F), new Vector3(0.125F, 0.125F, 0.125F)); AddDisplayRule("ScavBody", "Backpack", new Vector3(0F, 3.81932F, -0.17169F), new Vector3(0F, 180F, 0F), new Vector3(9.43553F, 9.03975F, 10.77423F)); if (SoftDependencies.SoftDependenciesCore.itemDisplaysSniper) { AddDisplayRule("SniperClassicBody", "Chest", new Vector3(0.00101F, 0.06171F, -0.23013F), new Vector3(6.80454F, 180F, 0F), new Vector3(0.33888F, 0.33888F, 0.33888F)); } AddDisplayRule("RailgunnerBody", "Backpack", new Vector3(-0.0405F, -0.23093F, -0.02859F), new Vector3(359.9882F, 182.3322F, 0.29078F), new Vector3(0.38543F, 0.444F, 0.3482F)); AddDisplayRule("VoidSurvivorBody", "Chest", new Vector3(0.00001F, -0.02248F, -0.19335F), new Vector3(24F, 180F, 0F), new Vector3(0.278F, 0.278F, 0.278F)); }; RecalculateStatsAPI.GetStatCoefficients += RecalculateStatsAPI_GetStatCoefficients; On.RoR2.CharacterBody.RecalculateStats += CharacterBody_RecalculateStats; On.RoR2.CharacterMaster.GetDeployableSameSlotLimit += CharacterMaster_GetDeployableSameSlotLimit; /* * On.RoR2.Skills.SkillCatalog.SetSkillDefs += SkillCatalog_SetSkillDefs; * On.EntityStates.GenericCharacterMain.PerformInputs += GenericCharacterMain_PerformInputs; */ }
public static GameObject CreateTrackerObject() { var trackerObject = new GameObject(); trackerObject.name = "trackingprefab"; trackerObject.AddComponent <NetworkIdentity>(); trackerObject.AddComponent <TrackCorpseClient>(); var prefab = PrefabAPI.InstantiateClone(trackerObject, "DeathMessageAboveCorpse_DefaultTrackerObject"); PrefabAPI.RegisterNetworkPrefab(prefab); return(prefab); }
internal static void Init() { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var notifPanel = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync <GameObject>("RoR2/Base/UI/NotificationPanel2.prefab").WaitForCompletion(), "MysticsRisky2Utils_NotificationPanel", false); notifTitleTmp = notifPanel.transform.Find("CanvasGroup/TextArea/Title").GetComponent <HGTextMeshProUGUI>(); notifDescriptionTmp = notifPanel.transform.Find("CanvasGroup/TextArea/Description").GetComponent <HGTextMeshProUGUI>(); }
private static void ModifyPod(SurvivorDef survivorDef) { var enforcerPodPrefab = PrefabAPI.InstantiateClone(genericPodPrefab, "EnforcerSurvivorPod"); //var pod = enforcerPodPrefab.transform.Find("Base/mdlEscapePod/EscapePodArmature/Base/"); //var attachedDoor = pod.Find("Door"); //var fallDoor = pod.Find("ReleaseExhaustFX/Door,Physics").gameObject; enforcerPodPrefab.AddComponent <PodComponentEnforcer>(); survivorDef.bodyPrefab.GetComponent <CharacterBody>().preferredPodPrefab = enforcerPodPrefab; }
protected virtual void CreateGenericDoppelganger(GameObject bodyPrefab, string masterName, string masterToCopy) { var prefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterMasters/" + masterToCopy + "MonsterMaster"); if (prefab == null) { TTGL_SurvivorPlugin.instance.Logger.LogError("Could not load Prefabs/CharacterMasters/" + masterToCopy + "MonsterMaster"); } GameObject gameObject = PrefabAPI.InstantiateClone(prefab, masterName); gameObject.GetComponent <CharacterMaster>().bodyPrefab = bodyPrefab; TTGL_SurvivorPlugin.masterPrefabs.Add(gameObject); }