From f3aecf176c70ead290c37ede5397cf78444c5610 Mon Sep 17 00:00:00 2001 From: Niko Date: Thu, 20 Nov 2025 11:35:07 +0000 Subject: [PATCH] Add trans set --- .../TranscendentSet/TranscendentCoreplate.cs | 59 ++++++++ .../TranscendentSet/TranscendentCoreplate.png | Bin 0 -> 504 bytes .../TranscendentCoreplate_Body.png | Bin 0 -> 504 bytes .../Armor/TranscendentSet/TranscendentCowl.cs | 66 +++++++++ .../TranscendentSet/TranscendentCowl.png | Bin 0 -> 504 bytes .../TranscendentSet/TranscendentCowl_Head.png | Bin 0 -> 504 bytes .../TranscendentSet/TranscendentGreaves.cs | 57 ++++++++ .../TranscendentSet/TranscendentGreaves.png | Bin 0 -> 504 bytes .../TranscendentGreaves_Legs.png | Bin 0 -> 504 bytes .../Armor/TranscendentSet/TranscendentHelm.cs | 69 +++++++++ .../TranscendentSet/TranscendentHelm.png | Bin 0 -> 504 bytes .../TranscendentSet/TranscendentHelm_Head.png | Bin 0 -> 504 bytes .../Armor/TranscendentSet/TranscendentHood.cs | 66 +++++++++ .../TranscendentSet/TranscendentHood.png | Bin 0 -> 504 bytes .../TranscendentSet/TranscendentHood_Head.png | Bin 0 -> 504 bytes .../Armor/TranscendentSet/TranscendentMask.cs | 67 +++++++++ .../TranscendentSet/TranscendentMask.png | Bin 0 -> 504 bytes .../TranscendentSet/TranscendentMask_Head.png | Bin 0 -> 504 bytes .../TranscendentSet/TranscendentSetEffects.cs | 93 ++++++++++++ .../Items/Global/TranscendentRarityTooltip.cs | 136 ++++++++++++++++++ Content/Rarities/TranscendentItem.cs | 34 +++++ .../en-US_Mods.ForgottenWawiTech.hjson | 82 ++++++++++- 22 files changed, 728 insertions(+), 1 deletion(-) create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentCoreplate.cs create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentCoreplate.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentCoreplate_Body.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentCowl.cs create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentCowl.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentCowl_Head.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentGreaves.cs create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentGreaves.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentGreaves_Legs.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentHelm.cs create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentHelm.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentHelm_Head.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentHood.cs create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentHood.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentHood_Head.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentMask.cs create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentMask.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentMask_Head.png create mode 100644 Content/Items/Armor/TranscendentSet/TranscendentSetEffects.cs create mode 100644 Content/Items/Global/TranscendentRarityTooltip.cs create mode 100644 Content/Rarities/TranscendentItem.cs diff --git a/Content/Items/Armor/TranscendentSet/TranscendentCoreplate.cs b/Content/Items/Armor/TranscendentSet/TranscendentCoreplate.cs new file mode 100644 index 0000000..b90bb27 --- /dev/null +++ b/Content/Items/Armor/TranscendentSet/TranscendentCoreplate.cs @@ -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(); + 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()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType(), 6) + .AddIngredient(ModContent.ItemType(), 12) + .AddIngredient(ModContent.ItemType(), 18) + .AddIngredient(ModContent.ItemType(), 2) + .AddIngredient(ModContent.ItemType(), 4) + .AddTile(ModContent.TileType()) + .Register(); + } + } +} diff --git a/Content/Items/Armor/TranscendentSet/TranscendentCoreplate.png b/Content/Items/Armor/TranscendentSet/TranscendentCoreplate.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentCoreplate_Body.png b/Content/Items/Armor/TranscendentSet/TranscendentCoreplate_Body.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentCowl.cs b/Content/Items/Armor/TranscendentSet/TranscendentCowl.cs new file mode 100644 index 0000000..a08547d --- /dev/null +++ b/Content/Items/Armor/TranscendentSet/TranscendentCowl.cs @@ -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(); + 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() && legs.type == ModContent.ItemType(); + } + + 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()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType(), 6) + .AddIngredient(ModContent.ItemType(), 10) + .AddIngredient(ModContent.ItemType(), 18) + .AddIngredient(ModContent.ItemType(), 4) + .AddTile(ModContent.TileType()) + .Register(); + } + } +} diff --git a/Content/Items/Armor/TranscendentSet/TranscendentCowl.png b/Content/Items/Armor/TranscendentSet/TranscendentCowl.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentCowl_Head.png b/Content/Items/Armor/TranscendentSet/TranscendentCowl_Head.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentGreaves.cs b/Content/Items/Armor/TranscendentSet/TranscendentGreaves.cs new file mode 100644 index 0000000..764497c --- /dev/null +++ b/Content/Items/Armor/TranscendentSet/TranscendentGreaves.cs @@ -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(); + 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()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType(), 4) + .AddIngredient(ModContent.ItemType(), 10) + .AddIngredient(ModContent.ItemType(), 16) + .AddIngredient(ModContent.ItemType(), 1) + .AddIngredient(ModContent.ItemType(), 4) + .AddTile(ModContent.TileType()) + .Register(); + } + } +} diff --git a/Content/Items/Armor/TranscendentSet/TranscendentGreaves.png b/Content/Items/Armor/TranscendentSet/TranscendentGreaves.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentGreaves_Legs.png b/Content/Items/Armor/TranscendentSet/TranscendentGreaves_Legs.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentHelm.cs b/Content/Items/Armor/TranscendentSet/TranscendentHelm.cs new file mode 100644 index 0000000..14f0169 --- /dev/null +++ b/Content/Items/Armor/TranscendentSet/TranscendentHelm.cs @@ -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(); + 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() && legs.type == ModContent.ItemType(); + } + + 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()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType(), 6) + .AddIngredient(ModContent.ItemType(), 10) + .AddIngredient(ModContent.ItemType(), 18) + .AddIngredient(ModContent.ItemType(), 4) + .AddTile(ModContent.TileType()) + .Register(); + } + } +} diff --git a/Content/Items/Armor/TranscendentSet/TranscendentHelm.png b/Content/Items/Armor/TranscendentSet/TranscendentHelm.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentHelm_Head.png b/Content/Items/Armor/TranscendentSet/TranscendentHelm_Head.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentHood.cs b/Content/Items/Armor/TranscendentSet/TranscendentHood.cs new file mode 100644 index 0000000..fd50b55 --- /dev/null +++ b/Content/Items/Armor/TranscendentSet/TranscendentHood.cs @@ -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(); + 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() && legs.type == ModContent.ItemType(); + } + + 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()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType(), 6) + .AddIngredient(ModContent.ItemType(), 10) + .AddIngredient(ModContent.ItemType(), 18) + .AddIngredient(ModContent.ItemType(), 4) + .AddTile(ModContent.TileType()) + .Register(); + } + } +} diff --git a/Content/Items/Armor/TranscendentSet/TranscendentHood.png b/Content/Items/Armor/TranscendentSet/TranscendentHood.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentHood_Head.png b/Content/Items/Armor/TranscendentSet/TranscendentHood_Head.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentMask.cs b/Content/Items/Armor/TranscendentSet/TranscendentMask.cs new file mode 100644 index 0000000..e3584dc --- /dev/null +++ b/Content/Items/Armor/TranscendentSet/TranscendentMask.cs @@ -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(); + 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() && legs.type == ModContent.ItemType(); + } + + 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()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType()) + .AddIngredient(ModContent.ItemType(), 6) + .AddIngredient(ModContent.ItemType(), 10) + .AddIngredient(ModContent.ItemType(), 18) + .AddIngredient(ModContent.ItemType(), 4) + .AddTile(ModContent.TileType()) + .Register(); + } + } +} diff --git a/Content/Items/Armor/TranscendentSet/TranscendentMask.png b/Content/Items/Armor/TranscendentSet/TranscendentMask.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentMask_Head.png b/Content/Items/Armor/TranscendentSet/TranscendentMask_Head.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0cf81e52f4133dbe85453dd9a37993af17b5be GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBbOU@sT!FNbf{DF-NtsjE_3B;! z|NjSy0D+K@p01v+t9x8zR#D@WS?dlQ`1+YJESG!@x4dC7*`C93=UXkhhvvt!hjSLlJ~RwmnP~Bh_e#*cGOJz5H)U2RZk=*d{>S{o z|7E^K_FWXNcxrjXh&wV*Hfp0Ti%!ljhM&t`NT+&77>M@wN(xASbQfH=B6&8`PK|k& o(pT;d?|57xzrgJ7^Ax@sCjQeEzP*#>W`d&2)78&qol`;+07t#pIRF3v literal 0 HcmV?d00001 diff --git a/Content/Items/Armor/TranscendentSet/TranscendentSetEffects.cs b/Content/Items/Armor/TranscendentSet/TranscendentSetEffects.cs new file mode 100644 index 0000000..7dab63b --- /dev/null +++ b/Content/Items/Armor/TranscendentSet/TranscendentSetEffects.cs @@ -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. + } + } +} diff --git a/Content/Items/Global/TranscendentRarityTooltip.cs b/Content/Items/Global/TranscendentRarityTooltip.cs new file mode 100644 index 0000000..d6fd541 --- /dev/null +++ b/Content/Items/Global/TranscendentRarityTooltip.cs @@ -0,0 +1,136 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using ReLogic.Graphics; +using System; +using Terraria; +using Terraria.ModLoader; +using ForgottenWawiTech.Content.Rarities; + +namespace ForgottenWawiTech.Content.Items.Global +{ + public class TranscendentRarityTooltip : GlobalItem + { + public override bool PreDrawTooltipLine(Item item, DrawableTooltipLine line, ref int yOffset) + { + if (item.rare != ModContent.RarityType()) + return base.PreDrawTooltipLine(item, line, ref yOffset); + + if (line.Mod != "Terraria" || line.Name != "ItemName") + return base.PreDrawTooltipLine(item, line, ref yOffset); + + float time = Main.GlobalTimeWrappedHourly; + Vector2 position = new Vector2(line.X, line.Y); + float scale = line.BaseScale.X; + + ModRarity rarity = RarityLoader.GetRarity(item.rare); + Color baseColor = rarity.RarityColor; + + // Celestial orbit trail: faint echoes revolved around the text. + const int orbitCopies = 5; + for (int i = 0; i < orbitCopies; i++) + { + float angle = time * 1.2f + i * MathHelper.TwoPi / orbitCopies; + float radius = 4.5f + 1.5f * (float)Math.Sin(time * 2.4f + i); + Vector2 offset = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)) * radius; + + float pulse = 0.35f + 0.25f * (float)Math.Sin(time * 3f + i); + Color orbitColor = Color.Lerp(baseColor, Color.White, pulse) * 0.55f; + + DynamicSpriteFontExtensionMethods.DrawString( + Main.spriteBatch, + line.Font, + line.Text, + position + offset, + orbitColor, + line.Rotation, + line.Origin, + scale, + SpriteEffects.None, + 0f + ); + } + + // Vertical aurora shimmer behind the main text. + Vector2 auroraOffset = new Vector2(0f, (float)Math.Sin(time * 4.2f) * 2.2f); + Color auroraColor = Color.Lerp(baseColor, new Color(240, 255, 220), 0.6f) * 0.7f; + DynamicSpriteFontExtensionMethods.DrawString( + Main.spriteBatch, + line.Font, + line.Text, + position + auroraOffset, + auroraColor, + line.Rotation, + line.Origin, + scale * 1.04f, + SpriteEffects.None, + 0f + ); + + // Outline ensures readability against bright backgrounds. + Vector2[] outlines = + { + new Vector2(-1f, 0f), + new Vector2(1f, 0f), + new Vector2(0f, -1f), + new Vector2(0f, 1f) + }; + + foreach (Vector2 outline in outlines) + { + DynamicSpriteFontExtensionMethods.DrawString( + Main.spriteBatch, + line.Font, + line.Text, + position + outline, + Color.Black * 0.85f, + line.Rotation, + line.Origin, + scale, + SpriteEffects.None, + 0f + ); + } + + // Main text with cascading prism shimmer. + float shimmer = (float)Math.Sin(time * 5.2f) * 0.5f + 0.5f; + Color highlight = Color.Lerp(baseColor, Color.White, 0.45f + shimmer * 0.35f); + Color finalColor = new Color( + (byte)MathHelper.Clamp(baseColor.R + (highlight.R - baseColor.R) * shimmer, 0, 255), + (byte)MathHelper.Clamp(baseColor.G + (highlight.G - baseColor.G) * shimmer, 0, 255), + (byte)MathHelper.Clamp(baseColor.B + (highlight.B - baseColor.B) * shimmer, 0, 255) + ); + + DynamicSpriteFontExtensionMethods.DrawString( + Main.spriteBatch, + line.Font, + line.Text, + position, + finalColor, + line.Rotation, + line.Origin, + scale, + SpriteEffects.None, + 0f + ); + + // Add a rising stardust sweep that briefly flashes across the name. + float sweepPos = (float)Math.Sin(time * 1.6f) * 0.5f + 0.5f; + Vector2 sweepOffset = new Vector2((sweepPos - 0.5f) * 14f, -6f); + Color sweepColor = new Color(255, 255, 220) * 0.5f; + DynamicSpriteFontExtensionMethods.DrawString( + Main.spriteBatch, + line.Font, + line.Text, + position + sweepOffset, + sweepColor, + line.Rotation, + line.Origin, + scale * 0.9f, + SpriteEffects.None, + 0f + ); + + return false; + } + } +} diff --git a/Content/Rarities/TranscendentItem.cs b/Content/Rarities/TranscendentItem.cs new file mode 100644 index 0000000..99a2ee9 --- /dev/null +++ b/Content/Rarities/TranscendentItem.cs @@ -0,0 +1,34 @@ +using Microsoft.Xna.Framework; +using System; +using Terraria; +using Terraria.ModLoader; + +namespace ForgottenWawiTech.Content.Rarities +{ + public class TranscendentItem : ModRarity + { + public override Color RarityColor + { + get + { + float time = Main.GlobalTimeWrappedHourly; + + Color singularity = new Color(160, 0, 255); + Color corrupted = new Color(0, 255, 200); + Color sentinel = new Color(90, 220, 255); + Color avalian = new Color(255, 170, 90); + + float pulse = (float)(Math.Sin(time * MathHelper.TwoPi) * 0.5f + 0.5f); + float swirl = (float)(Math.Sin(time * 0.75f * MathHelper.TwoPi + Math.PI / 3f) * 0.5f + 0.5f); + float flare = (float)Math.Pow(Math.Max(0f, (float)Math.Sin(time * 2.1f * MathHelper.TwoPi)), 4f); + + Color blend = Color.Lerp(singularity, corrupted, pulse); + blend = Color.Lerp(blend, sentinel, swirl * 0.6f); + blend = Color.Lerp(blend, avalian, (1f - pulse) * 0.4f); + + float brightness = 1f + 0.35f * flare; + return blend * brightness; + } + } + } +} diff --git a/Localization/en-US_Mods.ForgottenWawiTech.hjson b/Localization/en-US_Mods.ForgottenWawiTech.hjson index cf91ca5..dcc7bbf 100644 --- a/Localization/en-US_Mods.ForgottenWawiTech.hjson +++ b/Localization/en-US_Mods.ForgottenWawiTech.hjson @@ -257,8 +257,9 @@ Items: { DisplayName: Avali Scout Pack Tooltip: ''' + -10% damage + +15% movement speed. A compact survival rig packed with rations, tools, and portable scanners. - Pairs with the Scout armor to keep you light on your talons and ready for recon. ''' } @@ -649,6 +650,85 @@ Items: { ''' } + TranscendentHelm: { + DisplayName: Transcendent Helm + Tooltip: + ''' + +30% melee damage + +20% melee critical strike chance + +25% melee attack speed + +250 maximum life + +10% damage reduction + Fuses singularity fury with Avali agility and Protogen precision. + ''' + } + + TranscendentMask: { + DisplayName: Transcendent Mask + Tooltip: + ''' + +32% ranged damage + +22% ranged critical strike chance + +180 maximum life + +120 maximum mana + +8% damage reduction + Tri-spectrum targeting uplinks every shot to a nanite hunting net. + ''' + } + + TranscendentHood: { + DisplayName: Transcendent Hood + Tooltip: + ''' + +34% magic damage + +18% magic critical strike chance + +320 maximum mana + -30% mana cost + +200 mana regeneration + Wires your mind straight into the singularity-swarm lattice. + ''' + } + + TranscendentCowl: { + DisplayName: Transcendent Cowl + Tooltip: + ''' + +40% summon damage + +5 max minions + +2 max turrets + +220 maximum life + +10% damage reduction + Drone, sentinel, and singularity spirits obey every command. + ''' + } + + TranscendentCoreplate: { + DisplayName: Transcendent Coreplate + Tooltip: + ''' + +22% damage + +12% critical strike chance + +220 maximum life + +160 maximum mana + +8 life regeneration + +4 max minions, +2 max turrets, -20% mana cost, +10% damage reduction + An apex core woven from singularity alloys and corrupted nanites. + ''' + } + + TranscendentGreaves: { + DisplayName: Transcendent Greaves + Tooltip: + ''' + +18% damage + +10% critical strike chance + +160 maximum life + +35% movement speed + +2.5 max run speed, +3.5 jump speed, +8% damage reduction + Leaves photon echoes as you outrun reality itself. + ''' + } + ProtogenSentinelHelmet: { DisplayName: Protogen Sentinel Helmet Tooltip: