internal static void PopulateDisplays()
        {
            ItemDisplayRuleSet itemDisplayRuleSet = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponent <ModelLocator>().modelTransform.GetComponent <CharacterModel>().itemDisplayRuleSet;

            ItemDisplayRuleSet.KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups;
            for (int i = 0; i < keyAssetRuleGroups.Length; i++)
            {
                ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules;
                for (int j = 0; j < rules.Length; j++)
                {
                    GameObject followerPrefab = rules[j].followerPrefab;
                    bool       flag           = followerPrefab;
                    if (flag)
                    {
                        string name  = followerPrefab.name;
                        string key   = (name != null) ? name.ToLower() : null;
                        bool   flag2 = !TemplarItemDisplays.itemDisplayPrefabs.ContainsKey(key);
                        if (flag2)
                        {
                            TemplarItemDisplays.itemDisplayPrefabs[key] = followerPrefab;
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        void LoadInteractablePrefab()
        {
            itemDroneInteractablePrefab = TinkersSatchelPlugin.resources.LoadAsset <GameObject>("Assets/TinkersSatchel/Prefabs/Characters/ItemDrone/ItemDroneBroken.prefab");

            var ppc = itemDroneInteractablePrefab.GetComponent <PickupPickerController>();

            ppc.available   = true;
            ppc.panelPrefab = itemDronePanelPrefab;

            var ppcf = itemDroneInteractablePrefab.GetComponent <PickupPickerControllerFilteredSelector>();

            //scrap
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhite"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreen"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapYellow"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRedSuppressed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreenSuppressed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhiteSuppressed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrap"));
            //consumed items
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrapConsumed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeConsumed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeVoidConsumed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/FragileDamageBonusConsumed"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/HealingPotionConsumed"));
            //AI summons (bugged)
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/BeetleGland"));
            ppcf.blacklistedItems.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RoboBallBuddy"));
        }
Exemplo n.º 3
0
        internal override void SetupAttributes()
        {
            myDef = CloneSkillDef(targetVariantDef);

            var nametoken = "CLASSICITEMS_SCEPLOADER_CHARGEZAPFISTNAME";

            newDescToken = "CLASSICITEMS_SCEPLOADER_CHARGEZAPFISTDESC";
            oldDescToken = targetVariantDef.skillDescriptionToken;
            var namestr = "Thundercrash";

            LanguageAPI.Add(nametoken, namestr);

            myDef.skillName             = namestr;
            myDef.skillNameToken        = nametoken;
            myDef.skillDescriptionToken = newDescToken;
            myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/loader_chargezapfisticon.png");

            ContentAddition.AddSkillDef(myDef);

            projReplacer = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/LoaderZapCone").InstantiateClone("CIScepLoaderThundercrash", true);
            var proxb = projReplacer.GetComponent <ProjectileProximityBeamController>();

            proxb.attackFireCount *= 3;
            proxb.maxAngleFilter   = 180f;
            projReplacer.transform.Find("Effect").localScale *= 3f;

            ContentAddition.AddProjectile(projReplacer);
        }
Exemplo n.º 4
0
        //Adds tesla mine to projectile register list
        internal static void RegisterTeslaMine()
        {
            //Start with the base engi mine
            teslaMinePrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/engimine").InstantiateClone("TeslaMine", true);
            //If it exists (AKA if shit no break)
            if (teslaMinePrefab)
            {
                //Change the forward speed on it a bit, not sure why but it feels nice so keeping it
                teslaMinePrefab.GetComponent <ProjectileSimple>().desiredForwardSpeed = 40f;

                //Grab the arming state machine (Handler for the arming states, I think)
                EntityStateMachine teslaArmingStateMachine = teslaMinePrefab.GetComponentsInChildren <EntityStateMachine>().First(machine => machine.customName == "Arming");
                //Replace the initial and main states of the arming state to our own, cooler states
                teslaArmingStateMachine.initialStateType = new SerializableEntityStateType(typeof(TeslaArmingUnarmedState));
                teslaArmingStateMachine.mainStateType    = new SerializableEntityStateType(typeof(TeslaArmingUnarmedState));

                //Grab the main state machine (Handler for the mine after it has landed and is ready to splode)
                EntityStateMachine teslaMainStateMachine = teslaMinePrefab.GetComponentsInChildren <EntityStateMachine>().First(machine => machine.customName == "Main");
                //Replace initial and main with our own: Initial is the waiting for target, main state is predet state
                //Note that the main state is also called when a mine is about to be unloaded (For ex too many mines)
                teslaMainStateMachine.initialStateType = new SerializableEntityStateType(typeof(TeslaWaitForStick));
                teslaMainStateMachine.mainStateType    = new SerializableEntityStateType(typeof(TeslaPreDetState));

                //Add it to the projectile queue after modifying it
                projList.Add(teslaMinePrefab);
            }
        }
Exemplo n.º 5
0
        //Adds tracking grenade to projectile register list
        internal static void RegisterDebuffNade()
        {
            //Start with base engi grenade cause it has a nice grenade shape
            debuffGrenadePrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/engigrenadeprojectile").InstantiateClone("DebuffGrenade", true);
            //As long as it actually exists we can do stuff with it
            if (debuffGrenadePrefab)
            {
                //We want ours to go a bit faster than the shitty nade that engi uses
                debuffGrenadePrefab.GetComponent <ProjectileSimple>().desiredForwardSpeed *= 1.5f;

                //We gotta take hold of the impact explosion component
                ProjectileImpactExplosion debuffGrenadeExplosion = debuffGrenadePrefab.GetComponent <ProjectileImpactExplosion>();
                //We want ours to explode on impact instead of bouncing around
                debuffGrenadeExplosion.destroyOnWorld = true;
                //We want hella more radius
                debuffGrenadeExplosion.blastRadius = Configuration.GetConfigValue <float>(Configuration.CaptainDebuffnadeRadius);
                //Linear falloff, idk what it normally is but this way we know for sure its linear
                debuffGrenadeExplosion.falloffModel = BlastAttack.FalloffModel.Linear;
                //Implement our own proc coefficient-to-damage-type stuff
                debuffGrenadeExplosion.blastProcCoefficient = BuffsLoading.ProcToDamageTypeEncoder(BuffsLoading.trackingOnHit.procIndex, 1f);
                //Change the explosion fx to something cooler as well
                debuffGrenadeExplosion.impactEffect = LegacyResourcesAPI.Load <GameObject>("prefabs/effects/omnieffect/OmniExplosionVFXScavCannonImpactExplosion");

                //Nab the damage component of it
                ProjectileDamage debuffGrenadeDamage = debuffGrenadePrefab.GetComponent <ProjectileDamage>();
                //This lets us use our own special damage type, it converts back to generic when being read off
                debuffGrenadeDamage.damageType = DamageType.NonLethal;

                //Add the projectile to the list
                projList.Add(debuffGrenadePrefab);
            }
        }
Exemplo n.º 6
0
        internal override void SetupAttributes()
        {
            myDef = CloneSkillDef(targetVariantDef);

            var nametoken = "CLASSICITEMS_SCEPCOMMANDO_GRENADENAME";

            newDescToken = "CLASSICITEMS_SCEPCOMMANDO_GRENADEDESC";
            oldDescToken = targetVariantDef.skillDescriptionToken;
            var namestr = "Carpet Bomb";

            LanguageAPI.Add(nametoken, namestr);

            myDef.skillName             = namestr;
            myDef.skillNameToken        = nametoken;
            myDef.skillDescriptionToken = newDescToken;
            myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/commando_grenadeicon.png");

            ContentAddition.AddSkillDef(myDef);

            projReplacer = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/CommandoGrenadeProjectile").InstantiateClone("CIScepCommandoGrenade", true);
            var pie = projReplacer.GetComponent <ProjectileImpactExplosion>();

            pie.blastDamageCoefficient *= 0.5f;
            pie.bonusBlastForce        *= 0.5f;

            ContentAddition.AddProjectile(projReplacer);
        }
Exemplo n.º 7
0
        public override void SetupAttributes()
        {
            base.SetupAttributes();
            rewindStateType = ContentAddition.AddEntityState <RewindState>(out _);
            R2API.Networking.NetworkingAPI.RegisterMessageType <MsgRewind>();

            blacklistedSkills = new[] {
                LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropHealing"),
                LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropHacking"),
                LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropShocking"),
                LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CallSupplyDropEquipmentRestock"),
                LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CaptainSkillUsedUp"),
                LegacyResourcesAPI.Load <RoR2.Skills.SkillDef>("SkillDefs/CaptainBody/CaptainCancelDummy")
            };

            rewindBuff            = ScriptableObject.CreateInstance <BuffDef>();
            rewindBuff.buffColor  = Color.white;
            rewindBuff.canStack   = true;
            rewindBuff.isDebuff   = false;
            rewindBuff.isCooldown = true;
            rewindBuff.name       = "TKSATRewind";
            rewindBuff.iconSprite = TinkersSatchelPlugin.resources.LoadAsset <Sprite>("Assets/TinkersSatchel/Textures/MiscIcons/rewindBuffIcon.png");
            ContentAddition.AddBuffDef(rewindBuff);

            if (Compat_ClassicItems.enabled)
            {
                LanguageAPI.Add("TKSAT_REWIND_CI_EMBRYO_APPEND", "\n<style=cStack>Beating Embryo: 50% chance to not consume stock.</style>");
                Compat_ClassicItems.RegisterEmbryoHook(equipmentDef, "TKSAT_REWIND_CI_EMBRYO_APPEND", () => "TKSAT.CausalCamera");
            }
        }
Exemplo n.º 8
0
        public void Awake()
        {
            Instance = SingletonHelper.Assign(Instance, this);

            LogSpawnCards    = Config.Bind("SpawnCards", "LogToConsole", false, "Log all available spawn cards from \"SpawnCards/CharacterSpawnCards/\"");
            CustomSpawnCards = Config.Bind("SpawnCards", "CustomSpawnCards",
                                           "SpawnCards/CharacterSpawnCards/cscJellyfish; SpawnCards/CharacterSpawnCards/cscRoboBallMini",
                                           "Semi-colon seperated (;) entries of Spawn Cards");

            if (LogSpawnCards.Value)
            {
                List <String> allPaths = new List <string>();
                LegacyResourcesAPI.GetAllPaths(allPaths);

                foreach (var resource in allPaths)
                {
                    if (resource.StartsWith("SpawnCards/CharacterSpawnCards/"))
                    {
                        Debug.LogError(resource);
                    }
                }
            }

            // FIXME: Get rid of this hack and just use a prefab
            On.RoR2.NetworkSession.BeginRun += NetworkSession_BeginRun;
            // This is the real way to integrate
            // GameModeCatalog.getAdditionalEntries += RegisterVIPRun;
        }
Exemplo n.º 9
0
        public override void OnEnter()
        {
            //this.baseDuration = base.baseDuration;


            this.crosshairOverridePrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/Crosshair/ToolbotGrenadeLauncherCrosshair");
            this.maxBloomRadius          = .1f;
            this.minBloomRadius          = 1f;
            this.originalScale           = this.chargeEffectPrefab.transform.localScale;
            base.OnEnter();
            ChildLocator childLocator = base.GetModelChildLocator();

            //if (VRAPI.Utils.IsUsingMotionControls(this.characterBody) == true)
            //{
            //    Transform temp = MotionControls.dominantHand.transform.Find("Muzzle");
            //    chargeEffect = temp.GetChild(0).gameObject;


            //}
            if (childLocator)
            {
                chargeEffect = childLocator.FindChild("chargeEffect").gameObject;
                chargeEffect.SetActive(false);//temp
            }
        }
Exemplo n.º 10
0
        internal override void SetupAttributes()
        {
            myDef = CloneSkillDef(targetVariantDef);

            var nametoken = "CLASSICITEMS_SCEPCAPTAIN_AIRSTRIKENAME";

            newDescToken = "CLASSICITEMS_SCEPCAPTAIN_AIRSTRIKEDESC";
            oldDescToken = targetVariantDef.skillDescriptionToken;
            var namestr = "21-Probe Salute";

            LanguageAPI.Add(nametoken, namestr);

            myDef.skillName             = namestr;
            myDef.skillNameToken        = nametoken;
            myDef.skillDescriptionToken = newDescToken;
            myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/captain_airstrikeicon.png");

            ContentAddition.AddSkillDef(myDef);

            var oldCallDef = LegacyResourcesAPI.Load <SkillDef>("skilldefs/captainbody/CallAirstrike");

            myCallDef = CloneSkillDef(oldCallDef);
            myCallDef.baseMaxStock         = 21;
            myCallDef.mustKeyPress         = false;
            myCallDef.isCombatSkill        = true;
            myCallDef.baseRechargeInterval = 0.07f;
            myCallDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/captain_airstrikeicon.png");

            ContentAddition.AddSkillDef(myCallDef);
        }
Exemplo n.º 11
0
        public override bool OnUse(EquipmentSlot equipmentSlot)
        {
            MysticsRisky2UtilsEquipmentTarget targetInfo = equipmentSlot.GetComponent <MysticsRisky2UtilsEquipmentTarget>();

            if (targetInfo)
            {
                if (targetInfo.obj)
                {
                    PurchaseInteraction purchaseInteraction = targetInfo.obj.GetComponent <MysticsItemsDuplicatorLocator>().purchaseInteraction;
                    purchaseInteraction.SetAvailable(false);
                    purchaseInteraction.lockGameObject = null;
                    ShopTerminalBehavior shopTerminalBehavior = targetInfo.obj.GetComponent <MysticsItemsDuplicatorLocator>().shopTerminalBehavior;
                    EffectManager.SimpleEffect(LegacyResourcesAPI.Load <GameObject>("Prefabs/Effects/OmniEffect/OmniRecycleEffect"), shopTerminalBehavior.pickupDisplay.transform.position, Quaternion.identity, true);
                    shopTerminalBehavior.SetHasBeenPurchased(true);
                    for (var i = 0; i < amount; i++)
                    {
                        PickupDropletController.CreatePickupDroplet(
                            shopTerminalBehavior.pickupIndex,
                            (shopTerminalBehavior.dropTransform ? shopTerminalBehavior.dropTransform : shopTerminalBehavior.transform).position,
                            shopTerminalBehavior.transform.TransformVector(shopTerminalBehavior.dropVelocity)
                            );
                    }
                    shopTerminalBehavior.SetNoPickup();
                    targetInfo.Invalidate();
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 12
0
        private void MainMenuController_Start1(On.RoR2.UI.MainMenu.MainMenuController.orig_Start orig, RoR2.UI.MainMenu.MainMenuController self)
        {
            orig(self);

            //Dictionary<string, string> shorthand_to_Name = new Dictionary<string, string>();
            foreach (var skillDef in skillDefs)
            {
                //instance.Logger.LogMessage($"Loading SkillDefs/{skillDef}");
                var loadedDef  = LegacyResourcesAPI.Load <SkillDef>($"SkillDefs/{skillDef}");
                var slashIndex = skillDef.IndexOf('/');
                var nameToken  = skillDef.Substring(0, slashIndex - 4).ToUpper() + "_BODY_NAME";
                var category   = Language.GetString(nameToken);
                if (!loadedDef)
                {
                    //instance.Logger.LogMessage($"This is what's left: {slashIndex} {category}");
                    continue;
                }
                var skillName   = Language.GetString(loadedDef.skillNameToken);
                var defaultDesc = "mustKeyPress";
                if (issueDefs.Contains(skillDef))
                {
                    defaultDesc += ". May cause irregular outcomes.";
                }
                var tempConfig = instance.Config.Bind(category, skillName, loadedDef.mustKeyPress, defaultDesc);

                loadedDef.mustKeyPress = tempConfig.Value;
            }

            On.RoR2.UI.MainMenu.MainMenuController.Start -= MainMenuController_Start1;
        }
Exemplo n.º 13
0
        public override void OnEnter()
        {
            speedCoefficient      = 0f;
            duration              = Rewind.instance.phaseDuration;
            this.beginSoundString = "Play_huntress_shift_start";
            this.endSoundString   = "Play_huntress_shift_end";
            base.OnEnter();
            cpt       = outer.commonComponents.characterBody.GetComponent <RewindComponent>();
            currFrame = cpt.frames.Count;
            if (characterModel)
            {
                characterModel.invisibilityCount--;
            }
            cpt.isRewinding = true;

            modelTransform = base.GetModelTransform();
            if (modelTransform)
            {
                var ovl = modelTransform.gameObject.AddComponent <TemporaryOverlay>();
                ovl.duration              = duration;
                ovl.animateShaderAlpha    = true;
                ovl.alphaCurve            = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
                ovl.destroyComponentOnEnd = true;
                ovl.originalMaterial      = LegacyResourcesAPI.Load <Material>("Materials/matHuntressFlashExpanded");
                ovl.AddToCharacerModel(modelTransform.GetComponent <CharacterModel>());
            }
        }
Exemplo n.º 14
0
        public override void OnEnter()
        {
            base.OnEnter();
            base.characterBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/crosshair/SMGCrosshair");
            this.minChargeDuration = 0.75f * (ChargeSpear.baseMinChargeDuration / this.attackSpeedStat);
            this.chargeDuration    = 0.75f * (ChargeSpear.baseChargeDuration / this.attackSpeedStat);
            Util.PlaySound(MinigunSpinUp.sound, base.gameObject);
            base.GetModelAnimator().SetBool("WeaponIsReady", true);
            this.muzzleTransform = base.FindModelChild(MinigunState.muzzleName);
            bool flag  = this.muzzleTransform && MinigunSpinUp.chargeEffectPrefab;
            bool flag2 = flag;

            if (flag2)
            {
                this.chargeInstance = UnityEngine.Object.Instantiate <GameObject>(MinigunSpinUp.chargeEffectPrefab, this.muzzleTransform.position, this.muzzleTransform.rotation);
                this.chargeInstance.transform.parent = this.muzzleTransform;
                ScaleParticleSystemDuration component = this.chargeInstance.GetComponent <ScaleParticleSystemDuration>();
                bool flag3 = component;
                bool flag4 = flag3;
                if (flag4)
                {
                    component.newDuration = this.minChargeDuration;
                }
            }
        }
Exemplo n.º 15
0
        internal static ItemDef DefineItem()
        {
            ItemTag[] tags = { ItemTag.Healing, ItemTag.Utility };
            if (AspectWorldUnique.Value)
            {
                Array.Resize(ref tags, 3);
                tags[2] = ItemTag.WorldUnique;
            }

            Sprite outlineSprite;

            if (AspectRedTier.Value)
            {
                outlineSprite = Catalog.Sprites.OutlineRed;
            }
            else
            {
                outlineSprite = Catalog.Sprites.OutlineYellow;
            }

            ItemDef itemDef = ScriptableObject.CreateInstance <ItemDef>();

            itemDef.name              = identifier;
            itemDef.tags              = tags;
            itemDef._itemTierDef      = AspectRedTier.Value ? Catalog.RedItemTier : Catalog.BossItemTier;
            itemDef.pickupModelPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/PickupModels/PickupAffixWhite");
            itemDef.pickupIconSprite  = Catalog.CreateAspectSprite(Catalog.Sprites.AffixGold, outlineSprite);

            itemDef.AutoPopulateTokens();

            return(itemDef);
        }
Exemplo n.º 16
0
 public override void OnExit()
 {
     base.OnExit();
     base.PlayCrossfade("Gesture, Additive", "BufferEmpty", 0.2f);
     base.GetModelAnimator().SetBool("WeaponIsReady", false);
     base.characterBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/crosshair/SimpleDotCrosshair");
 }
Exemplo n.º 17
0
        private static void PopulateFromBody(string bodyName)
        {
            ItemDisplayRuleSet itemDisplayRuleSet = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterBodies/" + bodyName + "Body").GetComponent <ModelLocator>().modelTransform.GetComponent <CharacterModel>().itemDisplayRuleSet;

            ItemDisplayRuleSet.KeyAssetRuleGroup[] item = itemDisplayRuleSet.keyAssetRuleGroups;

            for (int i = 0; i < item.Length; i++)
            {
                ItemDisplayRule[] rules = item[i].displayRuleGroup.rules;

                for (int j = 0; j < rules.Length; j++)
                {
                    GameObject followerPrefab = rules[j].followerPrefab;
                    if (followerPrefab)
                    {
                        string name = followerPrefab.name;
                        string key  = name?.ToLower();
                        if (!itemDisplayPrefabs.ContainsKey(key))
                        {
                            itemDisplayPrefabs[key] = followerPrefab;
                        }
                    }
                }
            }
        }
Exemplo n.º 18
0
        protected virtual void SetupRagdoll(GameObject model)
        {
            RagdollController ragdollController = model.GetComponent <RagdollController>();

            if (!ragdollController)
            {
                return;
            }

            if (ragdollMaterial == null)
            {
                ragdollMaterial = LegacyResourcesAPI.Load <GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren <RagdollController>().bones[1].GetComponent <Collider>().material;
            }

            foreach (Transform i in ragdollController.bones)
            {
                if (i)
                {
                    i.gameObject.layer = LayerIndex.ragdoll.intVal;
                    Collider j = i.GetComponent <Collider>();
                    if (j)
                    {
                        j.material       = ragdollMaterial;
                        j.sharedMaterial = ragdollMaterial;
                    }
                }
            }
        }
Exemplo n.º 19
0
        public override void SetupAttributes()
        {
            base.SetupAttributes();

            var mshPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/MushroomWard");

            var bwPrefabPrefab = new GameObject("SpikestripAuraPrefabPrefab");

            bwPrefabPrefab.AddComponent <NetworkIdentity>();
            bwPrefabPrefab.AddComponent <TeamFilter>();
            var bwPfb2ModelAdjust = new GameObject("SpikestripAuraModelAdjust");

            bwPfb2ModelAdjust.transform.parent = bwPrefabPrefab.transform;
            bwPfb2ModelAdjust.AddComponent <MeshFilter>().mesh       = mshPrefab.GetComponentInChildren <MeshFilter>().mesh;
            bwPfb2ModelAdjust.AddComponent <MeshRenderer>().material = UnityEngine.Object.Instantiate(mshPrefab.GetComponentInChildren <MeshRenderer>().material);
            bwPfb2ModelAdjust.GetComponent <MeshRenderer>().material.SetVector("_TintColor", new Vector4(0.6f, 0.06f, 0.5f, 0.3f));
            bwPrefabPrefab.transform.localScale *= 2f;
            var bw = bwPrefabPrefab.AddComponent <BuffWard>();

            bw.invertTeamFilter = true;
            bw.rangeIndicator   = bwPfb2ModelAdjust.GetComponent <MeshRenderer>().transform;
            bw.expires          = false;
            bw.Networkradius    = baseRadius;
            bw.buffDuration     = 0.5f;
            bw.interval         = 0.5f;
            bw.buffDef          = RoR2Content.Buffs.Slow50;
            spikeWardPrefab     = bwPrefabPrefab.InstantiateClone("SpikestripAuraPrefab", true);
            UnityEngine.Object.Destroy(bwPrefabPrefab);
        }
Exemplo n.º 20
0
        internal override void SetupAttributes()
        {
            myDef = CloneSkillDef(targetVariantDef);

            var nametoken = "CLASSICITEMS_SCEPHUNTRESS_BALLISTANAME";

            newDescToken = "CLASSICITEMS_SCEPHUNTRESS_BALLISTADESC";
            oldDescToken = targetVariantDef.skillDescriptionToken;
            var namestr = "Rabauld";

            LanguageAPI.Add(nametoken, namestr);

            myDef.skillName             = namestr;
            myDef.skillNameToken        = nametoken;
            myDef.skillDescriptionToken = newDescToken;
            myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/huntress_ballistaicon.png");

            ContentAddition.AddSkillDef(myDef);

            var oldCtxDef = LegacyResourcesAPI.Load <SkillDef>("skilldefs/huntressbody/FireArrowSnipe");

            myCtxDef = CloneSkillDef(oldCtxDef);

            myCtxDef.skillName             = namestr;
            myCtxDef.skillNameToken        = nametoken;
            myCtxDef.skillDescriptionToken = newDescToken;
            myCtxDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/huntress_ballistaicon.png");

            ContentAddition.AddSkillDef(myCtxDef);
        }
Exemplo n.º 21
0
        public override void SetupBehavior()
        {
            base.SetupBehavior();

            FakeInventory.blacklist.Add(itemDef);
            //scrap
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhite"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreen"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapYellow"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapRedSuppressed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapGreenSuppressed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ScrapWhiteSuppressed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrap"));
            //consumable items
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrap"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLife"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeVoid"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/FragileDamageBonus"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/HealingPotion"));
            //consumed items
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RegeneratingScrapConsumed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeConsumed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/ExtraLifeVoidConsumed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/FragileDamageBonusConsumed"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/HealingPotionConsumed"));
            //AI summons (bugged)
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/BeetleGland"));
            mimicBlacklist.Add(LegacyResourcesAPI.Load <ItemDef>("ItemDefs/RoboBallBuddy"));
        }
