コード例 #1
0
        public override void FixedUpdate()
        {
            base.FixedUpdate();

            if (base.isAuthority)
            {
                Ray aimRay = base.GetAimRay();
                this.blastAttack.position = aimRay.origin;
                this.effectData.origin    = aimRay.origin;

                if (base.fixedAge >= this.duration && base.isAuthority)
                {
                    this.outer.SetNextStateToMain();
                    return;
                }

                float boost     = charged * (.8f + (.2f * base.attackSpeedStat));
                int   roundDown = Mathf.FloorToInt(boost);
                int   scale     = Mathf.Max(2, 40 - roundDown);

                if (this.frameCounter % scale == 0)
                {
                    BlastAttack.Result result = blastAttack.Fire();
                    int hitCount = result.hitCount;

                    //if (this.styleComponent) this.styleComponent.AddStyle(hitCount * DrillCharge.styleCoefficient);

                    EffectManager.SpawnEffect(this.explodePrefab, effectData, false);
                }

                this.frameCounter++;
            }
        }
コード例 #2
0
        private BlastAttack.Result BlastAttack_Fire(On.RoR2.BlastAttack.orig_Fire orig, BlastAttack self)
        {
            BlastAttack.Result result = orig(self);

            HitboxRevealer box = Instantiate(_hitboxNotBoxPrefab).initBlastBox(self.position, self.radius);

            Utils.LogReadout($"making blast hitbox at {self.position}, {self.radius}: {box != null}");

            return(result);
        }
コード例 #3
0
ファイル: Burst.cs プロジェクト: swuff-star/HenryMod
        protected void Fire()
        {
            Ray aimRay = base.GetAimRay();

            this.aimDirection = aimRay.direction;

            //base.PlayAnimation("FullBody, Override", this.animString);

            base.characterBody.AddSpreadBloom(2f);
            EffectManager.SimpleMuzzleFlash(EntityStates.Commando.CommandoWeapon.FirePistol2.muzzleEffectPrefab, base.gameObject, "Muzzle", false);
            Util.PlaySound("HenryShootShotgun", base.gameObject);

            if (base.isAuthority)
            {
                base.characterMotor.velocity = -this.aimDirection * Burst.pushForce;
                //base.characterMotor.rootMotion = this.pushForce;
                base.AddRecoil(-1f * Burst.recoil, -2f * Burst.recoil, -0.5f * Burst.recoil, 0.5f * Burst.recoil);

                BlastAttack blastAttack = new BlastAttack();
                blastAttack.radius            = 10f;
                blastAttack.procCoefficient   = 1f;
                blastAttack.position          = aimRay.origin + 2 * aimRay.direction;
                blastAttack.attacker          = base.gameObject;
                blastAttack.crit              = base.RollCrit();
                blastAttack.baseDamage        = base.characterBody.damage * Burst.damageCoefficient;
                blastAttack.falloffModel      = BlastAttack.FalloffModel.None;
                blastAttack.baseForce         = Burst.blastForce;
                blastAttack.teamIndex         = TeamComponent.GetObjectTeam(blastAttack.attacker);
                blastAttack.damageType        = DamageType.Stun1s;
                blastAttack.attackerFiltering = AttackerFiltering.NeverHit;
                BlastAttack.Result result = blastAttack.Fire();

                EffectData effectData = new EffectData();
                effectData.origin = aimRay.origin + 2 * aimRay.direction;
                effectData.scale  = 8;

                EffectManager.SpawnEffect(Resources.Load <GameObject>("Prefabs/Effects/ImpactEffects/FusionCellExplosion"), effectData, true);
            }
        }
コード例 #4
0
        public override void OnEnter()
        {
            base.OnEnter();
            Ray aimRay = base.GetAimRay();

            this.duration = this.baseDuration;

            Util.PlaySound(DiggerPlugin.Sounds.Backblast, base.gameObject);
            base.StartAimMode(0.6f, true);

            base.characterMotor.disableAirControlUntilCollision = false;

            float angle = Vector3.Angle(new Vector3(0, -1, 0), aimRay.direction);

            if (angle < 60)
            {
                base.PlayAnimation("FullBody, Override", "BackblastUp");
            }
            else if (angle > 120)
            {
                base.PlayAnimation("FullBody, Override", "BackblastDown");
            }
            else
            {
                base.PlayAnimation("FullBody, Override", "Backblast");
            }

            if (NetworkServer.active)
            {
                base.characterBody.AddBuff(RoR2Content.Buffs.HiddenInvincibility);
            }

            if (base.isAuthority)
            {
                Vector3 theSpot = aimRay.origin + 2 * aimRay.direction;

                BlastAttack blastAttack = new BlastAttack();
                blastAttack.radius            = 14f;
                blastAttack.procCoefficient   = 1f;
                blastAttack.position          = theSpot;
                blastAttack.attacker          = base.gameObject;
                blastAttack.crit              = Util.CheckRoll(base.characterBody.crit, base.characterBody.master);
                blastAttack.baseDamage        = base.characterBody.damage * BackBlast.damageCoefficient;
                blastAttack.falloffModel      = BlastAttack.FalloffModel.None;
                blastAttack.baseForce         = 500f;
                blastAttack.teamIndex         = TeamComponent.GetObjectTeam(blastAttack.attacker);
                blastAttack.damageType        = DamageType.Stun1s;
                blastAttack.attackerFiltering = AttackerFiltering.NeverHit;
                BlastAttack.Result result = blastAttack.Fire();

                EffectData effectData = new EffectData();
                effectData.origin = theSpot;
                effectData.scale  = 15;

                EffectManager.SpawnEffect(DiggerPlugin.DiggerPlugin.backblastEffect, effectData, false);

                base.characterMotor.velocity = -80 * aimRay.direction;

                Compacted?.Invoke(result.hitCount);
            }
        }
コード例 #5
0
 // Token: 0x060031BD RID: 12733 RVA: 0x000D661C File Offset: 0x000D481C
 protected override void DoImpactAuthority()
 {
     base.DoImpactAuthority();
     BlastAttack.Result result = base.DetonateAuthority();
     base.skillLocator.utility.RunRecharge((float)result.hitCount * ChainableLeap.refundPerHit);
 }