Exemplo n.º 1
0
        private IEnumerator HandleFireShortBeam(Projectile projectileToSpawn, float duration)
        {
            float          elapsed  = 0f;
            float          num2     = -1f;
            AIActor        aiactor2 = this.m_extantOrbital.transform.position.GetAbsoluteRoom().GetNearestEnemy(this.m_extantOrbital.GetComponent <tk2dBaseSprite>().WorldCenter, out num2, true, true);
            BeamController beam     = this.BeginFiringBeam(projectileToSpawn, this.m_owner, BraveMathCollege.Atan2Degrees(aiactor2.sprite.WorldCenter - this.m_extantOrbital.GetComponent <tk2dSprite>().WorldCenter),
                                                           this.m_extantOrbital.GetComponent <tk2dBaseSprite>().WorldCenter);

            yield return(null);

            while (elapsed < duration)
            {
                if (!this || !this.m_extantOrbital || this.m_extantOrbital.transform.position.GetAbsoluteRoom() == null)
                {
                    break;
                }
                float   num     = -1f;
                AIActor aiactor = this.m_extantOrbital.transform.position.GetAbsoluteRoom().GetNearestEnemy(this.m_extantOrbital.GetComponent <tk2dBaseSprite>().WorldCenter, out num, true, true);
                if (aiactor == null)
                {
                    break;
                }
                elapsed += BraveTime.DeltaTime;
                this.ContinueFiringBeam(beam, BraveMathCollege.Atan2Degrees(aiactor.sprite.WorldCenter - this.m_extantOrbital.GetComponent <tk2dSprite>().WorldCenter), this.m_extantOrbital.GetComponent <tk2dBaseSprite>().WorldCenter);
                yield return(null);
            }
            this.CeaseBeam(beam);
            yield break;
        }
Exemplo n.º 2
0
        private void PostProcessBeamChanceTick(BeamController beamController)
        {
            if (UnityEngine.Random.value < this.chanceActivate)
            {
                Projectile projectile2 = ((Gun)ETGMod.Databases.Items[341]).DefaultModule.projectiles[0];
                GameObject gameObject  = SpawnManager.SpawnProjectile(projectile2.gameObject, base.Owner.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (base.Owner.CurrentGun == null) ? 0f : base.Owner.CurrentGun.CurrentAngle), true);
                Projectile component   = gameObject.GetComponent <Projectile>();

                if (component != null)
                {
                    if (Owner.PlayerHasActiveSynergy("Bleeding Edge"))
                    {
                        GameActorHealthEffect bleed = (PickupObjectDatabase.GetById(204) as BulletStatusEffectItem).HealthModifierEffect;
                        bleed.effectIdentifier      = "Cel sawblade bleed";
                        bleed.resistanceType        = EffectResistanceType.None;
                        bleed.TintColor             = new Color(201, 0, 0, .25f);
                        component.healthEffect      = bleed;
                        component.PoisonApplyChance = 1;
                        component.AppliesPoison     = true;
                    }
                    component.Owner           = base.Owner;
                    component.Shooter         = base.Owner.specRigidbody;
                    component.baseData.speed  = 25f;
                    component.baseData.damage = 7f;
                }
            }
        }
Exemplo n.º 3
0
 private void PostProcessBeamChanceTick(BeamController beamController)
 {
     if (BoxOTools.BasicRandom(Owner.PlayerHasActiveSynergy("Mahoguny Sapling") ? 0.6f : 0.75f) && CoolAsIce)
     {
         ShootLeafShit();
     }
 }
Exemplo n.º 4
0
 public void PostProcessBeam(BeamController beam)
 {
     if (this.TintBeams)
     {
         beam.AdjustPlayerBeamTint(Library.LightGreen, 5);
     }
 }
Exemplo n.º 5
0
 private void PostProcessBeam(BeamController beam)
 {
     if (Owner.CurrentGun.PickupObjectId == 10)
     {
         beam.AdjustPlayerBeamTint(gold, 1, 0f);
     }
 }
Exemplo n.º 6
0
        private void PostProcessBeamTick(BeamController beam, SpeculativeRigidbody spec, float tickRate)
        {
            GameActor gameActor = spec.gameActor;

            if (!gameActor)
            {
                return;
            }

            PlayerController player = this.Owner;

            if (player.CurrentGun.PickupObjectId == 40)
            {
                beam.projectile.baseData.damage *= 1.003f;
            }

            BulletStatusEffectItem frostbullets = PickupObjectDatabase.GetById(278).GetComponent <BulletStatusEffectItem>();
            GameActorFreezeEffect  frostfreeze  = frostbullets.FreezeModifierEffect;

            if (player.CurrentGun.PickupObjectId == 464)
            {
                if (UnityEngine.Random.value < BraveMathCollege.SliceProbability(1f, tickRate))
                {
                    gameActor.ApplyEffect(frostfreeze, 0.015f, null);
                }
            }
        }
 private void PostProcessBeam(BeamController sourceBeam)
 {
     if (sourceBeam.projectile)
     {
         this.PostProcessProjectile(sourceBeam.projectile, 1);
     }
 }
Exemplo n.º 8
0
 private void PostProcessBeam(BeamController beam)
 {
     if (beam.GetComponent <Projectile>())
     {
         PostProcessProjectile(beam.GetComponent <Projectile>(), 1);
     }
 }
Exemplo n.º 9
0
        protected override void Update()
        {
            if (this.m_extantOrbital != null & Owner)
            {
                if (Owner.IsInCombat && extantBeam == null)
                {
                    extantBeam = BeamToolbox.FreeFireBeamFromAnywhere(InfraredBeam, Owner, this.m_extantOrbital, Vector2.zero, false, 0, float.MaxValue);
                    extantBeam.projectile.gameObject.AddComponent <AlwaysPointAwayFromPlayerBeam>();
                    if (Owner.PlayerHasActiveSynergy("Infraredder Guon Stone"))
                    {
                        extantBeam.projectile.baseData.damage *= 2;
                    }
                    if (Owner.PlayerHasActiveSynergy("Xenochrome"))
                    {
                        extantBeam.GetComponent <BasicBeamController>().penetration++;
                        extantBeam.GetComponent <BasicBeamController>().reflections++;
                    }
                }

                else if (!Owner.IsInCombat && extantBeam != null)
                {
                    extantBeam.CeaseAttack();
                    extantBeam = null;
                }
            }
            else if (((m_extantOrbital == null) || (Owner == null)) && extantBeam != null)
            {
                extantBeam.CeaseAttack();
                extantBeam = null;
            }
            base.Update();
        }
 private void PostProcessBeam(BeamController bem)
 {
     if (Challenges.CurrentChallenge == ChallengeType.INVISIBLEO)
     {
         bem.sprite.renderer.enabled = false;
     }
 }
Exemplo n.º 11
0
 private void PostProcessBeam(BeamController beam)
 {
     if (beam && beam.projectile)
     {
         beam.projectile.baseData.damage *= 2;
     }
 }
Exemplo n.º 12
0
 private void PostProcessBem(BeamController bem)
 {
     if (bem && bem.GetComponent <Projectile>())
     {
         PostProcess(bem.GetComponent <Projectile>(), 0);
     }
 }
 private void HandleBeamCollision(BeamController beamController)
 {
     if (CanAwaken)
     {
         StartCoroutine(BecomeMimic());
     }
 }
Exemplo n.º 14
0
 private void PostProcessBeamChanceTick(BeamController beamController)
 {
     if (BoxOTools.BasicRandom(0.7f) && !CoolAsIce)
     {
         ShootPlagueShit();
     }
 }
Exemplo n.º 15
0
 private void PostBeam(BeamController b)
 {
     if (b.projectile)
     {
         b.projectile.baseData.damage *= (1 + (0.05f * timesHit));
     }
 }
Exemplo n.º 16
0
        private void PostProcessBeamChanceTick(BeamController beamController)
        {
            PlayerController player = base.Owner;
            float            Chance = 0.9f;

            if (player.HasGun(7))
            {
                Chance -= 0.05f;
            }
            if (BoxOTools.BasicRandom(Chance) && !CoolAsIce)
            {
                CoolAsIce = true;
                StartCoroutine(StartCooldown());
                if (BoxOTools.BasicRandom(0.97f) && !SharkMFs)
                {
                    SharkMFs = true;
                    StartCoroutine(SharkCooldown());
                    player.HandleProjectile(25f, (player.HasGun(359)) ? 110 : 95f, 359, true, Vector2.zero, true);
                }
                else
                {
                    player.HandleProjectile(20f, (player.HasGun(7)) ? 20 : 10, 7, false, Vector2.zero, true);
                }
            }
        }