Exemplo n.º 22
0
        internal override void SetupAttributes()
        {
            myDef = CloneSkillDef(targetVariantDef);

            var nametoken = "CLASSICITEMS_SCEPCROCO_DISEASENAME";

            newDescToken = "CLASSICITEMS_SCEPCROCO_DISEASEDESC";
            oldDescToken = targetVariantDef.skillDescriptionToken;
            var namestr = "Plague";

            LanguageAPI.Add(nametoken, namestr);

            myDef.skillName             = namestr;
            myDef.skillNameToken        = nametoken;
            myDef.skillDescriptionToken = newDescToken;
            myDef.icon = ClassicItemsPlugin.resources.LoadAsset <Sprite>("Assets/ClassicItems/Textures/ScepterSkillIcons/croco_firediseaseicon.png");

            ContentAddition.AddSkillDef(myDef);

            var mshPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/MushroomWard");

            var dwPrefabPrefab = new GameObject("CIDiseaseAuraPrefabPrefab");

            dwPrefabPrefab.AddComponent <TeamFilter>();
            dwPrefabPrefab.AddComponent <MeshFilter>().mesh       = mshPrefab.GetComponentInChildren <MeshFilter>().mesh;
            dwPrefabPrefab.AddComponent <MeshRenderer>().material = UnityEngine.Object.Instantiate(mshPrefab.GetComponentInChildren <MeshRenderer>().material);
            dwPrefabPrefab.GetComponent <MeshRenderer>().material.SetVector("_TintColor", new Vector4(1.5f, 0.3f, 1f, 0.3f));
            dwPrefabPrefab.AddComponent <NetworkedBodyAttachment>().forceHostAuthority = true;
            var dw = dwPrefabPrefab.AddComponent <DiseaseWard>();

            dw.rangeIndicator = dwPrefabPrefab.GetComponent <MeshRenderer>().transform;
            dw.interval       = 1f;
            diseaseWardPrefab = dwPrefabPrefab.InstantiateClone("CIDiseaseWardAuraPrefab", true);
            UnityEngine.Object.Destroy(dwPrefabPrefab);
        }
