Exemple #1
0
 public override void OnHitEffects(NPC target, Player player)
 {
     if (TLoZPlayer.Get(player).HasIgnitedStick)
     {
         target.AddBuff(BuffID.OnFire, 180);
     }
 }
Exemple #2
0
 public override bool UseItem(Item item, Player player)
 {
     if (item.type == ItemID.PumpkinPie && player.itemAnimation >= item.useAnimation - 1)
     {
         TLoZPlayer.Get(player).BonusStamina += 50;
     }
     return(base.UseItem(item, player));
 }
Exemple #3
0
        public override void PostDraw(int i, int j, int type, SpriteBatch spriteBatch)
        {
            TLoZPlayer tloZPlayer = TLoZPlayer.Get(Main.LocalPlayer);

            if (tloZPlayer.Holds(TLoZMod.Instance.ItemType("SheikahSlate")) && tloZPlayer.SelectedRune is MagnesisRune && MagnesisRune.magnesisWhiteList.Contains(type))
            {
                spriteBatch.Draw(Main.tileTexture[type], new Vector2(i, j) * 16f + new Vector2(192) - Main.screenPosition, new Rectangle(Main.tile[i, j].frameX, Main.tile[i, j].frameY, 16, 16), Color.Yellow, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
            }
        }
Exemple #4
0
        public override void Action(CommandCaller caller, string input, string[] args)
        {
            if (args.Length == 0)
            {
                return;
            }

            TLoZPlayer.Get(Main.LocalPlayer).UnlockRune(RuneManager.Instance[args[0]]);
        }
Exemple #5
0
        public WorldSong(TLoZPlayer player, Song song, SongVariant variant)
        {
            Player = player;

            Song    = song;
            Variant = variant;

            Path     = Song.GetPath(Variant);
            Duration = Song.GetDuration(Variant);
        }
Exemple #6
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;
     }
 }
Exemple #7
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);
            }
        }
Exemple #8
0
        public void Play(TLoZPlayer tlozPlayer, SongVariant variant)
        {
            //Main.PlaySound(Mod.GetSoundSlot(SoundType.Music, ))
            ModContent.GetInstance <TLoZWorld>().PlaySong(tlozPlayer, this, variant);

            Vector2 playerPosition = tlozPlayer.player.position;

            CombatText.NewText(new Rectangle((int)playerPosition.X, (int)playerPosition.Y, tlozPlayer.player.width, tlozPlayer.player.height), Color.PaleVioletRed, DisplayName);

            OnPlay(tlozPlayer, variant);
        }
Exemple #9
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);
            }
        }
Exemple #10
0
        public override void PostPlay(TLoZPlayer tlozPlayer, SongVariant variant)
        {
            Mount mount = new Mount();

            if (!mount.CanMount(MountID.Unicorn, tlozPlayer.player))
            {
                return;
            }

            mount.SetMount(MountID.Unicorn, tlozPlayer.player);
            //tlozPlayer.player.mount = mount;
        }
Exemple #11
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));
        }
Exemple #12
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);
        }
Exemple #13
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);
        }
Exemple #14
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)");
                    }
                }
            }
        }
Exemple #15
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;
             }
         }
     }
 }
Exemple #16
0
        public override bool UseItem(ModItem item, Player player, TLoZPlayer tlozPlayer)
        {
            if (!tlozPlayer.HasBomb && player.ownedProjectileCounts[ModContent.ProjectileType <BombRound>()] <= 0)
            {
                Projectile.NewProjectile(player.Center, Vector2.Zero, ModContent.ProjectileType <BombRound>(), 0, 0, player.whoAmI);
            }

            else if (player.ownedProjectileCounts[ModContent.ProjectileType <BombRound>()] > 0)
            {
                player.itemAnimation = 0;
                return(false);
            }

            return(true);
        }
