예제 #1
0
 public override void DrawEffects(Player player)
 {
     if (TLoZPlayer.Get(player).HasIgnitedStick)
     {
         float bonusOffset = (TLoZPlayer.Get(player).IsSlashReversed ? player.direction == 1 ? (float)MathHelper.Pi * 0.5f : (float)MathHelper.Pi * 1.5f : 0f) + player.fullRotation;
         int   dust        = Dust.NewDust(Helpers.PivotPoint(TLoZDrawLayers.Instance.TwoHanderVFX, 50 * player.direction * -1, -56, TLoZDrawLayers.Instance.TwoHanderRotation + bonusOffset), 0, 0, DustID.Fire);
         Main.dust[dust].scale     = 2f;
         Main.dust[dust].noGravity = true;
     }
 }
예제 #2
0
        public override void GetChat(NPC npc, ref string chat)
        {
            TLoZPlayer tlozPlayer = TLoZPlayer.Get(Main.LocalPlayer);

            tlozPlayer.LastChatFromNPC = npc;

            if (npc.type == NPCID.Clothier)
            {
                tlozPlayer.ResponseIndex = Main.rand.Next(TLoZDialogues.clothierMasterSwordReactions.Length);
            }
        }
예제 #3
0
        public override void PostDraw(NPC npc, SpriteBatch spriteBatch, Color drawColor)
        {
            Helpers.EndShader(spriteBatch);

            TLoZPlayer tlozPlayer = TLoZPlayer.Get(Main.LocalPlayer);

            if (tlozPlayer.MyTarget != null && tlozPlayer.MyTarget == npc)
            {
                spriteBatch.Draw(TLoZTextures.UITargeting, npc.Center - new Vector2(0, npc.height + 18) - Main.screenPosition, new Rectangle(0, 0, 16, 36), TLoZMod.loZClientConfig.targetBorderColor, 0f, new Vector2(8, 16), 1f, SpriteEffects.None, 1f);
                spriteBatch.Draw(TLoZTextures.UITargeting, npc.Center - new Vector2(0, npc.height + 18) - Main.screenPosition, new Rectangle(0, 36, 16, 36), TLoZMod.loZClientConfig.targetCoreColor, 0f, new Vector2(8, 16), 1f, SpriteEffects.None, 1f);
            }
        }
예제 #4
0
        public override bool UseItem(Player player)
        {
            TLoZPlayer tlozPlayer = TLoZPlayer.Get(player);

            if (tlozPlayer.SelectedRune == null)
            {
                return(base.UseItem(player));
            }

            tlozPlayer.SelectedRune.UseItem(this, player, tlozPlayer);

            return(base.UseItem(player));
        }
예제 #5
0
        public override bool CanUseItem(Player player)
        {
            TLoZPlayer zPlayer = TLoZPlayer.Get(player);

            if (!zPlayer.IsSwinging && !zPlayer.DownwardsSlash && !zPlayer.TwoHanderChargeAttack)
            {
                zPlayer.IsSwinging = zPlayer.SwingRotation == 0.0f ? true : zPlayer.IsSwinging;

                zPlayer.WindedBack     = zPlayer.SwingRotation >= 4.25f? false : zPlayer.WindedBack;
                zPlayer.DownwardsSlash = zPlayer.SwingRotation >= 4.25f ? true : zPlayer.DownwardsSlash;
            }
            return(false);
        }
예제 #6
0
        public override bool UseItem(Player player)
        {
            TLoZPlayer tlozPlayer = TLoZPlayer.Get(player);

            tlozPlayer.IsPlayingInstrument = !tlozPlayer.IsPlayingInstrument;

            if (Main.LocalPlayer == player)
            {
                UIManager.InstrumentPlayUIState.Visible = !UIManager.InstrumentPlayUIState.Visible;
            }

            return(true);
        }
