Exemple #1
0
        public void OverloadEffects()
        {
            if (DBTMod.IsTickRateElapsed(300))
            {
                OverloadDamageMultiplier = Main.rand.NextFloat(0.25f, 2f);
            }
            if (DBTMod.IsTickRateElapsed(120))
            {
                OverloadKiMultiplier -= 0.01f;
            }

            player.allDamage *= OverloadDamageMultiplier;
        }
Exemple #2
0
 public override void PostUpdate()
 {
     if (!_initialized)
     {
         _initialized = true;
         HandleRetrogradeCleanup();
     }
     else
     {
         // every 10 seconds, check dragon ball locations, but don't run the full cleanup detail.
         if (Main.netMode != NetmodeID.MultiplayerClient && DBTMod.IsTickRateElapsed(600))
         {
             CleanupAndRegenerateDragonBalls(false);
         }
     }
 }
Exemple #3
0
        public override bool PreDraw(int i, int j, SpriteBatch spriteBatch)
        {
            Tile      tile = Main.tile[i, j];
            Texture2D texture;

            if (Main.canDrawColorTile(i, j))
            {
                texture = Main.tileAltTexture[Type, (int)tile.color()];
            }
            else
            {
                texture = Main.tileTexture[Type];
            }
            Vector2 zero = new Vector2(Main.offScreenRange, Main.offScreenRange);

            if (Main.drawToScreen)
            {
                zero = Vector2.Zero;
            }
            int height  = 18;
            int animate = Main.tileFrame[Type] * animationFrameHeight;

            Main.spriteBatch.Draw(texture, new Vector2(i * 16 - (int)Main.screenPosition.X, j * 16 - (int)Main.screenPosition.Y + 2) + zero, new Rectangle(tile.frameX, tile.frameY + animate, 16, height), Lighting.GetColor(i, j), 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
            Main.spriteBatch.Draw(mod.GetTexture("Tiles/KiBeaconTileGlowmask"), new Vector2(i * 16 - (int)Main.screenPosition.X, j * 16 - (int)Main.screenPosition.Y + 2) + zero, new Rectangle(tile.frameX, tile.frameY + animate, 16, height), Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);

            if (tile.frameX == 36)
            {
                Texture2D lightTexture   = mod.GetTexture("Tiles/KiBeaconTileLight");
                Texture2D lightTexture2  = mod.GetTexture("Tiles/KiBeaconTileLight2");
                Vector2   spritePosition = new Vector2(i * 16f - Main.screenPosition.X - 8, (j * 16f - Main.screenPosition.Y) - 14) + zero;
                spriteBatch.End();
                spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, Main.DefaultSamplerState, DepthStencilState.Default, Main.instance.Rasterizer);
                int shiftAlpha = (int)(DBTMod.GetTicks() % 65);
                if (shiftAlpha >= 32)
                {
                    shiftAlpha = 32 - (shiftAlpha - 32);
                }
                shiftAlpha = shiftAlpha * 3 + 64;
                Color transparencyColor = new Color(255, 255, 255, shiftAlpha);
                spriteBatch.Draw(lightTexture, spritePosition, new Rectangle(0, 0, lightTexture.Width, lightTexture.Height), transparencyColor, 0f, lightTexture.Size() * 0.5f, 2f, SpriteEffects.None, 0f);
                spriteBatch.Draw(lightTexture2, spritePosition + new Vector2(0, -11), new Rectangle(0, 0, lightTexture2.Width, lightTexture2.Height), transparencyColor, 0f, lightTexture2.Size() * 0.5f, 2f, SpriteEffects.None, 0f);
                spriteBatch.End();
                spriteBatch.Begin();
            }
            return(false);
        }
Exemple #4
0
 public void DBSummonEffects()
 {
     if (NPC.CountNPCS(ModContent.NPCType <ShenronNPC>()) == 0)
     {
         int dust = Dust.NewDust(player.Center, player.width, player.height / 3, 133, 0, -25f);
         dust = Dust.NewDust(player.Center, player.width, player.height / 3, 133, 0, -25f);
         Main.dust[dust].noGravity = true;
         if (DBTMod.IsTickRateElapsed(80))
         {
             Main.dust[dust].velocity.Y = -25f;
             Main.dust[dust].scale      = 1f;
         }
         if (DBTMod.IsTickRateElapsed(160))
         {
             Main.dust[dust].velocity.X = Main.rand.Next(-30, 30);
             Main.dust[dust].velocity.Y = 0;
             Main.dust[dust].scale      = 1f;
         }
         if (DBTMod.IsTickRateElapsed(80))
         {
             Projectile.NewProjectile(player.Center + new Vector2(Main.rand.Next(-700, 700), -50), Vector2.Zero, ModContent.ProjectileType <YellowLightning>(), 0, 0);
             SoundHelper.PlayCustomSound("Sounds/Lightning", player, 0.5f);
         }
         if (DBTMod.IsTickRateElapsed(500))
         {
             Main.time = 72000;
             NPC.NewNPC((int)player.position.X, (int)player.position.Y, ModContent.NPCType <ShenronNPC>());
             NetMessage.SendData(MessageID.SyncNPC);
         }
     }
     else
     {
         if (DBTMod.IsTickRateElapsed(500))
         {
             WishMenu.menuVisible = true;
         }
     }
 }