Exemplo n.º 23
0
        public override void SetupAttributes()
        {
            base.SetupAttributes();

            var captainSD = LegacyResourcesAPI.Load <SkillDef>("SkillDefs/CaptainBody/CaptainSkillUsedUp");

            disabledSkillDef = SkillUtil.CloneSkillDef(captainSD);
            disabledSkillDef.skillNameToken               = "TKSAT_DISABLED_SKILL_NAME";
            disabledSkillDef.skillDescriptionToken        = "TKSAT_DISABLED_SKILL_DESCRIPTION";
            disabledSkillDef.dontAllowPastMaxStocks       = false;
            disabledSkillDef.beginSkillCooldownOnSkillEnd = true;

            ContentAddition.AddSkillDef(disabledSkillDef);

            tauntDebuff            = ScriptableObject.CreateInstance <BuffDef>();
            tauntDebuff.buffColor  = Color.white;
            tauntDebuff.canStack   = false;
            tauntDebuff.isDebuff   = true;
            tauntDebuff.name       = "TKSATTaunt";
            tauntDebuff.iconSprite = Addressables.LoadAssetAsync <Sprite>("RoR2/Base/Common/MiscIcons/texAttackIcon.png")
                                     .WaitForCompletion();
            ContentAddition.AddBuffDef(tauntDebuff);

            R2API.Networking.NetworkingAPI.RegisterMessageType <ServerTimedSkillDisable.MsgApply>();
            R2API.Networking.NetworkingAPI.RegisterMessageType <ServerTimedSkillDisable.MsgRemove>();
        }
