コード例 #1
0
        private void On_FireFMJFire(On.EntityStates.GenericProjectileBaseState.orig_FireProjectile orig, EntityStates.GenericProjectileBaseState self)
        {
            var  cc        = self.outer.commonComponents;
            bool isBoosted = self is ThrowGrenade &&
                             Util.HasEffectiveAuthority(self.outer.networkIdentity) &&
                             AncientScepterItem.instance.GetCount(cc.characterBody) > 0;

            if (isBoosted)
            {
                self.projectilePrefab = projReplacer;
            }
            orig(self);
            if (isBoosted)
            {
                for (var i = 0; i < 7; i++)
                {
                    Ray r;
                    if (cc.inputBank)
                    {
                        r = new Ray(cc.inputBank.aimOrigin, cc.inputBank.aimDirection);
                    }
                    else
                    {
                        r = new Ray(cc.transform.position, cc.transform.forward);
                    }
                    r.direction = Util.ApplySpread(r.direction, self.minSpread + 7f, self.maxSpread + 15f, 1f, 1f, 0f, self.projectilePitchBonus);
                    ProjectileManager.instance.FireProjectile(
                        self.projectilePrefab,
                        r.origin, Util.QuaternionSafeLookRotation(r.direction),
                        self.outer.gameObject,
                        self.damageStat * self.damageCoefficient,
                        self.force,
                        Util.CheckRoll(self.critStat, cc.characterBody.master),
                        DamageColorIndex.Default, null, -1f);
                }
            }
        }
コード例 #2
0
        private void On_FireFMJEnter(On.EntityStates.GenericProjectileBaseState.orig_OnEnter orig, EntityStates.GenericProjectileBaseState self)
        {
            orig(self);
            if (!(self is EntityStates.Merc.Weapon.ThrowEvisProjectile) || Scepter.instance.GetCount(self.outer.commonComponents.characterBody) < 1)
            {
                return;
            }
            if (!self.outer.commonComponents.skillLocator?.special)
            {
                return;
            }
            var fireCount = self.outer.commonComponents.skillLocator.special.stock;

            self.outer.commonComponents.skillLocator.special.stock = 0;
            for (var i = 0; i < fireCount; i++)
            {
                self.FireProjectile();
                self.DoFireEffects();
            }
        }