127 lines
3.6 KiB
C#
127 lines
3.6 KiB
C#
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Terraria;
|
|
using Terraria.Audio;
|
|
using Terraria.ID;
|
|
using Terraria.ModLoader;
|
|
using ForgottenWawiTech.Content.Items.Materials;
|
|
using ForgottenWawiTech.Content.Rarities;
|
|
using Terraria.ModLoader.IO;
|
|
using Terraria.Localization;
|
|
|
|
namespace ForgottenWawiTech.Content.Items.Tools.SingularitySet
|
|
{
|
|
public class SingularityMultitool : ModItem
|
|
{
|
|
private bool hammerMode;
|
|
private const int PickaxePower = 500;
|
|
private const int HammerPower = 500;
|
|
private const int AxePower = 500;
|
|
|
|
protected override bool CloneNewInstances => true;
|
|
|
|
public override void SetDefaults()
|
|
{
|
|
Item.damage = 500;
|
|
Item.DamageType = DamageClass.Melee;
|
|
Item.width = 40;
|
|
Item.height = 40;
|
|
Item.useTime = 10;
|
|
Item.useAnimation = 20;
|
|
Item.useStyle = ItemUseStyleID.Swing;
|
|
Item.knockBack = 5.0f;
|
|
Item.value = Item.sellPrice(gold: 5);
|
|
Item.rare = ModContent.RarityType<SingularityItem>();
|
|
Item.UseSound = SoundID.Item1;
|
|
Item.autoReuse = true;
|
|
Item.useTurn = true;
|
|
Item.axe = AxePower;
|
|
Item.pick = PickaxePower;
|
|
Item.hammer = 0;
|
|
ApplyMode();
|
|
}
|
|
|
|
public override bool AltFunctionUse(Player player) => true;
|
|
|
|
public override bool CanUseItem(Player player)
|
|
{
|
|
if (player.altFunctionUse == 2)
|
|
{
|
|
ToggleMode(player);
|
|
return false;
|
|
}
|
|
|
|
ApplyMode();
|
|
return base.CanUseItem(player);
|
|
}
|
|
|
|
public override void ModifyTooltips(List<TooltipLine> tooltips)
|
|
{
|
|
string modeText = hammerMode ? "Hammer" : "Pickaxe";
|
|
tooltips.Add(new TooltipLine(Mod, "SingularityMultitoolMode", $"Current Mode: {modeText}"));
|
|
}
|
|
|
|
public override void SaveData(TagCompound tag)
|
|
{
|
|
tag["HammerMode"] = hammerMode;
|
|
}
|
|
|
|
public override void LoadData(TagCompound tag)
|
|
{
|
|
hammerMode = tag.GetBool("HammerMode");
|
|
ApplyMode();
|
|
}
|
|
|
|
public override void NetSend(BinaryWriter writer)
|
|
{
|
|
writer.Write(hammerMode);
|
|
}
|
|
|
|
public override void NetReceive(BinaryReader reader)
|
|
{
|
|
hammerMode = reader.ReadBoolean();
|
|
ApplyMode();
|
|
}
|
|
|
|
public override void AddRecipes()
|
|
{
|
|
CreateRecipe()
|
|
.AddIngredient(ModContent.ItemType<ControlledSingularity>(), 12)
|
|
.AddIngredient(ModContent.ItemType<SingularityAlloy>(), 4)
|
|
.AddTile<Content.Tiles.CraftingStations.SingularitySealingUnit>()
|
|
.Register();
|
|
}
|
|
|
|
private void ToggleMode(Player player)
|
|
{
|
|
hammerMode = !hammerMode;
|
|
ApplyMode();
|
|
|
|
if (Main.myPlayer == player.whoAmI)
|
|
{
|
|
string itemName = Lang.GetItemNameValue(Item.type);
|
|
string modeText = hammerMode ? "Hammer" : "Pickaxe";
|
|
Main.NewText($"{itemName} switched to {modeText} mode.", 190, 120, 255);
|
|
}
|
|
|
|
SoundEngine.PlaySound(SoundID.MenuTick, player.Center);
|
|
}
|
|
|
|
private void ApplyMode()
|
|
{
|
|
if (hammerMode)
|
|
{
|
|
Item.pick = 0;
|
|
Item.hammer = HammerPower;
|
|
}
|
|
else
|
|
{
|
|
Item.pick = PickaxePower;
|
|
Item.hammer = 0;
|
|
}
|
|
|
|
Item.axe = AxePower;
|
|
}
|
|
}
|
|
}
|