Add trans set

This commit is contained in:
2025-11-20 11:35:07 +00:00
parent c0f4a516a8
commit f3aecf176c
22 changed files with 728 additions and 1 deletions
@@ -0,0 +1,59 @@
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using ForgottenWawiTech.Content.Items.Materials;
using ForgottenWawiTech.Content.Rarities;
using ForgottenWawiTech.Content.Items.Armor.AvaliVanguardSet;
using ForgottenWawiTech.Content.Items.Armor.ProtogenSentinelSet;
using ForgottenWawiTech.Content.Items.Armor.SingularitySet;
using ForgottenWawiTech.Content.Tiles.CraftingStations;
namespace ForgottenWawiTech.Content.Items.Armor.TranscendentSet
{
[AutoloadEquip(EquipType.Body)]
public class TranscendentCoreplate : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 20;
Item.value = Item.sellPrice(platinum: 250);
Item.rare = ModContent.RarityType<TranscendentItem>();
Item.defense = 64;
}
public override void UpdateEquip(Player player)
{
player.GetDamage(DamageClass.Generic) += 0.22f;
player.GetCritChance(DamageClass.Generic) += 12;
player.endurance += 0.10f;
player.statLifeMax2 += 220;
player.statManaMax2 += 160;
player.lifeRegen += 8;
player.manaCost -= 0.20f;
player.maxMinions += 4;
player.maxTurrets += 2;
player.buffImmune[BuffID.Bleeding] = true;
player.buffImmune[BuffID.Poisoned] = true;
player.buffImmune[BuffID.OnFire] = true;
}
public override void AddRecipes()
{
CreateRecipe()
.AddIngredient(ModContent.ItemType<SingularityChestplate>())
.AddIngredient(ModContent.ItemType<AvaliVanguardChestplate>())
.AddIngredient(ModContent.ItemType<ProtogenSentinelChestplate>())
.AddIngredient(ModContent.ItemType<ControlledSingularity>(), 6)
.AddIngredient(ModContent.ItemType<EnergyCore>(), 12)
.AddIngredient(ModContent.ItemType<MalfunctioningNanites>(), 18)
.AddIngredient(ModContent.ItemType<ContainmentUnit>(), 2)
.AddIngredient(ModContent.ItemType<UnstableMatter>(), 4)
.AddTile(ModContent.TileType<SingularitySealingUnit>())
.Register();
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -0,0 +1,66 @@
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using ForgottenWawiTech.Content.Items.Armor.AvaliVanguardSet;
using ForgottenWawiTech.Content.Items.Armor.ProtogenSentinelSet;
using ForgottenWawiTech.Content.Items.Armor.SingularitySet;
using ForgottenWawiTech.Content.Items.Materials;
using ForgottenWawiTech.Content.Rarities;
using ForgottenWawiTech.Content.Tiles.CraftingStations;
namespace ForgottenWawiTech.Content.Items.Armor.TranscendentSet
{
[AutoloadEquip(EquipType.Head)]
public class TranscendentCowl : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 20;
Item.value = Item.sellPrice(platinum: 250);
Item.rare = ModContent.RarityType<TranscendentItem>();
Item.defense = 52;
}
public override void UpdateEquip(Player player)
{
player.GetDamage(DamageClass.Summon) += 0.40f;
player.maxMinions += 5;
player.maxTurrets += 2;
player.statLifeMax2 += 220;
player.endurance += 0.10f;
player.whipRangeMultiplier += 0.25f;
player.GetAttackSpeed(DamageClass.Summon) += 0.20f;
}
public override bool IsArmorSet(Item head, Item body, Item legs)
{
return body.type == ModContent.ItemType<TranscendentCoreplate>() && legs.type == ModContent.ItemType<TranscendentGreaves>();
}
public override void UpdateArmorSet(Player player)
{
TranscendentSetEffects.ApplySetBonus(player);
player.GetDamage(DamageClass.Summon) += 0.30f;
player.GetAttackSpeed(DamageClass.Summon) += 0.25f;
player.maxMinions += 4;
player.maxTurrets += 2;
player.whipRangeMultiplier += 0.20f;
player.spiderArmor = true;
}
public override void AddRecipes()
{
CreateRecipe()
.AddIngredient(ModContent.ItemType<SingularityHelmet>())
.AddIngredient(ModContent.ItemType<AvaliVanguardCowl>())
.AddIngredient(ModContent.ItemType<ProtogenSentinelCowl>())
.AddIngredient(ModContent.ItemType<ControlledSingularity>(), 6)
.AddIngredient(ModContent.ItemType<EnergyCore>(), 10)
.AddIngredient(ModContent.ItemType<MalfunctioningNanites>(), 18)
.AddIngredient(ModContent.ItemType<UnstableMatter>(), 4)
.AddTile(ModContent.TileType<SingularitySealingUnit>())
.Register();
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -0,0 +1,57 @@
using System;
using Terraria;
using Terraria.ModLoader;
using ForgottenWawiTech.Content.Items.Materials;
using ForgottenWawiTech.Content.Rarities;
using ForgottenWawiTech.Content.Items.Armor.AvaliVanguardSet;
using ForgottenWawiTech.Content.Items.Armor.ProtogenSentinelSet;
using ForgottenWawiTech.Content.Items.Armor.SingularitySet;
using ForgottenWawiTech.Content.Tiles.CraftingStations;
namespace ForgottenWawiTech.Content.Items.Armor.TranscendentSet
{
[AutoloadEquip(EquipType.Legs)]
public class TranscendentGreaves : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 20;
Item.value = Item.sellPrice(platinum: 250);
Item.rare = ModContent.RarityType<TranscendentItem>();
Item.defense = 56;
}
public override void UpdateEquip(Player player)
{
player.GetDamage(DamageClass.Generic) += 0.18f;
player.GetCritChance(DamageClass.Generic) += 10;
player.statLifeMax2 += 160;
player.moveSpeed += 0.35f;
player.runAcceleration += 0.12f;
player.maxRunSpeed += 2.5f;
player.jumpSpeedBoost += 3.5f;
player.wingTimeMax = Math.Max(player.wingTimeMax, 1800);
player.endurance += 0.08f;
player.noFallDmg = true;
player.rocketBoots = Math.Max(player.rocketBoots, 3);
}
public override void AddRecipes()
{
CreateRecipe()
.AddIngredient(ModContent.ItemType<SingularityLeggings>())
.AddIngredient(ModContent.ItemType<AvaliVanguardLeggings>())
.AddIngredient(ModContent.ItemType<ProtogenSentinelLeggings>())
.AddIngredient(ModContent.ItemType<ControlledSingularity>(), 4)
.AddIngredient(ModContent.ItemType<EnergyCore>(), 10)
.AddIngredient(ModContent.ItemType<MalfunctioningNanites>(), 16)
.AddIngredient(ModContent.ItemType<ContainmentUnit>(), 1)
.AddIngredient(ModContent.ItemType<UnstableMatter>(), 4)
.AddTile(ModContent.TileType<SingularitySealingUnit>())
.Register();
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -0,0 +1,69 @@
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using ForgottenWawiTech.Content.Items.Armor.AvaliVanguardSet;
using ForgottenWawiTech.Content.Items.Armor.ProtogenSentinelSet;
using ForgottenWawiTech.Content.Items.Armor.SingularitySet;
using ForgottenWawiTech.Content.Items.Materials;
using ForgottenWawiTech.Content.Rarities;
using ForgottenWawiTech.Content.Tiles.CraftingStations;
namespace ForgottenWawiTech.Content.Items.Armor.TranscendentSet
{
[AutoloadEquip(EquipType.Head)]
public class TranscendentHelm : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 20;
Item.value = Item.sellPrice(platinum: 250);
Item.rare = ModContent.RarityType<TranscendentItem>();
Item.defense = 58;
}
public override void UpdateEquip(Player player)
{
player.GetDamage(DamageClass.Melee) += 0.30f;
player.GetCritChance(DamageClass.Melee) += 20;
player.GetAttackSpeed(DamageClass.Melee) += 0.25f;
player.statLifeMax2 += 250;
player.endurance += 0.10f;
player.magmaStone = true;
player.autoReuseGlove = true;
player.meleeScaleGlove = true;
player.kbGlove = true;
}
public override bool IsArmorSet(Item head, Item body, Item legs)
{
return body.type == ModContent.ItemType<TranscendentCoreplate>() && legs.type == ModContent.ItemType<TranscendentGreaves>();
}
public override void UpdateArmorSet(Player player)
{
TranscendentSetEffects.ApplySetBonus(player);
player.GetDamage(DamageClass.Melee) += 0.18f;
player.GetAttackSpeed(DamageClass.Melee) += 0.18f;
//player.meleeSpeed += 0.10f;
player.meleeScaleGlove = true;
player.autoReuseGlove = true;
player.kbGlove = true;
player.lavaImmune = true;
}
public override void AddRecipes()
{
CreateRecipe()
.AddIngredient(ModContent.ItemType<SingularityHelmet>())
.AddIngredient(ModContent.ItemType<AvaliVanguardHelmet>())
.AddIngredient(ModContent.ItemType<ProtogenSentinelHelmet>())
.AddIngredient(ModContent.ItemType<ControlledSingularity>(), 6)
.AddIngredient(ModContent.ItemType<EnergyCore>(), 10)
.AddIngredient(ModContent.ItemType<MalfunctioningNanites>(), 18)
.AddIngredient(ModContent.ItemType<UnstableMatter>(), 4)
.AddTile(ModContent.TileType<SingularitySealingUnit>())
.Register();
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -0,0 +1,66 @@
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using ForgottenWawiTech.Content.Items.Armor.AvaliVanguardSet;
using ForgottenWawiTech.Content.Items.Armor.ProtogenSentinelSet;
using ForgottenWawiTech.Content.Items.Armor.SingularitySet;
using ForgottenWawiTech.Content.Items.Materials;
using ForgottenWawiTech.Content.Rarities;
using ForgottenWawiTech.Content.Tiles.CraftingStations;
namespace ForgottenWawiTech.Content.Items.Armor.TranscendentSet
{
[AutoloadEquip(EquipType.Head)]
public class TranscendentHood : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 20;
Item.value = Item.sellPrice(platinum: 250);
Item.rare = ModContent.RarityType<TranscendentItem>();
Item.defense = 54;
}
public override void UpdateEquip(Player player)
{
player.GetDamage(DamageClass.Magic) += 0.34f;
player.GetCritChance(DamageClass.Magic) += 18;
player.statManaMax2 += 320;
player.manaCost -= 0.30f;
player.manaRegenBonus += 200;
player.manaFlower = true;
player.manaMagnet = true;
}
public override bool IsArmorSet(Item head, Item body, Item legs)
{
return body.type == ModContent.ItemType<TranscendentCoreplate>() && legs.type == ModContent.ItemType<TranscendentGreaves>();
}
public override void UpdateArmorSet(Player player)
{
TranscendentSetEffects.ApplySetBonus(player);
player.GetDamage(DamageClass.Magic) += 0.22f;
player.GetCritChance(DamageClass.Magic) += 20;
player.manaCost -= 0.18f;
player.manaRegenBonus += 150;
player.manaFlower = true;
player.magicCuffs = true;
}
public override void AddRecipes()
{
CreateRecipe()
.AddIngredient(ModContent.ItemType<SingularityHelmet>())
.AddIngredient(ModContent.ItemType<AvaliVanguardHood>())
.AddIngredient(ModContent.ItemType<ProtogenSentinelHood>())
.AddIngredient(ModContent.ItemType<ControlledSingularity>(), 6)
.AddIngredient(ModContent.ItemType<EnergyCore>(), 10)
.AddIngredient(ModContent.ItemType<MalfunctioningNanites>(), 18)
.AddIngredient(ModContent.ItemType<UnstableMatter>(), 4)
.AddTile(ModContent.TileType<SingularitySealingUnit>())
.Register();
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -0,0 +1,67 @@
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using ForgottenWawiTech.Content.Items.Armor.AvaliVanguardSet;
using ForgottenWawiTech.Content.Items.Armor.ProtogenSentinelSet;
using ForgottenWawiTech.Content.Items.Armor.SingularitySet;
using ForgottenWawiTech.Content.Items.Materials;
using ForgottenWawiTech.Content.Rarities;
using ForgottenWawiTech.Content.Tiles.CraftingStations;
namespace ForgottenWawiTech.Content.Items.Armor.TranscendentSet
{
[AutoloadEquip(EquipType.Head)]
public class TranscendentMask : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 20;
Item.value = Item.sellPrice(platinum: 250);
Item.rare = ModContent.RarityType<TranscendentItem>();
Item.defense = 56;
}
public override void UpdateEquip(Player player)
{
player.GetDamage(DamageClass.Ranged) += 0.32f;
player.GetCritChance(DamageClass.Ranged) += 22;
player.statLifeMax2 += 180;
player.statManaMax2 += 120;
player.endurance += 0.08f;
player.ammoCost80 = true;
player.scope = true;
player.archery = true;
}
public override bool IsArmorSet(Item head, Item body, Item legs)
{
return body.type == ModContent.ItemType<TranscendentCoreplate>() && legs.type == ModContent.ItemType<TranscendentGreaves>();
}
public override void UpdateArmorSet(Player player)
{
TranscendentSetEffects.ApplySetBonus(player);
player.GetDamage(DamageClass.Ranged) += 0.22f;
player.GetCritChance(DamageClass.Ranged) += 25;
player.ammoBox = true;
player.ammoCost75 = true;
player.archery = true;
player.scope = true;
}
public override void AddRecipes()
{
CreateRecipe()
.AddIngredient(ModContent.ItemType<SingularityHelmet>())
.AddIngredient(ModContent.ItemType<AvaliVanguardMask>())
.AddIngredient(ModContent.ItemType<ProtogenSentinelMask>())
.AddIngredient(ModContent.ItemType<ControlledSingularity>(), 6)
.AddIngredient(ModContent.ItemType<EnergyCore>(), 10)
.AddIngredient(ModContent.ItemType<MalfunctioningNanites>(), 18)
.AddIngredient(ModContent.ItemType<UnstableMatter>(), 4)
.AddTile(ModContent.TileType<SingularitySealingUnit>())
.Register();
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -0,0 +1,93 @@
using System;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace ForgottenWawiTech.Content.Items.Armor.TranscendentSet
{
internal static class TranscendentSetEffects
{
private const string SetBonusDescription =
"Summons the Ascendant Swarm, sentinel core, and singularity star to fight alongside you\n" +
"+35% damage, +25% critical strike chance, +20% damage reduction, +6 max minions, +3 max turrets\n" +
"Grants limitless mobility, nearly absolute elemental immunity, and causes attacks to shed seeking nanite shards";
internal static void ApplySetBonus(Player player)
{
player.setBonus = SetBonusDescription;
player.GetDamage(DamageClass.Generic) += 0.35f;
player.GetCritChance(DamageClass.Generic) += 25;
player.endurance += 0.20f;
player.statLifeMax2 += 200;
player.statManaMax2 += 150;
player.lifeRegen += 10;
player.moveSpeed += 0.40f;
player.accRunSpeed += 3f;
player.maxRunSpeed += 3f;
player.jumpBoost = true;
player.jumpSpeedBoost += 4f;
player.hasMagiluminescence = true;
player.rocketBoots = Math.Max(player.rocketBoots, 3);
player.noFallDmg = true;
player.autoJump = true;
player.maxMinions += 6;
player.maxTurrets += 3;
player.GetDamage(DamageClass.Summon) += 0.25f;
player.GetAttackSpeed(DamageClass.Melee) += 0.20f;
player.GetAttackSpeed(DamageClass.Summon) += 0.20f;
player.waterWalk = true;
player.ignoreWater = true;
player.fireWalk = true;
player.lavaImmune = true;
player.iceSkate = true;
player.blackBelt = true;
player.sporeSac = true;
player.wingTimeMax = Math.Max(player.wingTimeMax, 900);
int[] immunities =
{
BuffID.OnFire,
BuffID.OnFire3,
BuffID.Burning,
BuffID.Frostburn,
BuffID.Frostburn2,
BuffID.CursedInferno,
BuffID.Ichor,
BuffID.ShadowFlame,
BuffID.Venom,
BuffID.Poisoned,
BuffID.Confused,
BuffID.Slow,
BuffID.Weak,
BuffID.Silenced,
BuffID.Cursed,
BuffID.Darkness,
BuffID.Blackout,
BuffID.Chilled,
BuffID.Frozen,
BuffID.Webbed,
BuffID.Stoned,
BuffID.Electrified,
BuffID.Obstructed,
BuffID.OgreSpit,
BuffID.Suffocation,
BuffID.VortexDebuff,
BuffID.PotionSickness,
BuffID.ManaSickness
};
foreach (int buffId in immunities)
{
player.buffImmune[buffId] = true;
}
// TODO: Implement Ascendant Swarm minions, sentinel beam volley, and nanite shard projectiles.
}
}
}