Add boss bags

This commit is contained in:
2025-11-21 14:14:57 +00:00
parent 02177bb173
commit bd2427e102
17 changed files with 269 additions and 9 deletions
@@ -19,8 +19,6 @@ namespace ForgottenWawiTech.Content.Items.Accessories
public override void UpdateAccessory(Player player, bool hideVisual) 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 // Count the number of dead players during a boss fight
int deadPlayerCount = 0; int deadPlayerCount = 0;
if (Main.npc.Any(npc => npc.active && npc.boss)) if (Main.npc.Any(npc => npc.active && npc.boss))
@@ -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<UnstableMatter>(), 1, 28, 40));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<MalfunctioningNanites>(), 1, 12, 18));
// itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType<Lexy>())); // Boss isnt registered yet
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

+40
View File
@@ -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<VisorShard>(), 1, 28, 40));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<MalfunctioningNanites>(), 1, 12, 18));
itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType<Lexy>()));
// TODO: Add Lexy accessories and weapons
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<EssenceOfClutches>(), 10, 1, 1));
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -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<LyykaBossDrop>(), 1, 28, 40));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<MalfunctioningNanites>(), 1, 12, 18));
itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType<Lyyka>()));
// TODO: Add Lyyka accessories and weapons
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

@@ -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<HalfEatenFish>(), 1, 28, 40));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<NeptuneTrophyItem>()));
itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType<Neptune>()));
// TODO: Add Neptune accessories and weapons
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

+44
View File
@@ -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<FallenAngelFeather>(), 1, 28, 40));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<MalfunctioningNanites>(), 1, 12, 18));
itemLoot.Add(ItemDropRule.CoinsBasedOnNPCValue(ModContent.NPCType<Niko>()));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<ControlledSingularity>(), 4, 1, 9));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<MessiahHat>(), 10));
itemLoot.Add(ItemDropRule.Common(ModContent.ItemType<MessiahCloak>(), 10));
// TODO: Add Niko accessories and weapons
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

