public override void OnHitEffects(NPC target, Player player) { if (TLoZPlayer.Get(player).HasIgnitedStick) { target.AddBuff(BuffID.OnFire, 180); } }
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)); }
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); } }
public override void Action(CommandCaller caller, string input, string[] args) { if (args.Length == 0) { return; } TLoZPlayer.Get(Main.LocalPlayer).UnlockRune(RuneManager.Instance[args[0]]); }
public WorldSong(TLoZPlayer player, Song song, SongVariant variant) { Player = player; Song = song; Variant = variant; Path = Song.GetPath(Variant); Duration = Song.GetDuration(Variant); }
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; } }
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); } }
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); }
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); } }
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; }
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)); }
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); }
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); }
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)"); } } } }
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; } } } }
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); }
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); }
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); } }
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); }
/* * 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)); }
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); } } } }
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); }
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); } }
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; } }
public SongVariant GetSongVariant(TLoZPlayer tlozPlayer) => SongVariant.Normal;
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); }
public override void PostPlay(TLoZPlayer tlozPlayer, SongVariant variant) { tlozPlayer.InvertedSongOfSoaringPosition = tlozPlayer.player.position; }
public override void OnPlay(TLoZPlayer tlozPlayer, SongVariant variant) { ModContent.GetInstance <TLoZWorld>().ToggleInvertedSongOfTime(); }
public virtual void PostPlay(TLoZPlayer tlozPlayer, SongVariant variant) { }
public virtual bool CanPlay(TLoZPlayer tlozPlayer) => true;