Exemple #5
0
        private void PostUpdateOverload()
        {
            if (!IsTransformed(TransformationDefinitionManager.Instance.SSJC) && !IsTransformed(TransformationDefinitionManager.Instance.LSSJ))
            {
                overloadDecreaseTimer++;
                if (overloadDecreaseTimer >= 180)
                {
                    if (DBTMod.IsTickRateElapsed(OverloadDecayRate))
                    {
                        if (Overload > 0)
                        {
                            Overload--;
                        }
                    }
                }
            }
            else
            {
                overloadDecreaseTimer = 0;
            }

            if (IsOverloading)
            {
                OverloadEffects();
            }
            else if (!IsOverloading)
            {
                OverloadDamageMultiplier = 1f;
                if (DBTMod.IsTickRateElapsed(60))
                {
                    if (OverloadKiMultiplier < 1f)
                    {
                        OverloadKiMultiplier += 0.01f;
                    }
                }
            }

            if (player.dead)
            {
                Overload = 0;
            }

            if (Overload >= MaxOverload && !IsOverloading)
            {
                OnMaxOverload();
            }

            if (Overload > MaxOverload)
            {
                Overload = MaxOverload;
            }

            if (Overload > 0)
            {
                DBTMod.Instance.overloadBar.Visible = true;
            }
            else
            {
                DBTMod.Instance.overloadBar.Visible = false;
            }

            if (IsOverloading && Overload <= 0)
            {
                IsOverloading = false;
                player.AddBuff(mod.BuffType <KiOverusage>(), 60 * 60);
            }
        }
Exemple #6
0
        public override void AI()
        {
            npc.TargetClosest(true);
            Player player    = Main.player[npc.target];
            float  distanceX = Vector2.Distance(new Vector2(0, npc.Center.X), new Vector2(0, player.Center.X));

            if (!player.active || player.dead)
            {
                npc.TargetClosest(false);
                player = Main.player[npc.target];
                if (!player.active || player.dead)
                {
                    //npc.velocity = new Vector2(0f, -10f);

                    if (npc.timeLeft > 10)
                    {
                        npc.timeLeft = 10;
                    }

                    return;
                }
            }

            if (!HasDoneStartingStuff)
            {
                ChangeStage();
            }

            if (AIStage == STAGE_WALK)
            {
                npc.velocity.X = 1.5f * npc.direction;

                if (distanceX <= 50)
                {
                    npc.velocity.X = 0;
                    AITimer1++;
                }
                if (AITimer1 >= 120)
                {
                    ChangeStage();
                }
            }

            if (AIStage == STAGE_LEAP)
            {
                if (!HasDoneStartingStuff && !IsRoaring)
                {
                    if (!HasDoneStartingPosition)
                    {
                        npc.position            = player.position + new Vector2(600, -800);
                        npc.velocity.X         -= 0.2f;
                        HasDoneStartingPosition = true;
                    }
                    if (npc.velocity.Y == 0 && npc.velocity.X != 0)
                    {
                        npc.velocity.X = 0;
                    }
                    if (_frame == 0)
                    {
                        if (DBTMod.IsTickRateElapsed(30))
                        {
                            DoRoar();
                        }
                    }
                }
                else
                {
                    DoLeap();
                }
            }
            if (AIStage == STAGE_BEAM)
            {
                AITimer1++;
                if (AITimer1 == 1 && _frame != 0)
                {
                    _frame = 0;
                }
                if (AITimer1 == 20)
                {
                    DoRoar();
                }

                if (!IsRoaring)
                {
                    IsBeaming = true;
                }

                if (IsRoaringAnimation && !HasFinishedFiringBeam)
                {
                    AITimer2++;
                    if (AITimer2 <= 90)
                    {
                        DoLineDust(npc.getRect().TopLeft() - new Vector2(12, -85), -60f);
                    }

                    if (AITimer2 == 140)
                    {
                        Projectile.NewProjectile(npc.getRect().TopLeft() - new Vector2(20, -80), new Vector2(-30f, 0f), ModContent.ProjectileType <ApeBeamBlast>(), npc.damage / 3, 2f, npc.whoAmI);
                        npc.netUpdate = true;
                    }


                    if (AITimer2 == 280)
                    {
                        HasFinishedFiringBeam = true;
                    }
                }
            }
            //Main.NewText("AIStage is: " + AIStage);
            //Main.NewText("Is Roaring? " + IsRoaring);
            //Main.NewText("Is Beaming? " + IsBeaming);
            //Main.NewText("AITimer2 is: " + AITimer2);
        }