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);
            }
        }
Exemple #2
0
        public override GameObject CreatePod()
        {
            GameObject podPrefab = PrefabAPI.InstantiateClone(genericPodPrefab, PodPrefabName);

            podPrefab.AddComponent <CommandoPodComponent>();
            return(podPrefab);
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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);
            }
        }
Exemple #6
0
 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);
 }
Exemple #7
0
        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));
                    }
                };
            };
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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));
                }
            };
        }
Exemple #11
0
        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);
            };
        }
Exemple #12
0
        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);
        }
Exemple #15
0
        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);
        }
Exemple #16
0
        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);
 }
Exemple #19
0
        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);
            }
        }
Exemple #21
0
        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);
        }
Exemple #22
0
        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);
        }
Exemple #23
0
        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>();
        }
Exemple #28
0
        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);
            };
        }
Exemple #29
0
        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);
        }
Exemple #30
0
        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>();
        }