From bd2427e102a18a72287fc8064cb9ebeeeb758147 Mon Sep 17 00:00:00 2001 From: Niko Date: Fri, 21 Nov 2025 14:14:57 +0000 Subject: [PATCH] Add boss bags --- .../Items/Accessories/EssenceOfClutches.cs | 2 - .../TreasureBags/CorruptedSwarmBossBag.cs | 38 +++++++++++++++ .../TreasureBags/CorruptedSwarmBossBag.png | Bin 0 -> 504 bytes Content/Items/TreasureBags/LexyBossBag.cs | 40 ++++++++++++++++ Content/Items/TreasureBags/LexyBossBag.png | Bin 0 -> 504 bytes Content/Items/TreasureBags/LyykaBossBag.cs | 39 ++++++++++++++++ Content/Items/TreasureBags/LyykaBossBag.png | Bin 0 -> 504 bytes Content/Items/TreasureBags/NeptuneBossBag.cs | 40 ++++++++++++++++ Content/Items/TreasureBags/NeptuneBossBag.png | Bin 0 -> 504 bytes Content/Items/TreasureBags/NikoBossBag.cs | 44 ++++++++++++++++++ Content/Items/TreasureBags/NikoBossBag.png | Bin 0 -> 504 bytes Content/NPCs/OriginalLexy/Lexy.cs | 7 +++ Content/NPCs/OriginalLyyka/Lyyka.cs | 7 +++ Content/NPCs/OriginalNeptune/Neptune.cs | 7 +++ Content/NPCs/OriginalNiko/Niko.cs | 7 +++ .../en-US_Mods.ForgottenWawiTech.hjson | 36 ++++++++++++-- SPRITES_TODO.md | 11 ++++- 17 files changed, 269 insertions(+), 9 deletions(-) create mode 100644 Content/Items/TreasureBags/CorruptedSwarmBossBag.cs create mode 100644 Content/Items/TreasureBags/CorruptedSwarmBossBag.png create mode 100644 Content/Items/TreasureBags/LexyBossBag.cs create mode 100644 Content/Items/TreasureBags/LexyBossBag.png create mode 100644 Content/Items/TreasureBags/LyykaBossBag.cs create mode 100644 Content/Items/TreasureBags/LyykaBossBag.png create mode 100644 Content/Items/TreasureBags/NeptuneBossBag.cs create mode 100644 Content/Items/TreasureBags/NeptuneBossBag.png create mode 100644 Content/Items/TreasureBags/NikoBossBag.cs create mode 100644 Content/Items/TreasureBags/NikoBossBag.png diff --git a/Content/Items/Accessories/EssenceOfClutches.cs b/Content/Items/Accessories/EssenceOfClutches.cs index 6d0f734..062b1ba 100644 --- a/Content/Items/Accessories/EssenceOfClutches.cs +++ b/Content/Items/Accessories/EssenceOfClutches.cs @@ -19,8 +19,6 @@ namespace ForgottenWawiTech.Content.Items.Accessories public override void UpdateAccessory(Player player, bool hideVisual) { - // The more players have died during a boss, the more damage you both deal and take (up to a maximum of +50% damage dealt and +50% damage taken). - // Count the number of dead players during a boss fight int deadPlayerCount = 0; if (Main.npc.Any(npc => npc.active && npc.boss)) diff --git a/Content/Items/TreasureBags/CorruptedSwarmBossBag.cs b/Content/Items/TreasureBags/CorruptedSwarmBossBag.cs new file mode 100644 index 0000000..2ea00c6 --- /dev/null +++ b/Content/Items/TreasureBags/CorruptedSwarmBossBag.cs @@ -0,0 +1,38 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; +using ForgottenWawiTech.Content.Items.Accessories; +using ForgottenWawiTech.Content.Items.Materials; +using ForgottenWawiTech.Content.NPCs.OriginalLexy; +using Terraria.GameContent.ItemDropRules; + +namespace ForgottenWawiTech.Content.Items.TreasureBags +{ + public class CorruptedSwarmBossBag : ModItem + { + public override void SetStaticDefaults() + { + ItemID.Sets.BossBag[Type] = true; + } + + public override void SetDefaults() + { + Item.width = 32; + Item.height = 32; + Item.maxStack = 9999; + Item.consumable = true; + Item.rare = ItemRarityID.Expert; + Item.expert = true; + Item.value = Item.buyPrice(gold: 10); + } + + public override bool CanRightClick() => true; + + public override void ModifyItemLoot(ItemLoot itemLoot) + { + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 28, 40)); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 12, 18)); + // itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType())); // Boss isnt registered yet + } + } +} diff --git a/Content/Items/TreasureBags/CorruptedSwarmBossBag.png b/Content/Items/TreasureBags/CorruptedSwarmBossBag.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/TreasureBags/LexyBossBag.cs b/Content/Items/TreasureBags/LexyBossBag.cs new file mode 100644 index 0000000..2656bcc --- /dev/null +++ b/Content/Items/TreasureBags/LexyBossBag.cs @@ -0,0 +1,40 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; +using ForgottenWawiTech.Content.Items.Accessories; +using ForgottenWawiTech.Content.Items.Materials; +using ForgottenWawiTech.Content.NPCs.OriginalLexy; +using Terraria.GameContent.ItemDropRules; + +namespace ForgottenWawiTech.Content.Items.TreasureBags +{ + public class LexyBossBag : ModItem + { + public override void SetStaticDefaults() + { + ItemID.Sets.BossBag[Type] = true; + } + + public override void SetDefaults() + { + Item.width = 32; + Item.height = 32; + Item.maxStack = 9999; + Item.consumable = true; + Item.rare = ItemRarityID.Expert; + Item.expert = true; + Item.value = Item.buyPrice(gold: 10); + } + + public override bool CanRightClick() => true; + + public override void ModifyItemLoot(ItemLoot itemLoot) + { + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 28, 40)); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 12, 18)); + itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType())); + // TODO: Add Lexy accessories and weapons + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 10, 1, 1)); + } + } +} diff --git a/Content/Items/TreasureBags/LexyBossBag.png b/Content/Items/TreasureBags/LexyBossBag.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/TreasureBags/LyykaBossBag.cs b/Content/Items/TreasureBags/LyykaBossBag.cs new file mode 100644 index 0000000..bbcd3c3 --- /dev/null +++ b/Content/Items/TreasureBags/LyykaBossBag.cs @@ -0,0 +1,39 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; +using ForgottenWawiTech.Content.Items.Materials; +using ForgottenWawiTech.Content.Items.Weapons.Magic; +using ForgottenWawiTech.Content.NPCs.OriginalLyyka; +using Terraria.GameContent.ItemDropRules; + +namespace ForgottenWawiTech.Content.Items.TreasureBags +{ + public class LyykaBossBag : ModItem + { + public override void SetStaticDefaults() + { + ItemID.Sets.BossBag[Type] = true; + } + + public override void SetDefaults() + { + Item.width = 32; + Item.height = 32; + Item.maxStack = 9999; + Item.consumable = true; + Item.rare = ItemRarityID.Expert; + Item.expert = true; + Item.value = Item.buyPrice(gold: 10); + } + + public override bool CanRightClick() => true; + + public override void ModifyItemLoot(ItemLoot itemLoot) + { + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 28, 40)); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 12, 18)); + itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType())); + // TODO: Add Lyyka accessories and weapons + } + } +} diff --git a/Content/Items/TreasureBags/LyykaBossBag.png b/Content/Items/TreasureBags/LyykaBossBag.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/TreasureBags/NeptuneBossBag.cs b/Content/Items/TreasureBags/NeptuneBossBag.cs new file mode 100644 index 0000000..40b8d01 --- /dev/null +++ b/Content/Items/TreasureBags/NeptuneBossBag.cs @@ -0,0 +1,40 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; +using ForgottenWawiTech.Content.Items.Materials; +using ForgottenWawiTech.Content.Items.Weapons.Magic; +using ForgottenWawiTech.Content.NPCs.OriginalNeptune; +using Terraria.GameContent.ItemDropRules; +using ForgottenWawiTech.Content.Items.Tiles.Furniture; + +namespace ForgottenWawiTech.Content.Items.TreasureBags +{ + public class NeptuneBossBag : ModItem + { + public override void SetStaticDefaults() + { + ItemID.Sets.BossBag[Type] = true; + } + + public override void SetDefaults() + { + Item.width = 32; + Item.height = 32; + Item.maxStack = 9999; + Item.consumable = true; + Item.rare = ItemRarityID.Expert; + Item.expert = true; + Item.value = Item.sellPrice(gold: 12); + } + + public override bool CanRightClick() => true; + + public override void ModifyItemLoot(ItemLoot itemLoot) + { + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 28, 40)); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType())); + itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType())); + // TODO: Add Neptune accessories and weapons + } + } +} diff --git a/Content/Items/TreasureBags/NeptuneBossBag.png b/Content/Items/TreasureBags/NeptuneBossBag.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/TreasureBags/NikoBossBag.cs b/Content/Items/TreasureBags/NikoBossBag.cs new file mode 100644 index 0000000..0135107 --- /dev/null +++ b/Content/Items/TreasureBags/NikoBossBag.cs @@ -0,0 +1,44 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; +using ForgottenWawiTech.Content.Items.Accessories; +using ForgottenWawiTech.Content.Items.Materials; +using ForgottenWawiTech.Content.Items.Weapons.Magic; +using ForgottenWawiTech.Content.NPCs.OriginalNiko; +using ForgottenWawiTech.Content.Items.Armor.Vanities.OneShot; +using Terraria.GameContent.ItemDropRules; + +namespace ForgottenWawiTech.Content.Items.TreasureBags +{ + public class NikoBossBag : ModItem + { + public override void SetStaticDefaults() + { + ItemID.Sets.BossBag[Type] = true; + } + + public override void SetDefaults() + { + Item.width = 32; + Item.height = 32; + Item.maxStack = 9999; + Item.consumable = true; + Item.rare = ItemRarityID.Expert; + Item.expert = true; + Item.value = Item.sellPrice(gold: 16); + } + + public override bool CanRightClick() => true; + + public override void ModifyItemLoot(ItemLoot itemLoot) + { + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 28, 40)); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 1, 12, 18)); + itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType())); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 4, 1, 9)); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 10)); + itemLoot.Add(ItemDropRule.Common(ModContent.ItemType(), 10)); + // TODO: Add Niko accessories and weapons + } + } +} diff --git a/Content/Items/TreasureBags/NikoBossBag.png b/Content/Items/TreasureBags/NikoBossBag.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/NPCs/OriginalLexy/Lexy.cs b/Content/NPCs/OriginalLexy/Lexy.cs index 278fbeb..41af16b 100644 --- a/Content/NPCs/OriginalLexy/Lexy.cs +++ b/Content/NPCs/OriginalLexy/Lexy.cs @@ -2,6 +2,8 @@ using Terraria; using Terraria.ID; using Terraria.ModLoader; using Microsoft.Xna.Framework; +using Terraria.GameContent.ItemDropRules; +using ForgottenWawiTech.Content.Items.TreasureBags; namespace ForgottenWawiTech.Content.NPCs.OriginalLexy { @@ -36,6 +38,11 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalLexy NPC.checkDead(); } + public override void ModifyNPCLoot(NPCLoot npcLoot) + { + npcLoot.Add(ItemDropRule.BossBag(ModContent.ItemType())); + } + public override void OnKill() { /* // Spawn LexyNPC when killed diff --git a/Content/NPCs/OriginalLyyka/Lyyka.cs b/Content/NPCs/OriginalLyyka/Lyyka.cs index ffedca2..6d4ab95 100644 --- a/Content/NPCs/OriginalLyyka/Lyyka.cs +++ b/Content/NPCs/OriginalLyyka/Lyyka.cs @@ -4,6 +4,8 @@ using Terraria.ModLoader; using Microsoft.Xna.Framework; using Terraria.Chat; using Terraria.Localization; +using Terraria.GameContent.ItemDropRules; +using ForgottenWawiTech.Content.Items.TreasureBags; namespace ForgottenWawiTech.Content.NPCs.OriginalLyyka { @@ -178,5 +180,10 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalLyyka // Immediate sync of world flags WorldDefeatedBosses.Sync(ModContent.GetInstance()); } + + public override void ModifyNPCLoot(NPCLoot npcLoot) + { + npcLoot.Add(ItemDropRule.BossBag(ModContent.ItemType())); + } } } \ No newline at end of file diff --git a/Content/NPCs/OriginalNeptune/Neptune.cs b/Content/NPCs/OriginalNeptune/Neptune.cs index 880e4e2..cf830ec 100644 --- a/Content/NPCs/OriginalNeptune/Neptune.cs +++ b/Content/NPCs/OriginalNeptune/Neptune.cs @@ -4,6 +4,8 @@ using Terraria.ModLoader; using Microsoft.Xna.Framework; using Terraria.Chat; using Terraria.Localization; +using Terraria.GameContent.ItemDropRules; +using ForgottenWawiTech.Content.Items.TreasureBags; namespace ForgottenWawiTech.Content.NPCs.OriginalNeptune { @@ -132,5 +134,10 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalNeptune // Immediate sync of world flags WorldDefeatedBosses.Sync(ModContent.GetInstance()); } + + public override void ModifyNPCLoot(NPCLoot npcLoot) + { + npcLoot.Add(ItemDropRule.BossBag(ModContent.ItemType())); + } } } \ No newline at end of file diff --git a/Content/NPCs/OriginalNiko/Niko.cs b/Content/NPCs/OriginalNiko/Niko.cs index 437565f..a345567 100644 --- a/Content/NPCs/OriginalNiko/Niko.cs +++ b/Content/NPCs/OriginalNiko/Niko.cs @@ -4,6 +4,8 @@ using Terraria.ModLoader; using Microsoft.Xna.Framework; using Terraria.Chat; using Terraria.Localization; +using Terraria.GameContent.ItemDropRules; +using ForgottenWawiTech.Content.Items.TreasureBags; namespace ForgottenWawiTech.Content.NPCs.OriginalNiko { @@ -232,5 +234,10 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalNiko } + + public override void ModifyNPCLoot(NPCLoot npcLoot) + { + npcLoot.Add(ItemDropRule.BossBag(ModContent.ItemType())); + } } } diff --git a/Localization/en-US_Mods.ForgottenWawiTech.hjson b/Localization/en-US_Mods.ForgottenWawiTech.hjson index 891468c..2a0b5b8 100644 --- a/Localization/en-US_Mods.ForgottenWawiTech.hjson +++ b/Localization/en-US_Mods.ForgottenWawiTech.hjson @@ -30,11 +30,31 @@ Items: { ''' Summons Niko. Not consumable. - 'Until my final breath I will grind you to dust until your dust begs for death, you meainingless FUCK!' + 'May your woes be many, and your days be few.' ''' DisplayName: Bird Thing } + LexyBossBag: { + DisplayName: Treasure Bag (Lexy) + Tooltip: Right Click to open. + } + + LyykaBossBag: { + DisplayName: Treasure Bag (Lyyka) + Tooltip: Right Click to open. + } + + NeptuneBossBag: { + DisplayName: Treasure Bag (Neptune) + Tooltip: Right Click to open. + } + + NikoBossBag: { + DisplayName: Treasure Bag (Astramora Noctis) + Tooltip: Right Click to open. + } + NeptuneSummon: { Tooltip: ''' @@ -233,7 +253,7 @@ Items: { NeptuneTrophyItem: { Tooltip: Surprisingly large for a trophy. Especially from an otter. - DisplayName: Neptune Trophy Item + DisplayName: Megaladon on a Plaque } BeamAttackWand: { @@ -248,6 +268,7 @@ Items: { EssenceOfClutches: { Tooltip: ''' + For each player in the world dead during a boss fight, gain +10% damage and take +10% more damage (up to 50%). A blessing from the God of Clutches himself. Its power is the result of a display of unprecedented skill. ''' @@ -897,17 +918,17 @@ Items: { NsLeggings: { Tooltip: "" - DisplayName: Ns Leggings + DisplayName: N's Leggings } NsHair: { Tooltip: "" - DisplayName: Ns Hair + DisplayName: N's Hair } NsBodyPiece: { Tooltip: "" - DisplayName: Ns Body Piece + DisplayName: N's Body Piece } MessiahCloak: { @@ -919,6 +940,11 @@ Items: { DisplayName: Messiah Hat Tooltip: "" } + + CorruptedSwarmBossBag: { + DisplayName: Treasure Bag (Corrupted Swarm) + Tooltip: "Right Click to open." + } } Conditions: { diff --git a/SPRITES_TODO.md b/SPRITES_TODO.md index fce835c..a23b5f4 100644 --- a/SPRITES_TODO.md +++ b/SPRITES_TODO.md @@ -36,8 +36,8 @@ Use this checklist to keep tabs on every gameplay element still running on place - [ ] Protogen Sentinel set (helmet, cowl, hood, mask, chestplate, leggings + overlays) - [ ] Singularity set (helmet, hood, chestplate, leggings + overlays) - [ ] Transcendent set (helm, hood, mask, cowl, coreplate, greaves + overlays) -- [ ] Murder Drones vanity set (Ns hair, body piece, leggings + head/body/leg overlays) -- [ ] OneShot vanity set (Messiah hat, cloak + head/body overlays) +- [ ] Murder Drones vanity set (Ns hair, body piece, leggings + head/body/leg overlays) (Based on N from Murder Drones) +- [ ] OneShot vanity set (Messiah hat, cloak + head/body overlays) (Based on Niko from OneShot) ### Weapons & Tools - [ ] Beam Attack Wand (staff + charged channel sprite) @@ -59,6 +59,13 @@ Use this checklist to keep tabs on every gameplay element still running on place - [x] Neptune Summon - [x] Niko Summon +### Treasure Bags +- [ ] Lexy +- [ ] Lyyka +- [ ] Neptune +- [ ] Niko / Astramora Noctis +- [ ] Corrupted Swarm + ### Materials & Crafting Components - [x] Avali Feather - [ ] Containment Unit