From a9b0d1571d45b4e5fca404523f63d534e6b73a23 Mon Sep 17 00:00:00 2001 From: Niko Date: Tue, 11 Nov 2025 11:43:58 +0000 Subject: [PATCH] Make the Avalian Trader less robotic, add Avali Feather --- Content/Items/Materials/AvaliFeather.cs | 21 +++ Content/Items/Materials/AvaliFeather.png | Bin 0 -> 504 bytes Content/Items/Materials/RGBAlloy.cs | 3 +- Content/Items/Materials/RGBAlloy.png | Bin 20845 -> 29113 bytes Content/Items/Materials/RGBass.cs | 35 ++++- Content/Items/Materials/VisorShard.cs | 3 +- Content/NPCs/TownNPCs/AvalianTrader.cs | 52 +++++-- Content/Rarities/AvalianItem.cs | 33 +++++ Content/Rarities/ProtogenItem.cs | 36 +++++ ForgottenWawiTechSystem.cs | 30 +++++ .../en-US_Mods.ForgottenWawiTech.hjson | 127 +++++++++--------- README.md | 6 +- build.txt | 2 +- 13 files changed, 268 insertions(+), 80 deletions(-) create mode 100644 Content/Items/Materials/AvaliFeather.cs create mode 100644 Content/Items/Materials/AvaliFeather.png create mode 100644 Content/Rarities/AvalianItem.cs create mode 100644 Content/Rarities/ProtogenItem.cs create mode 100644 ForgottenWawiTechSystem.cs diff --git a/Content/Items/Materials/AvaliFeather.cs b/Content/Items/Materials/AvaliFeather.cs new file mode 100644 index 0000000..575932a --- /dev/null +++ b/Content/Items/Materials/AvaliFeather.cs @@ -0,0 +1,21 @@ +using Terraria.ID; +using Terraria; +using Terraria.ModLoader; +using ForgottenWawiTech.Content.Rarities; + +namespace ForgottenWawiTech.Content.Items.Materials +{ + public class AvaliFeather : ModItem + { + + public override void SetDefaults() + { + Item.width = 20; + Item.height = 20; + Item.maxStack = 9999; + Item.rare = ModContent.RarityType(); + Item.value = Item.buyPrice(gold: 50); + } + + } +} \ No newline at end of file diff --git a/Content/Items/Materials/AvaliFeather.png b/Content/Items/Materials/AvaliFeather.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/Materials/RGBAlloy.cs b/Content/Items/Materials/RGBAlloy.cs index b905168..db16e0f 100644 --- a/Content/Items/Materials/RGBAlloy.cs +++ b/Content/Items/Materials/RGBAlloy.cs @@ -1,4 +1,5 @@ // Animated by British_Raccoon +// and then Axl_The_Protogen using Terraria.ID; using Terraria; using Terraria.ModLoader; @@ -13,7 +14,7 @@ namespace ForgottenWawiTech.Content.Items.Materials { public class RGBAlloy : ModItem { - private const int FRAME_COUNT = 5; + private const int FRAME_COUNT = 7; private const int TICKS_PER_FRAME = 10; public override void SetStaticDefaults() diff --git a/Content/Items/Materials/RGBAlloy.png b/Content/Items/Materials/RGBAlloy.png index 4c9b7a30293e80bd9539ec0c1879b6d325dae564..5716bacf0057ff4e48dc5bcc75c949dcba8d10ba 100644 GIT binary patch literal 29113 zcmeHQU2GIp6h4CsNDG3L1|&rq(ZWXjK}|H^gOoPVM2Hf#N`m3XSOQTtX$i&$S&R=7 zs;x#z5l9e~5FRA(BB7uWgAolSF`+HLA_7wDB2@!{s_V=-_nYqAb!@iWNv?hvbaTA)+B=GfHN=ve5lIdGi2wyWrgy9&?3LIeU7sb9n#6 z6|NGgm^yPR(e|3$zvlOM^}>ZSX3r#gwTLMG2GJF_Dt?Y=+5JSn%p;myM>I0Fe%F(a zx($P3GoGs?%FXls9Qt7WD7SK8RoTqafi1bYIS&*q{kY#ouLETzQ=fXpaZbj@*0_7v zPaj9Xf&Izq>ZDh8s;c}tw57`TlUsQ|)GcwI3G83}S(4jN|0a7B+$yrF%n9s=#5^7XFZvW#l#nCYXf5j%YUM; zz1{o|5W2Kes+t;_r7+mN9l4)^Xg*6Ir2B$#1bi!DIW@@`Q&h%yWsSJ8Zu#YexX%?O z+t$6wmX7^>0?XD`7Ig7GDU?1eNJuRakT8xwB+YVkQOU+54O|+K=U*_aAIf8wp~Af7 ztmhmT%bOGGK#0%9^7=o;H%h0;erPt20D96YH!!G_Xl&$idr_`P8sN9379OD=Sv|f$ zY7?tP9y^x07tx(0me-TIN>sCX1e%ql6LQ5;8a|x+mS1|F%MK#pJhDq~|9U_~n-fnn$2^*Dmf$-NJ>^r}JVtZMw|*lE3d@ z`Td*%mV0S0%O-^kEAD1KwQ=#byQJp3?IK%RL>3o|Y!12rnMXkSwoRk(xQ;3oXmU7eQkozhxtktA%MYA-vPK9=ysfWvz(gE#op^KIB5TBRFm zc%Nstu~=MwH+gQch_&?1a@sAGXFp_lR=zS)c3kIw1ACPjBam{Yt5S@tbsvV*nfOVl zZkt%@pZ&rGzvvYfuRO&1xfN0!SH92zNn9E_&I|oNrFjIV2;`825l{W(*=C`~$=T(2e^* z#t0x5M68G?89V_j20s8xYv*JsKah4G08>I$RXjYnKj@YtRve?AkOuF3jg5unIzJE{ zC0OW4825n)EW}uaF(nvt-E#QAC3OOwAD~-;Q8E4xq;UlNtH6(v(X|4J1J+c^GhqX% zCnVM0cld!Xk9@^8TYjM3@&n5IEk9uS0m~0qe!%hrmLIVEK=$whMH?r)j9dUb$XeM$ z1pFAGhv(_^a75795uAbXC@GvbMpu4a^mUu%)mZTmcY(9IOgDR}d`{t^j!@*dNlo51=P$T!Cs>QzLK8 zbOibmSMUQsVhPTm_vaG8?DnFdpX!`J@69D3n@eDG32ZKb%B-=u1Y~mwY%T%57L~MI zLH2M3+R$`Yy>8L5-a*8W!RIY~FRNb%1UmHrM8)U}cmU{V*Xv`OgDJcE8+06R+y^@4 z2i7FF{)66n5-}p`;?9Zyim?2K;Rgb}hgGQ(V+_l6en8KrsNbzpXw_T;8XC+c(6cIx z`#{9cA31$G)o^muY>P0?<{Eqe@xxdvqC8U&q_$j&tYB9&IbFH1(j z-SB)P=;$f90>q1`M-G9`lE8AED*!S&62=j5^hg;IGAxZJS28kT908EHq_QdM_h?*! zns)$>06u~98%H25QbvRfBw!(W3?z;vzU8XML<7sVJ@>Hm*CjYEM_e2yh!jL6LYCTW zT9*Jl@}=SofJFI`Py8mY0M4MxxdaKZ9JBGWa9x7-cD68-D^Tka0ES+eOK|ik8)w%g zu z)TiYV?3Xv^Xb)Sh5A9iifLf_hU#}2I!27`w0f8>hHBkJ39u}osLz|J+Wa}97c*mVo-Tm#Dw;NeY4%MWz$0~HT$9z!&& z)%%SA4W@3Y#-9(n+3&u1SWj~X!Z0)L16}3{!Yt715iz44?~M@^p&rsa0)Fm5b+ybd zP-_>Whu{kIcrnxY24P5;M*x;WB0j`ghPvg5l)(|;O}n2lfVQYXK0ko~y?80+AKDf=4- zbj{`+*xxu%Nmsa^n701}of01`@CuAqY}(4gt2YW%w(R`JmJ U3ndGddi^geomKK_@x0gn1^6pye*gdg literal 20845 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 sS8(6`E(); + } + } + } +} diff --git a/Content/Items/Materials/VisorShard.cs b/Content/Items/Materials/VisorShard.cs index 3ce24aa..02eca15 100644 --- a/Content/Items/Materials/VisorShard.cs +++ b/Content/Items/Materials/VisorShard.cs @@ -1,6 +1,7 @@ using Terraria.ID; using Terraria; using Terraria.ModLoader; +using ForgottenWawiTech.Content.Rarities; namespace ForgottenWawiTech.Content.Items.Materials { @@ -12,7 +13,7 @@ namespace ForgottenWawiTech.Content.Items.Materials Item.width = 20; Item.height = 20; Item.maxStack = 9999; - Item.rare = ItemRarityID.White; + Item.rare = ModContent.RarityType(); Item.value = Item.buyPrice(gold: 1); } } diff --git a/Content/NPCs/TownNPCs/AvalianTrader.cs b/Content/NPCs/TownNPCs/AvalianTrader.cs index 5a5d604..d6795b6 100644 --- a/Content/NPCs/TownNPCs/AvalianTrader.cs +++ b/Content/NPCs/TownNPCs/AvalianTrader.cs @@ -38,11 +38,11 @@ namespace ForgottenWawiTech.Content.NPCs.TownNPCs NPC.width = 18; NPC.height = 40; NPC.aiStyle = 7; - NPC.damage = 10; - NPC.defense = 15; - NPC.lifeMax = 250; + NPC.damage = 30; + NPC.defense = 10; + NPC.lifeMax = 500; NPC.HitSound = SoundID.NPCHit1; - NPC.DeathSound = SoundID.NPCDeath1; + NPC.DeathSound = SoundID.NPCDeath6; NPC.knockBackResist = 0.5f; AnimationType = NPCID.Guide; @@ -50,8 +50,8 @@ namespace ForgottenWawiTech.Content.NPCs.TownNPCs public override bool CanTownNPCSpawn(int numTownNPCs) { - // Example: Always spawn if there's room - return true; + // Only spawn if a player has obtained RGBass in this world + return ForgottenWawiTechSystem.hasObtainedRGBass; } public override List SetNPCNameList() @@ -92,23 +92,47 @@ namespace ForgottenWawiTech.Content.NPCs.TownNPCs public override void AddShops() { - var npcShop = new NPCShop(Type) + new NPCShop(Type) .Add() .Add() - .Add() - .Add(); - - - npcShop.Register(); + .Add(ItemID.RainbowBrick) // TODO: Force Rainbow Brick to not have No Value. + .Add() + .Register(); } public override string GetChat() { - switch (0) + switch (Main.rand.Next(15)) { case 0: return "*avalian chirping*"; + case 1: + return "Welcome! I've traveled far from Avalon to bring you the finest technology."; + case 2: + return "These feathers? They're not just for show - they're quite valuable!"; + case 3: + return "RGB technology is all the rage back home. Everything needs more colors!"; + case 4: + return "The visor shards I sell are fragments from our most advanced equipment."; + case 5: + return "My pack may be small, but I've traversed dimensions to get here."; + case 6: + return "*chirps excitedly* Oh, you're interested in our wares?"; + case 7: + return "Avalon sends its regards! And its finest materials."; + case 8: + return "Don't underestimate the power of a well-crafted alloy."; + case 9: + return "The journey here was long, but your world has such fascinating resources!"; + case 10: + return "*preens feathers* Presentation is important in any trade."; + case 11: + return "RGBass - it's not just a material, it's a lifestyle."; + case 12: + return "I wonder what the other traders back on Avalon would think of this place..."; + case 13: + return "My species may be small, but we're excellent engineers!"; default: - return "I have no idea what to say."; + return "Need something? My shop is always open!"; } } diff --git a/Content/Rarities/AvalianItem.cs b/Content/Rarities/AvalianItem.cs new file mode 100644 index 0000000..d5a9185 --- /dev/null +++ b/Content/Rarities/AvalianItem.cs @@ -0,0 +1,33 @@ +using Terraria.ModLoader; +using Terraria; +using Microsoft.Xna.Framework; +using System; + +namespace ForgottenWawiTech.Content.Rarities +{ + public class AvalianItem : ModRarity + { + public override Color RarityColor + { + get + { + float time = Main.GlobalTimeWrappedHourly; + + // Base color cycle: bright cyan <-> deep teal + const float cycleHz = 0.8f; // cycles per second + float t = (float)((Math.Sin(time * cycleHz * MathHelper.TwoPi) + 1f) * 0.5f); // 0..1 + + Color brightCyan = new Color(0, 255, 255); // Bright cyan + Color deepTeal = new Color(0, 128, 160); // Deep teal + Color baseColor = Color.Lerp(deepTeal, brightCyan, t); + + // Add a subtle shimmer effect (faster, gentler than pulse) + const float shimmerHz = 2.0f; + float shimmer = (float)((Math.Sin(time * shimmerHz * MathHelper.TwoPi) + 1f) * 0.5f); + float brightness = 1f + 0.15f * shimmer; // subtle +15% max brightness variation + + return baseColor * brightness; + } + } + } +} diff --git a/Content/Rarities/ProtogenItem.cs b/Content/Rarities/ProtogenItem.cs new file mode 100644 index 0000000..57b3a13 --- /dev/null +++ b/Content/Rarities/ProtogenItem.cs @@ -0,0 +1,36 @@ +using Terraria.ModLoader; +using Terraria; +using Microsoft.Xna.Framework; +using System; + +namespace ForgottenWawiTech.Content.Rarities +{ + public class ProtogenItem : ModRarity + { + // Cycles between bright neon blue and vibrant pink/magenta with digital-style pulses + // to represent Protogen visor displays and cybernetic aesthetic + public override Color RarityColor + { + get + { + float time = Main.GlobalTimeWrappedHourly; + + // Base color cycle: neon blue <-> vibrant pink + const float cycleHz = 0.9f; // cycles per second + float t = (float)((Math.Sin(time * cycleHz * MathHelper.TwoPi) + 1f) * 0.5f); // 0..1 + + Color neonBlue = new Color(0, 180, 255); // Bright neon blue + Color vibrantPink = new Color(255, 0, 180); // Vibrant pink/magenta + Color baseColor = Color.Lerp(neonBlue, vibrantPink, t); + + // Digital pulse effect (quick, sharp like LED displays) + const float pulseHz = 1.5f; + float s = (float)Math.Sin(time * pulseHz * MathHelper.TwoPi); + float pulse = (float)Math.Pow(Math.Max(0f, s), 2.5f); // sharper pulse + float brightness = 1f + 0.2f * pulse; // up to +20% brightness at pulse peak + + return baseColor * brightness; + } + } + } +} diff --git a/ForgottenWawiTechSystem.cs b/ForgottenWawiTechSystem.cs new file mode 100644 index 0000000..42b0e5c --- /dev/null +++ b/ForgottenWawiTechSystem.cs @@ -0,0 +1,30 @@ +using Terraria.ModLoader; +using Terraria.ModLoader.IO; + +namespace ForgottenWawiTech +{ + public class ForgottenWawiTechSystem : ModSystem + { + public static bool hasObtainedRGBass = false; + + public override void OnWorldLoad() + { + hasObtainedRGBass = false; + } + + public override void OnWorldUnload() + { + hasObtainedRGBass = false; + } + + public override void SaveWorldData(TagCompound tag) + { + tag["hasObtainedRGBass"] = hasObtainedRGBass; + } + + public override void LoadWorldData(TagCompound tag) + { + hasObtainedRGBass = tag.GetBool("hasObtainedRGBass"); + } + } +} diff --git a/Localization/en-US_Mods.ForgottenWawiTech.hjson b/Localization/en-US_Mods.ForgottenWawiTech.hjson index d4efd62..3c59879 100644 --- a/Localization/en-US_Mods.ForgottenWawiTech.hjson +++ b/Localization/en-US_Mods.ForgottenWawiTech.hjson @@ -4,8 +4,8 @@ Items: { Nyanageddon: { Tooltip: ''' - Mob the rainbow, taste the rainbow. - Ethically questionable. + Mob the rainbow, taste the rainbow. + Ethically questionable. ''' DisplayName: Nyanageddon } @@ -18,9 +18,9 @@ Items: { TrueNyanageddon: { Tooltip: ''' - The ultimate evolution of the Meowmere. - Mob the rainbow, taste the rainbow, transcend the rainbow. - Ethically questionable. + The ultimate evolution of the Meowmere. + Mob the rainbow, taste the rainbow, transcend the rainbow. + Ethically questionable. ''' DisplayName: True Nyanageddon } @@ -79,8 +79,8 @@ Items: { DisplayName: Singularity-Infused Tome Of Unyielding Tooltip: ''' - A tome radiating with the power of the void. - You probably shouldn't hold it so close. + A tome radiating with the power of the void. + You probably shouldn't hold it so close. ''' } @@ -88,8 +88,8 @@ Items: { DisplayName: Shattered Prism Tooltip: ''' - A Last Prism exposed to the power of several singularities. - The chaos within seems desperate to be released. + A Last Prism exposed to the power of several singularities. + The chaos within seems desperate to be released. ''' } @@ -97,9 +97,9 @@ Items: { DisplayName: Infinite Mana Tooltip: ''' - You shouldn't have this. - +1000 max mana. - Prevents mana from being drained. + You shouldn't have this. + +1000 max mana. + Prevents mana from being drained. ''' } @@ -112,8 +112,8 @@ Items: { DisplayName: RGB Alloy Tooltip: ''' - A high-tech alloy used in advanced crafting. - Shimmers with red, green, and blue hues. + A high-tech alloy used in advanced crafting. + Shimmers with red, green, and blue hues. ''' } @@ -121,16 +121,16 @@ Items: { DisplayName: Visor Shard Tooltip: ''' - A fragment of a high-tech visor. - Emits a faint glow. + A fragment of a high-tech visor. + Emits a faint glow. ''' } MiniSingularity: { Tooltip: ''' - A small, contained singularity. - Handle with care. + A small, contained singularity. + Handle with care. ''' DisplayName: Mini Singularity } @@ -138,8 +138,8 @@ Items: { ControlledSingularity: { Tooltip: ''' - A stabilized captive singularity for advanced applications. - Extremely volatile if mishandled. + A stabilized captive singularity for advanced applications. + Extremely volatile if mishandled. ''' DisplayName: Controlled Singularity } @@ -148,13 +148,13 @@ Items: { DisplayName: Singularity Chestplate Tooltip: ''' - +50% damage - +40 max mana - +10% damage reduction - -50% mana cost - +1000 max life - +20 max minions - 'You feel a strange power coursing through your veins.' + +50% damage + +40 max mana + +10% damage reduction + -50% mana cost + +1000 max life + +20 max minions + 'You feel a strange power coursing through your veins.' ''' } @@ -162,11 +162,11 @@ Items: { DisplayName: Singularity Helmet Tooltip: ''' - +50% damage - +100% critical strike chance - +10% damage reduction - +500 max life - 'Your mind feels sharper, as if touched by the void itself.' + +50% damage + +100% critical strike chance + +10% damage reduction + +500 max life + 'Your mind feels sharper, as if touched by the void itself.' ''' } @@ -174,54 +174,61 @@ Items: { DisplayName: Singularity Leggings Tooltip: ''' - +500% movement speed - +50% damage - +10% damage reduction - +500 max life - Allows infinite flight. - 'You feel lighter on your feet, as if gravity itself has less hold on you.' + +500% movement speed + +50% damage + +10% damage reduction + +500 max life + Allows infinite flight. + 'You feel lighter on your feet, as if gravity itself has less hold on you.' ''' } - SingularityAxe: { - DisplayName: Singularity Axe - Tooltip: "" - } - SingularityHammer: { DisplayName: Singularity Hammer Tooltip: "" } - SingularityPickaxe: { - DisplayName: Singularity Pickaxe - Tooltip: "" - } - SingularityMultitool: { Tooltip: "" DisplayName: Singularity Multitool } ContainmentUnit: { - Tooltip: "" + Tooltip: + ''' + A high-tech containment unit for stabilizing singularities. + Essential for advanced singularity research and applications. + ''' DisplayName: Containment Unit } SingularitySealingUnitItem: { - Tooltip: "" + Tooltip: + ''' + A specialized device used to seal and stabilize singularities. + Used for singularity crafting. + ''' DisplayName: Singularity Sealing Unit Item } EnergyCore: { - Tooltip: "" + Tooltip: + ''' + A core pulsating with concentrated energy. + Used in high-tech crafting and energy applications. + ''' DisplayName: Energy Core } SingularityAlloy: { - Tooltip: "" + Tooltip: A singularity formed into a stable, sturdy alloy. DisplayName: Singularity Alloy } + + AvaliFeather: { + Tooltip: A feather from an Avali. + DisplayName: Avali Feather + } } NPCs: { @@ -300,14 +307,14 @@ NPCs: { DisplayName: Avalian Trader TownNPCMood: { - Content: I am content. - NoHome: I hate not having a home. - FarFromHome: I am too far from home. - LoveSpace: I love having so much space. - DislikeCrowded: I dislike how crowded I am. - HateCrowded: I hate how crowded I am. - LikeNPC_Princess: I like {NPCName}. - Princess_LovesNPC: I like {NPCName}. + Content: "*chirps contentedly* Life here is good! + NoHome: *distressed chirping* I need a proper nest to store my wares! + FarFromHome: I've wandered too far from my shop... this feels wrong. + LoveSpace: *happy chirps* So much room for my inventory! + DislikeCrowded: *agitated chirping* Too many bodies, not enough space... + HateCrowded: *stressed chirping* I can barely spread my wings in here! + LikeNPC_Princess: I like {NPCName}. She appreciates quality craftsmanship! + Princess_LovesNPC: I like {NPCName}. They remind me of traders back on Avalon. } } } diff --git a/README.md b/README.md index 64afce3..282a188 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # The Forgotten Wawi Tech Mod -## A Terraria Mod \ No newline at end of file +## A Terraria Mod +This is the source code repository for the Forgotten Wawi Tech mod for Terraria. This mod adds a variety of new content, including items, bosses, and rarities, to enhance the gameplay experience. + +Depends on Calamity Mod for the best experience. +Not canon to Avali, Protogen or Calamity lore - we are just having fun. \ No newline at end of file diff --git a/build.txt b/build.txt index d3208ab..168f206 100644 --- a/build.txt +++ b/build.txt @@ -1,3 +1,3 @@ displayName = The Forgotten Wawi Tech -author = EclypsedMoonfall, Axl_the_Protogen +author = EclypsedMoonfall, Axl_the_Protogen, British_Raccoon version = 0.1 \ No newline at end of file