Exemplo n.º 24
0
        protected virtual void SetupFootstepController(GameObject model)
        {
            var footstepHandler = model.AddComponent <FootstepHandler>();

            footstepHandler.enableFootstepDust = true;
            footstepHandler.baseFootstepString = "Play_player_footstep";
            footstepHandler.footstepDustPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/GenericFootstepDust");
        }
Exemplo n.º 25
0
        protected internal override void SetupAttributes()
        {
            base.SetupAttributes();
            LanguageAPI.Add(descriptionAppendToken, "\n<style=cStack>Beating Embryo: Double duration. Cannot multiproc.</style>");

            boostedScannerPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/ChestScanner").InstantiateClone("EmbryoBoostedScannerPrefab", true);
            boostedScannerPrefab.GetComponent <ChestRevealer>().revealDuration *= 2f;
        }
Exemplo n.º 26
0
 public override void OnEnter()
 {
     base.OnEnter();
     base.characterBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/crosshair/SimpleDotCrosshair");
     this.duration = MinigunSpinDown.baseDuration * 0.1f / this.attackSpeedStat;
     Util.PlayAttackSpeedSound(MinigunSpinDown.sound, base.gameObject, this.attackSpeedStat);
     base.GetModelAnimator().SetBool("WeaponIsReady", false);
 }
