Beispiel #1
0
        void Update()
        {
            var localUser = RoR2.LocalUserManager.GetFirstLocalUser();

            if (localUser == null || localUser.cachedMasterController == null || localUser.cachedMasterController.master == null)
            {
                return;
            }
            var master = localUser.cachedMasterController.master;

            Body      = master.GetBody();
            Inventory = master.inventory;
            var huds = typeof(RoR2.UI.HUD).GetField <List <RoR2.UI.HUD> >("instancesList");

            foreach (var hud in huds)
            {
                var items = hud.itemInventoryDisplay.GetField <List <RoR2.UI.ItemIcon> >("itemIcons");
                foreach (var item in items)
                {
                    var def   = RoR2.ItemCatalog.GetItemDef(item.GetField <RoR2.ItemIndex>("itemIndex"));
                    var index = item.GetField <RoR2.ItemIndex>("itemIndex");
                    var count = item.GetField <Int32>("itemCount");
                    item.tooltipProvider.overrideBodyText = RoR2.Language.GetString(def.descriptionToken) + GetExtraData(index, count);
                }
            }
        }
Beispiel #2
0
 private void InitializeStats(RoR2.CharacterBody player)
 {
     player.baseAttackSpeed = customCharacter.attackSpeed;
     player.baseDamage      = customCharacter.damage;
     player.baseCrit        = customCharacter.crit;
     player.baseMoveSpeed   = customCharacter.moveSpeed;
     player.baseJumpPower   = customCharacter.jumpPower;
     player.baseJumpCount   = customCharacter.jumpCount;
     player.baseMaxHealth   = customCharacter.maxHealth;
     player.baseMaxShield   = customCharacter.maxShield;
 }
Beispiel #3
0
 private void ResetStats(ref RoR2.CharacterBody player)
 {
     player.baseAttackSpeed = defaultCharacter.attackSpeed;
     player.baseDamage      = defaultCharacter.damage;
     player.baseCrit        = defaultCharacter.crit;
     player.baseMoveSpeed   = defaultCharacter.moveSpeed;
     player.baseJumpPower   = defaultCharacter.jumpPower;
     player.baseJumpCount   = defaultCharacter.jumpCount;
     player.baseMaxHealth   = defaultCharacter.maxHealth;
     player.baseMaxShield   = defaultCharacter.maxShield;
     customCharacter        = new CharacterStats(player.baseAttackSpeed, player.baseDamage, player.baseCrit, player.baseMoveSpeed, player.baseJumpPower, player.baseMaxHealth, player.baseMaxShield, player.baseJumpCount);
     RoR2.Chat.AddMessage(user + "s stats have been <color=#48C9B0>reset</color>.");
 }
Beispiel #4
0
 private void CharacterBody_Start(CharacterBody.orig_Start orig, RoR2.CharacterBody self)
 {
     if (user == self.GetUserName())
     {
         player           = self;
         defaultCharacter = new CharacterStats(self.baseAttackSpeed, self.baseDamage, self.baseCrit, self.baseMoveSpeed, self.baseJumpPower, self.baseMaxHealth, self.baseMaxShield, self.baseJumpCount);
         if (flag)
         {
             customCharacter = new CharacterStats(self.baseAttackSpeed, self.baseDamage, self.baseCrit, self.baseMoveSpeed, self.baseJumpPower, self.baseMaxHealth, self.baseMaxShield, self.baseJumpCount);
             flag            = false;
         }
         InitializeStats(self);
     }
     orig(self);
 }
        public static Vector3 GetSpawnPositionAroundTeleporter(RoR2.CharacterBody body, float minSpawnRadius, float maxSpawnRadius)
        {
            Vector3 positionAroundTP = Vector3.zero;
            int     tries            = 0;

            do
            {
                if (tries++ > 1000)
                {
                    return(Vector3.zero);
                }

                positionAroundTP  = RoR2.TeleporterInteraction.instance.transform.position;
                positionAroundTP += GetRandomPositionInCircle(minSpawnRadius, maxSpawnRadius);
            } while (!TryUpdateToProperPositionOnStage(ref positionAroundTP, body.radius));

            return(new Vector3(positionAroundTP.x, positionAroundTP.y + RoR2.Util.GetBodyPrefabFootOffset(body.gameObject), positionAroundTP.z));
        }
Beispiel #6
0
        private static void OnCharacterDeath(GlobalEventManager.orig_OnCharacterDeath orig, RoR2.GlobalEventManager self, RoR2.DamageReport report)
        {
            RoR2.CharacterBody victim = report.victimBody;
            //We need an inventory to do check for our item
            if (victim.inventory)
            {
                //store the amount of our item we have
                int jetpacks = victim.inventory.GetItemCount(ContentPacks.shinyJetpackDef.itemIndex);
                if (jetpacks > 0)
                {
                    if (NetworkServer.active)
                    {
                        float radius            = 25;
                        float damageCoefficient = 100;

                        new RoR2.BlastAttack
                        {
                            attacker          = victim.gameObject,
                            attackerFiltering = RoR2.AttackerFiltering.Default,
                            teamIndex         = victim.teamComponent.teamIndex,
                            bonusForce        = new Vector3(0, 50, 0),
                            baseForce         = 0.0f,
                            damageColorIndex  = RoR2.DamageColorIndex.Default,
                            inflictor         = victim.gameObject,
                            losType           = RoR2.BlastAttack.LoSType.None,
                            position          = victim.transform.position,
                            damageType        = RoR2.DamageType.Generic,
                            baseDamage        = damageCoefficient * victim.damage * jetpacks,
                            procCoefficient   = 1.0f,
                            radius            = radius,
                            crit         = victim.RollCrit(),
                            falloffModel = RoR2.BlastAttack.FalloffModel.None
                        }.Fire();

                        GameObject blastEffect1 = Resources.Load <GameObject>("Prefabs/Effects/Impacteffects/ExplosionVFX");
                        blastEffect1.transform.localScale = new Vector3(radius, radius, radius);
                    }
                }
            }
            orig.Invoke(self, report);
        }
Beispiel #7
0
        private static void RecalculateStats(CharacterBody.orig_RecalculateStats orig, RoR2.CharacterBody self)
        {
            orig.Invoke(self);

            if (self)
            {
                if (self.inventory)
                {
                    int count = self.inventory.GetItemCount(ContentPacks.shinyJetpackDef.itemIndex);
                    if (count != 0)
                    {
                        float amount = 2.0f;

                        float moveScale = self.moveSpeed / self.baseMoveSpeed;
                        float jumpScale = self.jumpPower / self.baseJumpPower;
                        bool  sprinting = self.isSprinting;
                        if (moveScale > 1)
                        {
                            float extra       = moveScale - 1;
                            float sprintExtra = self.sprintingSpeedMultiplier - 1.0f;
                            if (sprinting)
                            {
                                extra -= sprintExtra;
                            }

                            float scaleAmount = 1 + (extra * ((count * amount) + 1));

                            if (sprinting)
                            {
                                scaleAmount += sprintExtra;
                            }

                            self.GetType().GetProperty("moveSpeed").SetValue(self, (self.moveSpeed / moveScale) * scaleAmount);
                        }
                        if (jumpScale > 1)
                        {
                            float extra       = jumpScale - 1;
                            float scaleAmount = 1 + (extra * ((count * amount) + 1));
                            self.GetType().GetProperty("jumpPower").SetValue(self, (self.jumpPower / jumpScale) * scaleAmount);
                        }
                    }
                }
            }
        }