+7
View File
@@ -2,6 +2,8 @@ using Terraria;
using Terraria.ID; using Terraria.ID;
using Terraria.ModLoader; using Terraria.ModLoader;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Terraria.GameContent.ItemDropRules;
using ForgottenWawiTech.Content.Items.TreasureBags;
namespace ForgottenWawiTech.Content.NPCs.OriginalLexy namespace ForgottenWawiTech.Content.NPCs.OriginalLexy
{ {
@@ -36,6 +38,11 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalLexy
NPC.checkDead(); NPC.checkDead();
} }
public override void ModifyNPCLoot(NPCLoot npcLoot)
{
npcLoot.Add(ItemDropRule.BossBag(ModContent.ItemType<LexyBossBag>()));
}
public override void OnKill() public override void OnKill()
{ {
/* // Spawn LexyNPC when killed /* // Spawn LexyNPC when killed
+7
View File
@@ -4,6 +4,8 @@ using Terraria.ModLoader;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Terraria.Chat; using Terraria.Chat;
using Terraria.Localization; using Terraria.Localization;
using Terraria.GameContent.ItemDropRules;
using ForgottenWawiTech.Content.Items.TreasureBags;
namespace ForgottenWawiTech.Content.NPCs.OriginalLyyka namespace ForgottenWawiTech.Content.NPCs.OriginalLyyka
{ {
@@ -178,5 +180,10 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalLyyka
// Immediate sync of world flags // Immediate sync of world flags
WorldDefeatedBosses.Sync(ModContent.GetInstance<ForgottenWawiTech>()); WorldDefeatedBosses.Sync(ModContent.GetInstance<ForgottenWawiTech>());
} }
public override void ModifyNPCLoot(NPCLoot npcLoot)
{
npcLoot.Add(ItemDropRule.BossBag(ModContent.ItemType<LyykaBossBag>()));
}
} }
} }
+7
View File
@@ -4,6 +4,8 @@ using Terraria.ModLoader;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Terraria.Chat; using Terraria.Chat;
using Terraria.Localization; using Terraria.Localization;
using Terraria.GameContent.ItemDropRules;
using ForgottenWawiTech.Content.Items.TreasureBags;
namespace ForgottenWawiTech.Content.NPCs.OriginalNeptune namespace ForgottenWawiTech.Content.NPCs.OriginalNeptune
{ {
@@ -132,5 +134,10 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalNeptune
// Immediate sync of world flags // Immediate sync of world flags
WorldDefeatedBosses.Sync(ModContent.GetInstance<ForgottenWawiTech>()); WorldDefeatedBosses.Sync(ModContent.GetInstance<ForgottenWawiTech>());
} }
public override void ModifyNPCLoot(NPCLoot npcLoot)
{
npcLoot.Add(ItemDropRule.BossBag(ModContent.ItemType<NeptuneBossBag>()));
}
} }
} }
+7
View File
@@ -4,6 +4,8 @@ using Terraria.ModLoader;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Terraria.Chat; using Terraria.Chat;
using Terraria.Localization; using Terraria.Localization;
using Terraria.GameContent.ItemDropRules;
using ForgottenWawiTech.Content.Items.TreasureBags;
namespace ForgottenWawiTech.Content.NPCs.OriginalNiko 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<NikoBossBag>()));
}
} }
} }
@@ -30,11 +30,31 @@ Items: {
''' '''
Summons Niko. Summons Niko.
Not consumable. 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 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: { NeptuneSummon: {
Tooltip: Tooltip:
''' '''
@@ -233,7 +253,7 @@ Items: {
NeptuneTrophyItem: { NeptuneTrophyItem: {
Tooltip: Surprisingly large for a trophy. Especially from an otter. Tooltip: Surprisingly large for a trophy. Especially from an otter.
DisplayName: Neptune Trophy Item DisplayName: Megaladon on a Plaque
} }
BeamAttackWand: { BeamAttackWand: {
@@ -248,6 +268,7 @@ Items: {
EssenceOfClutches: { EssenceOfClutches: {
Tooltip: 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. A blessing from the God of Clutches himself.
Its power is the result of a display of unprecedented skill. Its power is the result of a display of unprecedented skill.
''' '''
@@ -897,17 +918,17 @@ Items: {
NsLeggings: { NsLeggings: {
Tooltip: "" Tooltip: ""
DisplayName: Ns Leggings DisplayName: N's Leggings
} }
NsHair: { NsHair: {
Tooltip: "" Tooltip: ""
DisplayName: Ns Hair DisplayName: N's Hair
} }
NsBodyPiece: { NsBodyPiece: {
Tooltip: "" Tooltip: ""
DisplayName: Ns Body Piece DisplayName: N's Body Piece
} }
MessiahCloak: { MessiahCloak: {
@@ -919,6 +940,11 @@ Items: {
DisplayName: Messiah Hat DisplayName: Messiah Hat
Tooltip: "" Tooltip: ""
} }
CorruptedSwarmBossBag: {
DisplayName: Treasure Bag (Corrupted Swarm)
Tooltip: "Right Click to open."
}
} }
Conditions: { Conditions: {
+9 -2
View File
@@ -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) - [ ] Protogen Sentinel set (helmet, cowl, hood, mask, chestplate, leggings + overlays)
- [ ] Singularity set (helmet, hood, chestplate, leggings + overlays) - [ ] Singularity set (helmet, hood, chestplate, leggings + overlays)
- [ ] Transcendent set (helm, hood, mask, cowl, coreplate, greaves + overlays) - [ ] Transcendent set (helm, hood, mask, cowl, coreplate, greaves + overlays)
- [ ] Murder Drones vanity set (Ns hair, body piece, leggings + head/body/leg 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) - [ ] OneShot vanity set (Messiah hat, cloak + head/body overlays) (Based on Niko from OneShot)
### Weapons & Tools ### Weapons & Tools
- [ ] Beam Attack Wand (staff + charged channel sprite) - [ ] 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] Neptune Summon
- [x] Niko Summon - [x] Niko Summon
### Treasure Bags
- [ ] Lexy
- [ ] Lyyka
- [ ] Neptune
- [ ] Niko / Astramora Noctis
- [ ] Corrupted Swarm
### Materials & Crafting Components ### Materials & Crafting Components
- [x] Avali Feather - [x] Avali Feather
- [ ] Containment Unit - [ ] Containment Unit