Exemplo n.º 27
0
        public void CreateScene()
        {
            // this creates a config option to enable the character- feel free to remove if the character is the only thing in your mod
            //sceneEnabled = Modules.Config.CharacterEnableConfig("TTGLIntro");

            if (true)//sceneEnabled.Value)
            {
                /*
                 * var sceneDef = ScriptableObject.CreateInstance<SceneDef>();
                 * ((ScriptableObject)sceneDef).name = "TTGL_intro";
                 * sceneDef.cachedName = "TTGL_intro";
                 * sceneDef.sceneAddress = new AssetReferenceScene("4fcac21c79f25cd40bb148a83606f1e0");
                 * sceneDef.sceneType = SceneType.Menu;
                 * sceneDef.isOfflineScene = true;
                 * sceneDef.loreToken = "TTGL_intro_LoreToken";
                 * sceneDef.shouldIncludeInLogbook = false;
                 * TTGL_SurvivorPlugin.sceneDefs.Add(sceneDef);
                 */

                //On.RoR2.SceneCatalog.Init += SceneCatalog_Init;
                //Music;

                SceneManager.sceneLoaded += SceneManager_sceneLoaded;

                var d = new SoundAPI.Music.CustomMusicData();
                d.BanksFolderPath          = Assets.ResourcesPath;
                d.BepInPlugin              = TTGL_SurvivorPlugin.instance.Info.Metadata;
                d.InitBankName             = "TTGL_Init.bnk";
                d.PlayMusicSystemEventName = "Play_TTGLMusic";
                d.SoundBankName            = "TTGLSceneMusic.bnk";

                d.SceneDefToTracks = new Dictionary <SceneDef, IEnumerable <SoundAPI.Music.MainAndBossTracks> >();

                var introScene = LegacyResourcesAPI.Load <SceneDef>("SceneDefs/intro");

                // that following block of code create a track def for a custom music in the logbook s
                var TTGL_introTrackDef = ScriptableObject.CreateInstance <SoundAPI.Music.CustomMusicTrackDef>();
                TTGL_introTrackDef.cachedName    = "TTGL_intro";
                TTGL_introTrackDef.SoundBankName = d.SoundBankName;
                TTGL_introTrackDef.CustomStates  = new List <SoundAPI.Music.CustomMusicTrackDef.CustomState>();
                var cstate1 = new SoundAPI.Music.CustomMusicTrackDef.CustomState();
                cstate1.GroupId = 1598298728U; // Music_menu
                cstate1.StateId = 158671394U;  // TTGLIntroCutscene
                TTGL_introTrackDef.CustomStates.Add(cstate1);
                var cstate2 = new SoundAPI.Music.CustomMusicTrackDef.CustomState();
                cstate2.GroupId = 792781730U;  // Music_system
                cstate2.StateId = 2607556080U; // Menu
                TTGL_introTrackDef.CustomStates.Add(cstate2);

                d.SceneDefToTracks.Add(introScene, new List <SoundAPI.Music.MainAndBossTracks>()
                {
                    new SoundAPI.Music.MainAndBossTracks(TTGL_introTrackDef, null)
                });

                SoundAPI.Music.Add(d);
            }
        }
