75 lines
2.6 KiB
C#
75 lines
2.6 KiB
C#
using System.Collections.Generic;
|
|
using Decimation.Lib.Util;
|
|
using Microsoft.Xna.Framework;
|
|
using Terraria;
|
|
using Terraria.ModLoader;
|
|
using Terraria.UI.Chat;
|
|
|
|
namespace Decimation.Content.Items.Accessories.Trinity
|
|
{
|
|
public class Body : TrinityAccessory
|
|
{
|
|
protected override string ItemName => "The Body";
|
|
|
|
protected override string ItemTooltip => "I feel all...\n" +
|
|
"Increases maximum life by 50\n" +
|
|
"Increases melee damage by 10%\n" +
|
|
"Increases melee critical hit chances by 10%\n" +
|
|
"Hostile projectiles have 10% chance to ricochet off you\nand target your enemies with 50% increased damage";
|
|
|
|
protected override void InitAccessory()
|
|
{
|
|
item.width = 10;
|
|
item.height = 16;
|
|
item.expert = true;
|
|
item.expertOnly = true;
|
|
item.rare = Rarity.Rainbow.GetRarityValue();
|
|
item.value = Item.sellPrice(gold: 5);
|
|
}
|
|
|
|
public override void UpdateAccessory(Player player, bool hideVisual)
|
|
{
|
|
player.statLifeMax2 += 50;
|
|
player.meleeDamage *= 1.10f;
|
|
player.meleeCrit = (int) (player.meleeCrit * 1.10f);
|
|
|
|
base.UpdateAccessory(player, hideVisual);
|
|
}
|
|
|
|
public override void ModifyTooltips(List<TooltipLine> tooltips)
|
|
{
|
|
tooltips.Add(new TooltipLine(mod, "trinity", "Trinity")
|
|
{
|
|
overrideColor = ChatManager.WaveColor(Color.Red)
|
|
});
|
|
}
|
|
}
|
|
|
|
class BodyProjectileEffects : GlobalProjectile
|
|
{
|
|
public override void ModifyHitPvp(Projectile projectile, Player target, ref int damage, ref bool crit)
|
|
{
|
|
Ricochet(projectile, target, true, ref damage);
|
|
}
|
|
|
|
public override void ModifyHitPlayer(Projectile projectile, Player target, ref int damage, ref bool crit)
|
|
{
|
|
if (Ricochet(projectile, target, false, ref damage))
|
|
{
|
|
projectile.hostile = false;
|
|
projectile.friendly = true;
|
|
}
|
|
}
|
|
|
|
private bool Ricochet(Projectile projectile, Player player, bool fromPlayer, ref int damage)
|
|
{
|
|
if (Main.expertMode && Main.rand.NextBool(10) &&
|
|
player.GetModPlayer().HasEquippedAccessory(ModContent.ItemType<Body>()))
|
|
{
|
|
return projectile.Richochet(player, fromPlayer, ref damage);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
} |