Beispiel #1
0
        public static float GetDegreeToNearestEnemy(this Projectile bullet)
        {
            Vector2 dirVec               = UnityEngine.Random.insideUnitCircle;
            Vector2 bulletPosition       = bullet.sprite.WorldCenter;
            Func <AIActor, bool> isValid = (AIActor a) => a && a.HasBeenEngaged && a.healthHaver && a.healthHaver.IsVulnerable;
            IntVector2           bulletPositionIntVector2 = bulletPosition.ToIntVector2();
            AIActor closestToPosition = BraveUtility.GetClosestToPosition <AIActor>(GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(bulletPositionIntVector2).GetActiveEnemies(RoomHandler.ActiveEnemyType.All), bullet.sprite.WorldCenter, isValid, new AIActor[]
            {
            });

            if (closestToPosition)
            {
                dirVec = closestToPosition.CenterPosition - bullet.transform.position.XY();
            }
            return(MiscToolbox.Vector2ToDegree(dirVec));
        }
        private void DoSynergyShields(RoomHandler room, PlayerController user)
        {
            //ETGModConsole.Log("Did Synergy Shields");
            CurrencyPickup[] allShit = FindObjectsOfType <CurrencyPickup>();
            foreach (CurrencyPickup shit in allShit)
            {
                //ETGModConsole.Log("Found a casing");

                if (shit.transform.position.GetAbsoluteRoom() == room)
                {
                    //ETGModConsole.Log("Casing was in room");

                    MiscToolbox.SpawnShield(user, shit.sprite.WorldCenter);
                    //ETGModConsole.Log("Spawned shield");
                }
            }
        }
        // Token: 0x06007230 RID: 29232 RVA: 0x002D6104 File Offset: 0x002D4304
        protected override void DoEffect(PlayerController user)
        {
            if (user.PlayerHasActiveSynergy("G is for Gain"))
            {
                user.carriedConsumables.Currency -= 1;
            }
            else
            {
                user.carriedConsumables.Currency -= 3;
            }

            MiscToolbox.SpawnShield(user, user.sprite.WorldCenter);
            if (user.PlayerHasActiveSynergy("Prototype Form"))
            {
                DoSynergyShields(user.CurrentRoom, user);
            }
        }
        public void Start()
        {
            this.m_projectile = base.GetComponent <Projectile>();
            RoomHandler currentRoom = MiscToolbox.GetAbsoluteRoomFromProjectile(this.m_projectile);

            if (currentRoom != Primos1.lastFiredRoom)
            {
                this.m_projectile.baseData.speed  *= 0.5f;
                this.m_projectile.baseData.damage *= 6.3f;
                PierceProjModifier pierce = this.m_projectile.gameObject.GetOrAddComponent <PierceProjModifier>();
                pierce.penetration = 1000;
                BounceProjModifier bounce = this.m_projectile.gameObject.GetOrAddComponent <BounceProjModifier>();
                bounce.numberOfBounces = 1;
                this.m_projectile.RuntimeUpdateScale(2);
                this.m_projectile.UpdateSpeed();
                Primos1.lastFiredRoom = currentRoom;
            }
        }
 private void SpawnShieldOnDestroy(Projectile self)
 {
     MiscToolbox.SpawnShield(self.ProjectilePlayerOwner(), self.sprite.WorldCenter);
 }