Example #1
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;
        }
        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);
        }
Example #3
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);
 }
Example #4
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));
                }
            };
        }
Example #5
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.");
        }
Example #6
0
        public override GameObject CreatePod()
        {
            GameObject podPrefab = PrefabAPI.InstantiateClone(genericPodPrefab, PodPrefabName);

            podPrefab.AddComponent <CommandoPodComponent>();
            return(podPrefab);
        }
Example #7
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);
        }
Example #8
0
        public override GameObject CreatePod()
        {
            GameObject podPrefab = PrefabAPI.InstantiateClone(roboCratePodPrefab, PodPrefabName);

            podPrefab.AddComponent <AcridPodComponent>();
            return(podPrefab);
        }
Example #9
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);
            };
        }
Example #10
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);
            }
        }
Example #11
0
        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));
                    }
                };
            };
        }
Example #12
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);
        }
 /// <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);
 }
Example #14
0
        public override void OnPluginAwake()
        {
            controllerPrefab = PrefabAPI.InstantiateClone(new GameObject(), "DasherDiscController", false);
            controllerPrefab.AddComponent <NetworkIdentity>().localPlayerAuthority = false;
            PrefabAPI.RegisterNetworkPrefab(controllerPrefab);

            NetworkingAPI.RegisterMessageType <DiscBaseState.Ready.SyncFireTrigger>();
        }
Example #15
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);
        }
Example #16
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);
        }
        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>();
        }
Example #18
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);
        }
Example #19
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);
        }
        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);
                }
                                                   ));
            }
        }
Example #22
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);
        }
        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>();
        }
Example #24
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);
            };
        }
Example #25
0
        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);
        }
Example #26
0
        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);
        }
Example #28
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>();
        }
Example #29
0
        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;
        }
Example #30
0
        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);
        }