public override void SetupBehavior() { base.SetupBehavior(); GameObject warbannerPrefab = Resources.Load <GameObject>("Prefabs/NetworkedObjects/WarbannerWard"); CharmWardPrefab = warbannerPrefab.InstantiateClone("Bulletstorm_CharmHornWard", true); BuffWard buffWard = CharmWardPrefab.GetComponent <BuffWard>(); buffWard.expires = true; buffWard.expireDuration = 0.6f; buffWard.buffDuration = CharmDuration; buffWard.invertTeamFilter = true; buffWard.animateRadius = false; buffWard.floorWard = false; buffWard.buffDef = Shared.Buffs.BuffsController.Charm; SkinnedMeshRenderer mesh = CharmWardPrefab.GetComponentInChildren <SkinnedMeshRenderer>(); mesh.material.color = new Color32(217, 20, 194, 255); if (CharmWardPrefab) { PrefabAPI.RegisterNetworkPrefab(CharmWardPrefab); } }
public override GameObject CreatePod() { GameObject podPrefab = PrefabAPI.InstantiateClone(genericPodPrefab, PodPrefabName); podPrefab.AddComponent <CommandoPodComponent>(); return(podPrefab); }
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 override GameObject CreatePod() { GameObject podPrefab = PrefabAPI.InstantiateClone(roboCratePodPrefab, PodPrefabName); podPrefab.AddComponent <AcridPodComponent>(); return(podPrefab); }
public override void SetupBehavior() { base.SetupBehavior(); GameObject commandoGrenadePrefab = Resources.Load <GameObject>("prefabs/projectiles/CommandoGrenadeProjectile"); BombPrefab = commandoGrenadePrefab.InstantiateClone("Bulletstorm_Bomb", true); var BombScale = 1.15f; BombPrefab.transform.localScale = new Vector3(BombScale, BombScale, BombScale); BombPrefab.GetComponent <ProjectileSimple>().desiredForwardSpeed = 25; //default 50 BombPrefab.GetComponent <ProjectileSimple>().lifetime = 5; //default 5 BombPrefab.GetComponent <ProjectileDamage>().damageColorIndex = DamageColorIndex.Item; BombPrefab.GetComponent <ProjectileImpactExplosion>().falloffModel = BlastAttack.FalloffModel.None; //Object.Destroy(BombPrefab.GetComponent<ApplyTorqueOnStart>()); var model = assetBundle.LoadAsset <GameObject>(ProjectileModelPath); var modelScale = 0.20f; model.transform.localScale = new Vector3(modelScale, modelScale, modelScale); model.AddComponent <NetworkIdentity>(); model.AddComponent <ProjectileGhostController>(); var controller = BombPrefab.GetComponent <ProjectileController>(); controller.ghostPrefab = model; //controller.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f); ProjectileAPI.Add(BombPrefab); if (BombPrefab) { PrefabAPI.RegisterNetworkPrefab(BombPrefab); } }
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 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 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 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 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 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); } }
private static void RegProj(GameObject g) { if (g) { PrefabAPI.RegisterNetworkPrefab(g); } }
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 SetupBehavior() { base.SetupBehavior(); iscBarrel = (InteractableSpawnCard)Resources.Load <SpawnCard>("SpawnCards/InteractableSpawnCard/iscBarrel1"); iscBarrelNew = UnityEngine.Object.Instantiate(iscBarrel); //remove? BarrelPrefab = iscBarrelNew.prefab; BarrelPrefab = BarrelPrefab.InstantiateClone($"Bulletstorm_Barrel", true); BarrelInteraction barrelInteraction = BarrelPrefab.GetComponent <BarrelInteraction>(); barrelInteraction.expReward = 0; barrelInteraction.goldReward = 0; BarrelDestroyOnInteraction barrelDestroyOnInteraction = BarrelPrefab.AddComponent <BarrelDestroyOnInteraction>(); barrelDestroyOnInteraction.lifetime = Lifetime; barrelDestroyOnInteraction.uselifetime = LifetimeAfterUse; iscBarrelNew.prefab = BarrelPrefab; if (BarrelPrefab) { PrefabAPI.RegisterNetworkPrefab(BarrelPrefab); } //if (HelperPlugin.ClassicItemsCompat.enabled) //HelperPlugin.ClassicItemsCompat.RegisterEmbryo(catalogIndex); }
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); }
public override void OnPluginAwake() { controllerPrefab = PrefabAPI.InstantiateClone(new GameObject(), "DasherDiscController", false); controllerPrefab.AddComponent <NetworkIdentity>().localPlayerAuthority = false; PrefabAPI.RegisterNetworkPrefab(controllerPrefab); NetworkingAPI.RegisterMessageType <DiscBaseState.Ready.SyncFireTrigger>(); }
/// <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); }
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 CreateProjectiles() { //needs to be declared first GameObject sporeGrenadeDotZonePrefab = Resources.Load <GameObject>("prefabs/projectiles/SporeGrenadeProjectileDotZone"); MolotovDotZonePrefab = sporeGrenadeDotZonePrefab.InstantiateClone("Bulletstorm_MolotovDotZone", true); MolotovDotZonePrefab.GetComponent <ProjectileDamage>().damageType = DamageType.IgniteOnHit; ProjectileDotZone projectileDotZone = MolotovDotZonePrefab.GetComponent <ProjectileDotZone>(); projectileDotZone.damageCoefficient = PercentDamagePerTick; projectileDotZone.resetFrequency = Mathf.Clamp(FrequencyOfTicks, 0f, 60f); projectileDotZone.lifetime = DurationAoE; //projectileDotZone.impactEffect = GlassBreakEffect; GameObject sporeGrenadePrefab = Resources.Load <GameObject>("prefabs/projectiles/SporeGrenadeProjectile"); MolotovPrefab = sporeGrenadePrefab.InstantiateClone("Bulletstorm_Molotov", true); MolotovPrefab.GetComponent <ProjectileDamage>().damageColorIndex = DamageColorIndex.Item; var PIE = MolotovPrefab.GetComponent <ProjectileImpactExplosion>(); if (DurationAoE > 0) { PIE.childrenProjectilePrefab = MolotovDotZonePrefab; } else { Object.Destroy(PIE); } MolotovPrefab.GetComponent <ProjectileSimple>().desiredForwardSpeed = 35; //50 ApplyTorqueOnStart applyTorque = MolotovPrefab.AddComponent <ApplyTorqueOnStart>(); applyTorque.randomize = true; applyTorque.localTorque = new Vector3(400f, 10f, 400f); GameObject model = MainAssets.LoadAsset <GameObject>(ProjectileModelPath); model.AddComponent <NetworkIdentity>(); model.AddComponent <ProjectileGhostController>(); model.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f); var controller = MolotovPrefab.GetComponent <ProjectileController>(); controller.ghostPrefab = model; ProjectileAPI.Add(MolotovPrefab); ProjectileAPI.Add(MolotovDotZonePrefab); if (MolotovPrefab) { PrefabAPI.RegisterNetworkPrefab(MolotovPrefab); } if (MolotovDotZonePrefab) { PrefabAPI.RegisterNetworkPrefab(MolotovDotZonePrefab); } }
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 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); }
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); }
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 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 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); } )); } }
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); }; }
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); }
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>(); }