Exemplo n.º 28
0
 public void RpcUnlanded()
 {
     EffectManager.SpawnEffect(LegacyResourcesAPI.Load <GameObject>("Prefabs/Effects/ImpactEffects/PodGroundImpact"), new EffectData {
         origin   = this.gameObject.transform.position,
         rotation = this.gameObject.transform.rotation,
         scale    = 0.25f
     }, true);
     Util.PlaySound("Play_UI_podImpact", this.gameObject);
     shkm.enabled = true;
 }
Exemplo n.º 29
0
        private static void ReplaceLoaderSmokeRampTextures()
        {
            Texture2D smokeRamp = VRMod.VRAssetBundle.LoadAsset <Texture2D>("SmokeRamp");;

            EntityStateConfiguration state = LegacyResourcesAPI.Load <EntityStateConfiguration>("entitystateconfigurations/EntityStates.Loader.BaseChargeFist");

            if (state)
            {
                HG.GeneralSerializer.SerializedField effectField = state.serializedFieldsCollection.serializedFields.First(x => x.fieldName == "chargeVfxPrefab");

                GameObject effectPrefab = effectField.fieldValue.objectValue as GameObject;

                Transform dustObject = effectPrefab.transform.Find("Dust");

                if (dustObject)
                {
                    ReplaceSmokeRampTexture(dustObject, smokeRamp);
                }
            }

            state = LegacyResourcesAPI.Load <EntityStateConfiguration>("entitystateconfigurations/EntityStates.Loader.BaseSwingChargedFist");

            if (state)
            {
                HG.GeneralSerializer.SerializedField effectField = state.serializedFieldsCollection.serializedFields.First(x => x.fieldName == "swingEffectPrefab");

                GameObject effectPrefab = effectField.fieldValue.objectValue as GameObject;

                Transform dustObject = effectPrefab.transform.Find("Dust");

                if (dustObject)
                {
                    ReplaceSmokeRampTexture(dustObject, smokeRamp);
                }
            }

            GameObject hookPrefab = LegacyResourcesAPI.Load <GameObject>("prefabs/projectiles/LoaderHook");

            if (hookPrefab)
            {
                Transform dustObject = hookPrefab.transform.Find("FistMesh/RopeFront/Dust");

                if (dustObject)
                {
                    ReplaceSmokeRampTexture(dustObject, smokeRamp);
                }

                dustObject = hookPrefab.transform.Find("RopeEnd/Dust");

                if (dustObject)
                {
                    ReplaceSmokeRampTexture(dustObject, smokeRamp);
                }
            }
        }
