Files
YHTMod/Items/KatanaRedo.cs
T

56 lines
1.9 KiB
C#

using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace YHTMod.Items;
public class KatanaRedo : GlobalItem
{
public override void ModifyTooltips(Item item, List<TooltipLine> tooltips)
{
if (item.type != ItemID.Katana) return;
tooltips.Insert(5, new TooltipLine(YHTMod.GetInstance(), "flavor", "Nothing personel kid."));
tooltips.Insert(6, new TooltipLine(YHTMod.GetInstance(), "usage", "Right click to teleport behind them."));
}
public override bool AltFunctionUse(Item item, Player player)
{
return item.type == ItemID.Katana || base.AltFunctionUse(item, player);
}
public override bool? UseItem(Item item, Player player)
{
if (item.type != ItemID.Katana || player.altFunctionUse != 2) return null;
var yhtPlayer = player.GetModPlayer<YhtPlayer>();
if (yhtPlayer.KatanaTeleportCooldown > 0) return null;
yhtPlayer.KatanaTeleportCooldown = 300;
for (var i = 0; i < Main.maxNPCs; i++)
{
var npc = Main.npc[i];
if (!npc.CanBeChasedBy()) continue;
var between = Vector2.Distance(npc.Center, player.Center);
var inRange = between < 650;
var lineOfSight = Collision.CanHitLine(player.position, player.width, player.height, npc.position,
npc.width, npc.height);
if (!inRange || !lineOfSight) continue;
var tpPos = npc.position;
tpPos.X += -(npc.direction * npc.width + (player.width * 2));
if (Collision.TileCollision(tpPos, Vector2.Zero, player.width, player.height) != Vector2.Zero) return true;
player.Teleport(tpPos, TeleportationStyleID.RodOfDiscord);
player.velocity = Vector2.Zero;
player.NinjaDodge();
return true;
}
return null;
}
}