private void PM_FireProj(On.RoR2.Projectile.ProjectileManager.orig_FireProjectile_FireProjectileInfo orig, RoR2.Projectile.ProjectileManager self, RoR2.Projectile.FireProjectileInfo fireProjectileInfo)
 {
     //fireProjectileInfo.
     orig(self, fireProjectileInfo);
 }
Example #2
0
        private void ProjectileManager_FireProjectile_FireProjectileInfo(On.RoR2.Projectile.ProjectileManager.orig_FireProjectile_FireProjectileInfo orig, RoR2.Projectile.ProjectileManager self, RoR2.Projectile.FireProjectileInfo fireProjectileInfo)
        {
            orig(self, fireProjectileInfo);
            if (ignoreMugs || !self || !fireProjectileInfo.owner || !fireProjectileInfo.projectilePrefab || fireProjectileInfo.projectilePrefab.GetComponent <Deployable>())
            {
                return;
            }
            var cpt = fireProjectileInfo.owner.GetComponent <CharacterBody>();

            if (!cpt)
            {
                return;
            }
            var count = GetCount(cpt);

            if (count <= 0)
            {
                return;
            }
            var totalChance = count * procChance;
            int procCount   = (Util.CheckRoll(Wrap(totalChance * 100f, 0f, 100f), cpt.master) ? 1 : 0) + (int)Mathf.Floor(totalChance);
            var origRot     = fireProjectileInfo.rotation;

            for (var i = 0; i < procCount; i++)
            {
                fireProjectileInfo.rotation = origRot * Quaternion.Euler(
                    (rng.nextNormalizedFloat - 0.5f) * spreadConeHalfAngleDegr,
                    (rng.nextNormalizedFloat - 0.5f) * spreadConeHalfAngleDegr,
                    (rng.nextNormalizedFloat - 0.5f) * spreadConeHalfAngleDegr);
                orig(self, fireProjectileInfo);
            }
        }
        private void ProjectileManager_FireProjectile_FireProjectileInfo(On.RoR2.Projectile.ProjectileManager.orig_FireProjectile_FireProjectileInfo orig, RoR2.Projectile.ProjectileManager self, RoR2.Projectile.FireProjectileInfo fireProjectileInfo)
        {
            var     projectileController = fireProjectileInfo.projectilePrefab.GetComponentInChildren <RoR2.Projectile.ProjectileController>();
            Vector3 oldProjectileSize    = projectileController.transform.localScale;
            Vector3 oldGhostSize         = projectileController.ghost.transform.localScale;

            if (fireProjectileInfo.owner && fireProjectileInfo.owner.GetComponent <CharacterBody>())
            {
                var itemCount = GetCount(fireProjectileInfo.owner.GetComponent <CharacterBody>());
                if (itemCount > 0)
                {
                    if (!fireProjectileInfo.useSpeedOverride)
                    {
                        fireProjectileInfo.speedOverride = fireProjectileInfo.projectilePrefab.GetComponent <RoR2.Projectile.ProjectileSimple>().desiredForwardSpeed;
                    }
                    var oldSpeed = fireProjectileInfo.speedOverride;
                    var fraction = 1f - cfgProjectileSpeedReduction.Value;
                    fireProjectileInfo.speedOverride *= Mathf.Pow(fraction, itemCount);
                    Chat.AddMessage($"Speed changed from {oldSpeed} to {fireProjectileInfo.speedOverride} ({(oldSpeed - fireProjectileInfo.speedOverride)} difference)");
                }
            }

            orig(self, fireProjectileInfo);
            projectileController.transform.localScale       = oldProjectileSize;
            projectileController.ghost.transform.localScale = oldGhostSize;
        }
Example #4
0
        private void Longassname(On.RoR2.Projectile.ProjectileManager.orig_FireProjectile_GameObject_Vector3_Quaternion_GameObject_float_float_bool_DamageColorIndex_GameObject_float orig, RoR2.Projectile.ProjectileManager self, GameObject prefab, Vector3 position, Quaternion rotation, GameObject owner, float damage, float force, bool crit, DamageColorIndex damageColorIndex, GameObject target, float speedOverride)
        {
            var characterBody = owner.GetComponent <CharacterBody>();

            if (prefab.name == PrepWall.projectilePrefab.name && characterBody)
            {
                FireAmmo(characterBody, true);
            }
            orig(self, prefab, position, rotation, owner, damage, force, crit, damageColorIndex, target, speedOverride);
        }
Example #5
0
 private void ProjectileManager_FireProjectile_FireProjectileInfo(On.RoR2.Projectile.ProjectileManager.orig_FireProjectile_FireProjectileInfo orig, RoR2.Projectile.ProjectileManager self, RoR2.Projectile.FireProjectileInfo fireProjectileInfo)
 {
     fireProjectileInfo.damageColorIndex = (DamageColorIndex)damageColorOverride;
     orig(self, fireProjectileInfo);
 }