예제 #7
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            Player     player    = Main.LocalPlayer;
            TLoZPlayer loZPlayer = TLoZPlayer.Get(player);

            if (TLoZMod.loZClientConfig.disableTips)
            {
                return;
            }

            if (loZPlayer.IsSelectingRune)
            {
                return;
            }

            Vector2 position = new Vector2(Main.screenWidth / 2 - 90, Main.screenHeight - 300);

            if (player.HeldItem.type == TLoZMod.Instance.ItemType("SheikahSlate") && loZPlayer.SelectedRune is StasisRune)
            {
                Helpers.DrawInputButtonMouse(spriteBatch, position, 1, "Put to stasis. (Hover mouse over target)");
            }

            if (loZPlayer.SelectedRune is BombSquareRune || loZPlayer.SelectedRune is BombRoundRune)
            {
                if (loZPlayer.HasBomb)
                {
                    Helpers.DrawInputButtonKeyboard("S", spriteBatch, position - new Vector2(80, -100), " + ");
                    Helpers.DrawInputButtonMouse(spriteBatch, position + new Vector2(0, 80), 1, " to put Bomb down.");
                    Helpers.DrawInputButtonMouse(spriteBatch, position, 1, "Throw Bomb.");
                }

                if (!loZPlayer.HasBomb)
                {
                    if (!loZPlayer.IsNearBomb && loZPlayer.SelectedRune is BombRoundRune && player.ownedProjectileCounts[ModContent.ProjectileType <BombRound>()] > 0)
                    {
                        Helpers.DrawInputButtonMouse(spriteBatch, position, 2, "Detonate Bomb( Round ).");
                    }

                    else if (!loZPlayer.IsNearBomb && loZPlayer.SelectedRune is BombSquareRune && player.ownedProjectileCounts[ModContent.ProjectileType <BombSquare>()] > 0)
                    {
                        Helpers.DrawInputButtonMouse(spriteBatch, position, 2, "Detonate Bomb( Square ).");
                    }

                    else if (loZPlayer.IsNearBomb)
                    {
                        Helpers.DrawInputButtonMouse(spriteBatch, position, 2, "Pick up Bomb(Hover over it with mouse)");
                    }
                }
            }
        }
예제 #8
0
 public override void HitboxEffects(Projectile projectile, Player player)
 {
     for (int i = 0; i < projectile.height; i++)
     {
         for (int j = 0; j < projectile.width; j++)
         {
             Tile tile = Main.tile[(int)(projectile.position.X + j) / 16, (int)(projectile.position.Y + i) / 16];
             if (tile.type == TileID.Campfire)
             {
                 TLoZPlayer.Get(player).HasIgnitedStick = true;
             }
         }
     }
 }
예제 #9
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            TLoZPlayer tlozPlayer = TLoZPlayer.Get(Main.LocalPlayer);

            if (Main.LocalPlayer.HeldItem.type == ModContent.ItemType <SheikahSlate>() && tlozPlayer.SelectedRune is StasisRune)
            {
                spriteBatch.Draw(Main.magicPixel, Vector2.Zero, new Rectangle(0, 0, Main.screenWidth, Main.screenHeight), Color.Yellow * 0.17f, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
            }
            if (!tlozPlayer.IsSelectingRune)
            {
                return;
            }

            Vector2 position = new Vector2(Main.screenWidth / 2, Main.screenHeight / 2 - 120);

            if (tlozPlayer.UnlockedRunes.Count == 0)
            {
                Utils.DrawBorderString(spriteBatch, "You haven't unlocked any runes!", position, Color.White);
                return;
            }

            float decreasedScale = 0.75f;

            Rune
                nextRune     = tlozPlayer.UnlockedRunes.Next(tlozPlayer.SelectedRune),
                previousRune = tlozPlayer.UnlockedRunes.Previous(tlozPlayer.SelectedRune);

            Utils.DrawBorderString(spriteBatch, tlozPlayer.SelectedRune.DisplayName, position + new Vector2(-30, 35), Color.White);
            spriteBatch.Draw(tlozPlayer.SelectedRune.RuneTexture, position, null, Color.White, 0f, new Vector2(32, 32), 1f, SpriteEffects.None, 1f);

            if (tlozPlayer.UnlockedRunes.Count > 1)
            {
                if (!TLoZMod.loZClientConfig.disableTips)
                {
                    Helpers.DrawInputButtonMouse(spriteBatch, position + new Vector2(-20, 60), 4, "Next rune");
                    Helpers.DrawInputButtonMouse(spriteBatch, position + new Vector2(-20, 140), 5, "Previous rune");
                    Helpers.DrawInputButtonKeyboard("D", spriteBatch, position + new Vector2(-100, 85), " or ");
                    Helpers.DrawInputButtonKeyboard("A", spriteBatch, position + new Vector2(-100, 165), " or ");
                }

                spriteBatch.Draw(previousRune.RuneTexture, position - new Vector2(64, 0), null, Color.White, 0f, new Vector2(32, 32), decreasedScale, SpriteEffects.None, 1f);
                spriteBatch.Draw(nextRune.RuneTexture, position + new Vector2(64, 0), null, Color.White, 0f, new Vector2(32, 32), decreasedScale, SpriteEffects.None, 1f);
            }
        }