Exemple #17
0
        public bool TryPlay(TLoZPlayer tlozPlayer, SongVariant variant = SongVariant.Normal)
        {
            if (ModContent.GetInstance <TLoZWorld>().IsSongPlaying)
            {
                Main.NewText("There is already a song playing in the world!");
                return(false);
            }

            if (!CanPlay(tlozPlayer))
            {
                return(false);
            }

            Play(tlozPlayer, variant);
            return(true);
        }
Exemple #18
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);
            }
        }
Exemple #19
0
        public override bool UseItem(ModItem item, Player player, TLoZPlayer tlozPlayer)
        {
            int x = (int)Main.MouseWorld.X;
            int y = (int)Main.MouseWorld.Y;

            if (Main.tile[x / 16, y / 16].liquid != 0 && player.ownedProjectileCounts[TLoZMod.Instance.ProjectileType("CryonisBlock")] < 3 && tlozPlayer.ItemUseDelay == 0)
            {
                tlozPlayer.ItemUseDelay = 20;
                for (int i = 0; i < 500; i++)
                {
                    if (Main.tile[x / 16, y / 16 - i].liquid == 0)
                    {
                        Projectile.NewProjectile(new Vector2(x / 16, y / 16) * 16 - new Vector2(0, i * 16), Vector2.Zero, TLoZMod.Instance.ProjectileType("CryonisBlock"), 0, 0, player.whoAmI, 1);
                        break;
                    }
                }
            }
            return(true);
        }
Exemple #20
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));
        }
Exemple #21
0
        public override void OnPlay(TLoZPlayer tlozPlayer, SongVariant variant)
        {
            for (int i = 0; i < Main.player.Length; i++)
            {
                Player player = Main.player[i];

                if (!player.active || player.dead)
                {
                    return;
                }

                for (int j = 0; j < player.CountBuffs(); j++)
                {
                    int buffType = player.buffType[j];

                    if (Main.debuff[buffType] && BuffLoader.CanBeCleared(buffType))
                    {
                        player.ClearBuff(buffType);
                    }
                }
            }
        }
Exemple #22
0
        public override bool UseItem(ModItem item, Player player, TLoZPlayer tlozPlayer)
        {
            foreach (NPC npc in Main.npc)
            {
                if (!npc.active || npc.boss)
                {
                    continue;
                }

                if (tlozPlayer.MyTarget != null && !tlozPlayer.MyTarget.boss)
                {
                    tlozPlayer.MyTarget.AddBuff(ModContent.BuffType <StasisDebuff>(), 420);
                    break;
                }

                if (Collision.CheckAABBvLineCollision(npc.position, npc.Hitbox.Size(), player.Center, Main.MouseWorld))
                {
                    npc.AddBuff(ModContent.BuffType <StasisDebuff>(), 420);
                    break;
                }
            }

            foreach (Projectile projectile in Main.projectile)
            {
                if (!projectile.active || !TLoZGlobalProjectile.GetFor(projectile).CanBeStasised)
                {
                    continue;
                }

                if (Collision.CheckAABBvLineCollision(projectile.position, projectile.Hitbox.Size(), player.Center, Main.MouseWorld))
                {
                    TLoZGlobalProjectile.GetFor(projectile).StasisTimer = 420;
                    break;
                }
            }

            return(true);
        }
Exemple #23
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);
            }
        }
Exemple #24
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;
            }
        }
Exemple #25
0
 public SongVariant GetSongVariant(TLoZPlayer tlozPlayer) => SongVariant.Normal;
Exemple #26
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);
        }
Exemple #27
0
 public override void PostPlay(TLoZPlayer tlozPlayer, SongVariant variant)
 {
     tlozPlayer.InvertedSongOfSoaringPosition = tlozPlayer.player.position;
 }
Exemple #28
0
 public override void OnPlay(TLoZPlayer tlozPlayer, SongVariant variant)
 {
     ModContent.GetInstance <TLoZWorld>().ToggleInvertedSongOfTime();
 }
Exemple #29
0
 public virtual void PostPlay(TLoZPlayer tlozPlayer, SongVariant variant)
 {
 }
Exemple #30
0
 public virtual bool CanPlay(TLoZPlayer tlozPlayer) => true;