Add Nullified debuff, add Transcendent weapons and tool

This commit is contained in:
2025-11-20 13:25:27 +00:00
parent f3aecf176c
commit d1a99ca8b1
26 changed files with 1037 additions and 99 deletions
@@ -1,13 +1,25 @@
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;
@@ -23,8 +35,52 @@ namespace ForgottenWawiTech.Content.Items.Tools.SingularitySet
Item.UseSound = SoundID.Item1;
Item.autoReuse = true;
Item.useTurn = true;
Item.axe = 500;
Item.pick = 500;
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()
@@ -35,5 +91,36 @@ namespace ForgottenWawiTech.Content.Items.Tools.SingularitySet
.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;
}
}
}