Exemplo n.º 17
0
 protected override void PostProcessBeam(BeamController beam)
 {
     if (beam && beam.projectile && beam.projectile.ProjectilePlayerOwner())
     {
         if (beam.projectile.ProjectilePlayerOwner().PlayerHasActiveSynergy("It won't actually show up on screen, but there's no hard limit on how long you can make synergy names."))
         {
             beam.AdjustPlayerBeamTint(Color.green, 1);
             beam.projectile.fireEffect = StaticStatusEffects.greenFireEffect;
         }
         if (beam.projectile.ProjectilePlayerOwner().PlayerHasActiveSynergy("Re-Heat"))
         {
             beam.GetComponent <BasicBeamController>().TimeToStatus       = 0.1f;
             beam.GetComponent <BasicBeamController>().statusEffectChance = 1f;
         }
         if (beam.projectile.ProjectilePlayerOwner().PlayerHasActiveSynergy("Don't Trust The Toaster"))
         {
             beam.projectile.baseData.speed *= 5;
             beam.projectile.UpdateSpeed();
             beam.projectile.RuntimeUpdateScale(1.3f);
             beam.projectile.baseData.damage *= 2;
             EmmisiveBeams emission = beam.projectile.gameObject.GetOrAddComponent <EmmisiveBeams>();
         }
     }
     base.PostProcessBeam(beam);
 }
 private void PostProcessBeam(BeamController beam)
 {
     if (beam && beam.projectile)
     {
         Exploder.DoRadialKnockback(beam.Origin, 40, 7);
         if (beam.projectile && beam.projectile.GetAbsoluteRoom() != null)
         {
             List <AIActor> activeEnemies = beam.projectile.GetAbsoluteRoom().GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
             if (activeEnemies != null && activeEnemies.Count > 0)
             {
                 for (int i = 0; i < activeEnemies.Count; i++)
                 {
                     AIActor aiactor = activeEnemies[i];
                     if (aiactor.IsNormalEnemy && aiactor.behaviorSpeculator)
                     {
                         if (Vector2.Distance(beam.Origin, aiactor.sprite.WorldCenter) < 3)
                         {
                             if (UnityEngine.Random.value <= (0.25f * 2))
                             {
                                 aiactor.behaviorSpeculator.Stun(1);
                             }
                         }
                         else if (Vector2.Distance(beam.Origin, aiactor.sprite.WorldCenter) < 6)
                         {
                             if (UnityEngine.Random.value <= (0.07f * 2))
                             {
                                 aiactor.behaviorSpeculator.Stun(1);
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 19
0
    void LateUpdate()
    {
        RaycastHit hit;

        if (Physics.Raycast(this.transform.position, this.transform.forward, out hit, _RayLength))
        {
            // If the hit object has a beam controller component...
            if (hit.transform.gameObject.GetComponent <BeamController> ())
            {
                // Return if the hit object's children contrain a beam collision component.
                if (hit.transform.gameObject.GetComponentInChildren <BeamCollision>())
                {
                    return;
                }

                _HitBeamController = hit.transform.gameObject.GetComponent <BeamController> ();
                // Activate it's beam.
                _HitBeamController.ActivateBeam();
            }
        }
        else
        {
            // If no tower is being hit then stop it.
            Stop();
        }
    }
Exemplo n.º 20
0
        private IEnumerator HandleFiringBeam(BeamController beam)
        {
            float elapsed = 0f;

            yield return(null);

            while (m_Player && m_Player.IsFiring && this && m_AIActor.sprite && m_AIActor.healthHaver && !m_IsDisconnected)
            {
                elapsed += BraveTime.DeltaTime;
                if (!m_AIActor.TargetRigidbody)
                {
                    m_AIActor.PlayerTarget = m_Player;
                }
                if (!m_MirrorGunToggle)
                {
                    beam.CeaseAttack();
                    beam.DestroyBeam();
                    yield break;
                }
                if (m_AIActor.CurrentGun)
                {
                    beam.Origin = m_AIActor.CurrentGun.sprite.WorldCenter;
                    beam.LateUpdatePosition(m_AIActor.CurrentGun.sprite.WorldCenter);
                }
                else
                {
                    beam.Origin = m_AIActor.specRigidbody.UnitCenter;
                    beam.LateUpdatePosition(m_AIActor.specRigidbody.UnitCenter);
                }
                // beam.Origin = m_AIActor.specRigidbody.UnitCenter;
                // beam.LateUpdatePosition(m_AIActor.specRigidbody.UnitCenter);
                if (m_Player)
                {
                    float angle = ((m_AIActor.TargetRigidbody.GetUnitCenter(ColliderType.HitBox) - m_AIActor.specRigidbody.UnitCenter).ToAngle());
                    if (m_AIActor.CurrentGun)
                    {
                        angle = ((m_AIActor.TargetRigidbody.GetUnitCenter(ColliderType.HitBox) - m_AIActor.CurrentGun.sprite.WorldCenter).ToAngle());
                    }
                    if (m_InvertSweepAngle)
                    {
                        angle = (angle + m_BeamSweepAngle);
                    }
                    else
                    {
                        angle = (angle - m_BeamSweepAngle);
                    }
                    beam.Direction = BraveMathCollege.DegreesToVector(angle, 1);
                    if (m_Player.IsDodgeRolling)
                    {
                        beam.CeaseAttack();
                        beam.DestroyBeam();
                        yield break;
                    }
                }
                yield return(null);
            }
            beam.CeaseAttack();
            beam.DestroyBeam();
            yield break;
        }
 private void PostProcessBeam(BeamController beam)
 {
     if (beam.GetComponent <BeamSplittingModifier>())
     {
         ETGModConsole.Log("Split found");
         beam.GetComponent <BeamSplittingModifier>().amtToSplitTo++;
     }
 }
Exemplo n.º 22
0
        private void ContinueFiringBeam(BeamController beam, PlayerController source, float angle, Vector2?overrideSpawnPoint)
        {
            Vector2 vector = (overrideSpawnPoint == null) ? source.CenterPosition : overrideSpawnPoint.Value;

            beam.Direction = BraveMathCollege.DegreesToVector(angle, 1f);
            beam.Origin    = vector;
            beam.LateUpdatePosition(vector);
        }
Exemplo n.º 23
0
        private void ContinueFiringBeam(BeamController beam, float angle, Vector2 overrideSpawnPoint)
        {
            Vector2 vector = overrideSpawnPoint;

            beam.Direction = BraveMathCollege.DegreesToVector(angle, 1f);
            beam.Origin    = vector;
            beam.LateUpdatePosition(vector);
        }
        public static BeamController FreeFireBeamFromAnywhere(Projectile projectileToSpawn, PlayerController owner, GameObject otherShooter, Vector2 fixedPosition, bool usesFixedPosition, float targetAngle, float duration, bool skipChargeTime = false, bool followDirOnProjectile = false, float angleOffsetFromProjectileAngle = 0)
        {
            Vector2 sourcePos             = Vector2.zero;
            SpeculativeRigidbody rigidBod = null;

            if (usesFixedPosition)
            {
                sourcePos = fixedPosition;
            }
            else
            {
                if (otherShooter.GetComponent <SpeculativeRigidbody>())
                {
                    rigidBod = otherShooter.GetComponent <SpeculativeRigidbody>();
                }
                else if (otherShooter.GetComponentInChildren <SpeculativeRigidbody>())
                {
                    rigidBod = otherShooter.GetComponentInChildren <SpeculativeRigidbody>();
                }

                if (rigidBod)
                {
                    sourcePos = rigidBod.UnitCenter;
                }
            }
            if (sourcePos != Vector2.zero)
            {
                GameObject gameObject = SpawnManager.SpawnProjectile(projectileToSpawn.gameObject, sourcePos, Quaternion.identity, true);
                Projectile component  = gameObject.GetComponent <Projectile>();
                component.Owner = owner;
                BeamController component2 = gameObject.GetComponent <BeamController>();
                if (skipChargeTime)
                {
                    component2.chargeDelay     = 0f;
                    component2.usesChargeDelay = false;
                }
                component2.Owner       = owner;
                component2.HitsPlayers = false;
                component2.HitsEnemies = true;
                Vector3 vector = BraveMathCollege.DegreesToVector(targetAngle, 1f);
                if (otherShooter != null && !usesFixedPosition && otherShooter.GetComponent <Projectile>() && followDirOnProjectile)
                {
                    component2.Direction = (otherShooter.GetComponent <Projectile>().Direction.ToAngle() + angleOffsetFromProjectileAngle).DegreeToVector2();
                }
                else
                {
                    component2.Direction = vector;
                }
                component2.Origin = sourcePos;
                GameManager.Instance.Dungeon.StartCoroutine(BeamToolbox.HandleFreeFiringBeam(component2, rigidBod, fixedPosition, usesFixedPosition, targetAngle, duration, followDirOnProjectile, angleOffsetFromProjectileAngle));
                return(component2);
            }
            else
            {
                ETGModConsole.Log("ERROR IN BEAM FREEFIRE CODE. SOURCEPOS WAS NULL, EITHER DUE TO INVALID FIXEDPOS OR SOURCE GAMEOBJECT.");
                return(null);
            }
        }
Exemplo n.º 25
0
 private void HandleDodgedBeam(BeamController beam, PlayerController player)
 {
     if (Ratt)
     {
         Ratt = false;
         StartCoroutine(Rat());
         ShootRandomProjectile(player);
     }
 }
Exemplo n.º 26
0
            private IEnumerator DoLaserAttack()
            {
                isAttacking = true;
                this.aiAnimator.PlayUntilFinished("attack", false, null, -1f, false);
                yield return(new WaitForSeconds(0.5f));

                //Start Firing Lasers
                this.aiActor.MovementSpeed *= 0.0001f;
                this.aiAnimator.PlayForDuration("contattack", 1);
                Projectile beamToFire = LaserBullets.SimpleRedBeam.projectile;

                if (UnityEngine.Random.value <= 0.5f)
                {
                    int angle = 135;
                    for (int i = 0; i < 4; i++)
                    {
                        BeamController beam = BeamToolbox.FreeFireBeamFromAnywhere(beamToFire, this.m_owner, this.gameObject, Vector2.zero, false, angle, 1, true);
                        Projectile     beamprojcomponent = beam.GetComponent <Projectile>();
                        beamprojcomponent.baseData.damage *= 3f;
                        if (PassiveItem.IsFlagSetForCharacter(this.Owner, typeof(BattleStandardItem)))
                        {
                            beamprojcomponent.baseData.damage *= BattleStandardItem.BattleStandardCompanionDamageMultiplier;
                        }
                        if (this.Owner.CurrentGun && this.Owner.CurrentGun.LuteCompanionBuffActive)
                        {
                            beamprojcomponent.baseData.damage *= 2;
                        }
                        angle -= 90;
                    }
                }
                else
                {
                    int angle = 180;
                    for (int i = 0; i < 4; i++)
                    {
                        BeamController beam = BeamToolbox.FreeFireBeamFromAnywhere(beamToFire, this.m_owner, this.gameObject, Vector2.zero, false, angle, 1, true);
                        Projectile     beamprojcomponent = beam.GetComponent <Projectile>();
                        beamprojcomponent.baseData.damage *= 3f;
                        if (PassiveItem.IsFlagSetForCharacter(this.Owner, typeof(BattleStandardItem)))
                        {
                            beamprojcomponent.baseData.damage *= BattleStandardItem.BattleStandardCompanionDamageMultiplier;
                        }
                        if (this.Owner.CurrentGun && this.Owner.CurrentGun.LuteCompanionBuffActive)
                        {
                            beamprojcomponent.baseData.damage *= 2;
                        }
                        angle -= 90;
                    }
                }
                yield return(new WaitForSeconds(1f));

                //Stop shit
                isAttacking = false;
                timer       = 1.5f;
                this.aiActor.MovementSpeed /= 0.0001f;
                yield break;
            }
Exemplo n.º 27
0
 private void PostProcessBeamChanceTick(BeamController beam)
 {
     if (UnityEngine.Random.value > this.ActivationChance)
     {
         return;
     }
     beam.ChanceBasedHomingRadius          += this.homingRadius;
     beam.ChanceBasedHomingAngularVelocity += this.homingAngularVelocity;
 }
Exemplo n.º 28
0
        // Token: 0x060002BD RID: 701 RVA: 0x000163CC File Offset: 0x000145CC
        public void PostProcessBeam(BeamController beam)
        {
            bool tintBeams = this.TintBeams;

            if (tintBeams)
            {
                beam.AdjustPlayerBeamTint(this.TintColor.WithAlpha(this.TintColor.a / 2f), this.TintPriority, 0f);
            }
        }
Exemplo n.º 29
0
 public override DebrisObject Drop(PlayerController player)
 {
     if (extantBeam)
     {
         extantBeam.CeaseAttack();
         extantBeam = null;
     }
     return(base.Drop(player));
 }
Exemplo n.º 30
0
 protected override void OnDestroy()
 {
     if (extantBeam)
     {
         extantBeam.CeaseAttack();
         extantBeam = null;
     }
     base.OnDestroy();
 }