コード例 #1
0
        private void Fire_FireMissile(On.EntityStates.Engi.EngiMissilePainter.Fire.orig_FireMissile orig, EntityStates.Engi.EngiMissilePainter.Fire self, HurtBox target, Vector3 position)
        {
            orig(self, target, position);
            var count = GetCount(self.characterBody);

            if (count <= 0)
            {
                return;
            }
            var pts = self.characterBody.gameObject.GetComponent <PixieTubeStopwatch>();

            if (!pts)
            {
                pts = self.characterBody.gameObject.AddComponent <PixieTubeStopwatch>();
            }
            if (!pts.CheckProc(SkillSlot.Utility))
            {
                return;
            }
            for (var i = 0; i < count; i++)
            {
                SpawnWisp(self.characterBody.corePosition, self.teamComponent ? self.teamComponent.teamIndex : TeamIndex.None);
            }
        }
コード例 #2
0
        private void Fire_OnEnter(On.EntityStates.Engi.EngiMissilePainter.Fire.orig_OnEnter orig, EntityStates.Engi.EngiMissilePainter.Fire self)
        {
            orig(self);
            var count = GetCount(self.characterBody);

            if (count > 0 && self.targetsList.Count == 0)
            {
                var     mainSpeed  = count * buffFrac * engiBoostFrac;
                var     massAdjust = (self.characterBody.characterMotor ? self.characterBody.characterMotor.mass : 1f);
                Vector3 dir        = self.characterBody.transform.forward;
                if (self.characterBody.characterDirection)
                {
                    dir = self.characterBody.characterDirection.forward;
                }
                dir.y += 0.75f;
                dir    = dir.normalized;
                var yvelCancel = self.characterBody.characterMotor
                                        ? new Vector3(0f, -self.characterBody.characterMotor.velocity.y, 0f)
                                        : Vector3.zero;
                self.characterBody.characterMotor.ApplyForce(mainSpeed * massAdjust * dir + yvelCancel * massAdjust, false, false);
                self.fireIndex++;
                var muzzle = (self.fireIndex % 2 == 0) ? "MuzzleLeft" : "MuzzleRight";
                EffectManager.SimpleMuzzleFlash(EntityStates.Engi.EngiMissilePainter.Fire.muzzleflashEffectPrefab, self.gameObject, muzzle, true);
                self.PlayAnimation((self.fireIndex % 2 == 0) ? "Gesture Left Cannon, Additive" : "Gesture Right Cannon, Additive", "FireHarpoon");

                ProjectileManager.instance.FireProjectile(new FireProjectileInfo {
                    projectilePrefab = EntityStates.Engi.EngiWeapon.FireGrenades.projectilePrefab,
                    position         = self.characterBody.footPosition,
                    rotation         = Util.QuaternionSafeLookRotation(Vector3.up),
                    procChainMask    = default,