Exemplo n.º 30
0
        protected virtual void SetupCharacterBody(string bodyName, GameObject newPrefab, Transform modelBaseTransform)
        {
            CharacterBody bodyComponent = newPrefab.GetComponent <CharacterBody>();

            bodyComponent.bodyIndex         = BodyIndex.None;
            bodyComponent.name              = bodyName;
            bodyComponent.bodyColor         = new Color(0.25f, 0.65f, 0.25f);
            bodyComponent.baseNameToken     = TTGL_SurvivorPlugin.developerPrefix + "_LAGANN_BODY_NAME";
            bodyComponent.subtitleNameToken = TTGL_SurvivorPlugin.developerPrefix + "_LAGANN_BODY_SUBTITLE";
            bodyComponent.portraitIcon      = Modules.Assets.LoadAsset <Texture>("LagannIcon");

            bodyComponent.bodyFlags             = CharacterBody.BodyFlags.ImmuneToExecutes;
            bodyComponent.rootMotionInMainState = false;

            bodyComponent.baseMaxHealth  = 110f;
            bodyComponent.levelMaxHealth = 33f;

            bodyComponent.baseRegen  = 1.5f;
            bodyComponent.levelRegen = 0.3f;

            bodyComponent.baseMaxShield  = 0f;
            bodyComponent.levelMaxShield = 0f;

            bodyComponent.baseMoveSpeed  = 7f;
            bodyComponent.levelMoveSpeed = 0f;

            bodyComponent.baseAcceleration = 80f;

            bodyComponent.baseJumpPower  = 15f;
            bodyComponent.levelJumpPower = 0f;

            bodyComponent.baseDamage  = 12f;
            bodyComponent.levelDamage = 2.4f;

            bodyComponent.baseAttackSpeed  = 1f;
            bodyComponent.levelAttackSpeed = 0f;

            bodyComponent.baseArmor  = 20f;
            bodyComponent.levelArmor = 0f;

            bodyComponent.baseCrit  = 0f;
            bodyComponent.levelCrit = 0f;

            bodyComponent.baseJumpCount = 1;

            bodyComponent.sprintingSpeedMultiplier = 1.45f;

            bodyComponent.hideCrosshair      = false;
            bodyComponent.aimOriginTransform = modelBaseTransform.Find("AimOrigin");
            bodyComponent.hullClassification = HullClassification.Human;

            bodyComponent.preferredPodPrefab = LegacyResourcesAPI.Load <GameObject>("Prefabs/NetworkedObjects/SurvivorPod");

            bodyComponent.isChampion = false;
        }