예제 #10
0
        /*
         * public override bool Shoot(Item item, Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
         * {
         *  if (player.variable)
         *  {
         *      speedX /= 2;
         *      speedY /= 2;
         *  }
         *
         *  return true;
         * } <= wtf??????? */


        public override bool CanUseItem(Item item, Player player)
        {
            TLoZPlayer tlozPlayer = TLoZPlayer.Get(player);

            if (tlozPlayer.MyTarget != null && item.useStyle == 1 && item.melee && !item.noUseGraphic)
            {
                player.velocity += Helpers.DirectToPosition(player.Center, tlozPlayer.MyTarget.Center, 4f);
                item.useTurn     = false;
            }
            else
            {
                item.useTurn = _defaultUseTurn;
            }

            if (tlozPlayer.HasBomb || tlozPlayer.ItemUseDelay > 0)
            {
                return(false);
            }

            return(base.CanUseItem(item, player));
        }
예제 #11
0
        protected override void DrawChildren(SpriteBatch spriteBatch)
        {
            // aren't playing instrument, don't draw
            if (!Visible)
            {
                return;
            }

            base.DrawChildren(spriteBatch);

            Vector2 position = MainPanel.GetDimensions().Position() + new Vector2(16, 44);

            // Draw note stripes
            for (int i = 0; i < 4; i++)
            {
                spriteBatch.Draw(Main.magicPixel, position + new Vector2(0, 32 + 22 * i), new Rectangle(0, 0, (int)PANEL_WIDTH - 32, 4), Color.Red, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
            }

            // Draw note thing™
            spriteBatch.Draw(TLoZTextures.MiscNoteThing, position + new Vector2(-10, 20), null, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);


            TLoZPlayer tlozPlayer = TLoZPlayer.Get();

            // No notes played, don't need the rest of code to be run
            if (tlozPlayer.CurrentNotes.Count <= 0)
            {
                return;
            }

            foreach (Note note in tlozPlayer.CurrentNotes)
            {
                int noteIndex = tlozPlayer.CurrentNotes.FindIndex(x => x == note);

                spriteBatch.Draw(note.GetTexture(tlozPlayer), position + new Vector2(46 + 42 * noteIndex, note.HeightOffset * 25), null, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
            }
        }
예제 #12
0
        public override void OnHitPlayer(Player target, int damage, bool crit)
        {
            TLoZPlayer zplayer = TLoZPlayer.Get(target);

            if (zplayer.ParryRealTime <= 0)
            {
                projectile.damage   = 0;
                projectile.Center  += projectile.velocity;
                projectile.velocity = Vector2.Zero;
                Projectile.NewProjectile(projectile.Center, Vector2.Zero, ModContent.ProjectileType <GuardianLaserExplosion>(), 60, 4f, Main.myPlayer);
            }
            else
            {
                int proj = Projectile.NewProjectile(projectile.Center, Vector2.Zero, ModContent.ProjectileType <DeflectedLaser>(), 60, 4f, Main.myPlayer);
                if (Owner.whoAmI == Main.myPlayer)
                {
                    Main.projectile[proj].velocity = Helpers.DirectToMouse(target.Center, 16f);
                }

                projectile.damage   = 0;
                projectile.Center  -= projectile.velocity * 0.25f;
                projectile.velocity = Vector2.Zero;
            }
        }
예제 #13
0
        public override bool PreDraw(Projectile projectile, SpriteBatch spriteBatch, Color lightColor)
        {
            if (CanBeStasised && projectile.active && Main.LocalPlayer.HeldItem.type == ModContent.ItemType <SheikahSlate>() && TLoZPlayer.Get(Main.LocalPlayer).SelectedRune is StasisRune)
            {
                Helpers.StartShader(spriteBatch);
                GameShaders.Armor.Apply(GameShaders.Armor.GetShaderIdFromItemId(ItemID.PixieDye), projectile);
            }
            else
            {
                Helpers.EndShader(spriteBatch);
            }

            if (!projectile.active)
            {
                return(false);
            }

            if (StasisChainsOpacity > 0.0f)
            {
                for (int i = 0; i < StasisChainsPositions.Length; i++)
                {
                    TLoZGlobalNPC.DrawStasisChains(spriteBatch, projectile.Center, StasisChainsPositions[i], StasisChainsOpacity);
                }
            }

            if (Stasised)
            {
                Helpers.StartShader(spriteBatch);

                int shaderID = StasisLaunchSpeed > 14f ? GameShaders.Armor.GetShaderIdFromItemId(ItemID.InfernalWispDye) : StasisLaunchSpeed > 7f ? GameShaders.Armor.GetShaderIdFromItemId(ItemID.UnicornWispDye) : GameShaders.Armor.GetShaderIdFromItemId(ItemID.PixieDye);
                GameShaders.Armor.Apply(shaderID, projectile);
                // Draw the start
                float rotation = StasisLaunchDirection.ToRotation() - (float)Math.PI / 2;
                Color color    = StasisLaunchSpeed > 14f ? Color.Red : StasisLaunchSpeed > 7f ? Color.Orange : Color.Yellow;
                spriteBatch.Draw(TLoZTextures.MiscStasisArrow, projectile.Center + (StasisLaunchDirection * StasisLaunchSpeed) - Main.screenPosition, new Rectangle(0, 0, 16, 10), color, rotation, new Vector2(8, 5), projectile.scale, SpriteEffects.None, 1f);
                spriteBatch.Draw(TLoZTextures.MiscStasisArrowMiddle, projectile.Center + (StasisLaunchDirection) - Main.screenPosition, new Rectangle(0, 0, 16, (int)(2 * StasisLaunchSpeed * 5)), color, rotation, new Vector2(8, 5), projectile.scale, SpriteEffects.None, 1f);
                spriteBatch.Draw(TLoZTextures.MiscStasisArrow, projectile.Center + (StasisLaunchDirection) + new Vector2(0, (2 * StasisLaunchSpeed * 4.95f) * projectile.scale).RotatedBy(rotation) - Main.screenPosition, new Rectangle(0, 8, 16, 12), color, rotation, new Vector2(8, 5), projectile.scale, SpriteEffects.None, 1f);
            }

            return(true);
        }
예제 #14
0
        public override void Draw(SpriteBatch spriteBatch)
        {
            Player     player     = Main.LocalPlayer;
            TLoZPlayer tlozPlayer = TLoZPlayer.Get(player);

            if (tlozPlayer.BonusStamina != LastBonusStamina)
            {
                Opacity = 10.0f;
            }

            if ((tlozPlayer.Stamina < tlozPlayer.MaxStamina || HaltRegen || Rate > 0) && Opacity < 4.0f)
            {
                Opacity += 0.2f;
            }

            else if (Opacity > 0.0f && !HaltRegen)
            {
                Opacity -= 0.1f;
            }

            if (!FullLerp)
            {
                LerpAmount += 0.02f;

                if (LerpAmount >= 0.8f)
                {
                    FullLerp = true;
                }
            }
            else
            {
                LerpAmount -= 0.02f;

                if (LerpAmount <= 0.0f)
                {
                    FullLerp = false;
                }
            }

            LerpedColor = Color.Lerp(Color.Orange, Color.Red, LerpAmount);

            Vector2 position = new Vector2((int)player.Center.X, (int)player.Center.Y + player.gfxOffY) - Main.screenPosition - new Vector2(60, 60);
            Effect  mainBar  = TLoZMod.Instance.GetEffect("Effects/ProgressBar");

            Effect secondBar = TLoZMod.Instance.GetEffect("Effects/ProgressBar");

            Effect thirdBar = TLoZMod.Instance.GetEffect("Effects/ProgressBar");

            Texture2D mainWheel  = TLoZTextures.UIStaminaWheel;
            Texture2D outerWheel = TLoZTextures.UIStaminaOuterWheel;

            SpendRate = MathHelper.Lerp(SpendRate, (float)Rate, 0.1f);

            DrawBar(spriteBatch, mainWheel, (float)(tlozPlayer.Stamina / 50), position, tlozPlayer.Exhausted ? LerpedColor : Color.Green *Opacity, 0.6f, mainBar, 1f, tlozPlayer.BonusStamina <= 0);

            DrawBar(spriteBatch, outerWheel, (float)(tlozPlayer.Stamina / 50 - 1), position - new Vector2(6f, 6f) / Main.GameZoomTarget, tlozPlayer.Exhausted ? LerpedColor : Color.Green *Opacity, 0.6f, mainBar, (float)(tlozPlayer.MaxStamina / 50 - 1), tlozPlayer.BonusStamina <= 0);

            if (tlozPlayer.BonusStamina > 0)
            {
                DrawBar(spriteBatch, mainWheel, (float)(tlozPlayer.BonusStamina / tlozPlayer.MaxStamina), position - new Vector2(40, -3), tlozPlayer.Exhausted ? LerpedColor : Color.Yellow *Opacity, 0.5f, secondBar, 1f, tlozPlayer.BonusStamina <= tlozPlayer.MaxStamina);
            }

            if (tlozPlayer.BonusStamina > tlozPlayer.MaxStamina)
            {
                DrawBar(spriteBatch, mainWheel, (float)(tlozPlayer.BonusStamina / tlozPlayer.MaxStamina - 1), position - new Vector2(80, -3), tlozPlayer.Exhausted ? LerpedColor : Color.Yellow *Opacity, 0.5f, thirdBar);
            }

            LastBonusStamina = tlozPlayer.BonusStamina;
        }
예제 #15
0
        public override void DrawEffects(Player player)
        {
            float bonusOffset = (TLoZPlayer.Get(player).IsSlashReversed ? player.direction == 1 ? (float)MathHelper.Pi * 0.5f : (float)MathHelper.Pi * 1.5f : 0f) + player.fullRotation;

            Lighting.AddLight(Helpers.PivotPoint(TLoZDrawLayers.Instance.TwoHanderVFX, 25 * player.direction * -1, -31, TLoZDrawLayers.Instance.TwoHanderRotation + bonusOffset), Color.Cyan.ToVector3() * 2);
        }
예제 #16
0
        public override bool PreChatButtonClicked(NPC npc, bool firstButton)
        {
            TLoZPlayer.Get(Main.LocalPlayer).LastChatFromNPC = null;

            return(base.PreChatButtonClicked(npc, firstButton));
        }
예제 #17
0
 public override float UseTimeMultiplier(Item item, Player player)
 {
     return(TLoZPlayer.Get(player).Exhausted ? 0.5f : 1f);
 }