Minor changes to Niko AI for more ✨ monologue ✨

This commit is contained in:
2025-11-15 12:30:28 +00:00
parent 9704849acb
commit 6e38f720fe
3 changed files with 54 additions and 24 deletions
+49 -20
View File
@@ -12,7 +12,6 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalNiko
{
public override void SetStaticDefaults()
{
// DisplayName.SetDefault("Original Niko");
Main.npcFrameCount[NPC.type] = 1;
}
@@ -20,8 +19,8 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalNiko
{
NPC.width = 40;
NPC.height = 40;
NPC.damage = 1786;
NPC.defense = 290;
NPC.damage = 2000;
NPC.defense = 300;
NPC.lifeMax = 1000000;
NPC.HitSound = SoundID.NPCHit1;
NPC.DeathSound = SoundID.NPCDeath1;
@@ -101,29 +100,46 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalNiko
}
else if (t == 900)
{
string line = "Niko: You think you've seen everything?";
string line = "Impressive...";
if (Main.netMode != NetmodeID.MultiplayerClient)
Main.NewText(line, 220, 160, 255);
else
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line), new Color(220, 160, 255));
}
else if (t == 2100)
else if (t == 1000)
{
string line = "Niko: There's more yet to come...";
string line = "But this has already gone on long enough.";
if (Main.netMode != NetmodeID.MultiplayerClient)
Main.NewText(line, 200, 140, 255);
Main.NewText(line, 180, 130, 255);
else
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line), new Color(200, 140, 255));
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line), new Color(180, 130, 255));
}
// After approx 60 seconds (3600 ticks), end invulnerability
if (NPC.ai[2] >= 3600)
// TODO: Audio and VO lines here
else if (t == 1500)
{
string line = "Sky has rated the following film 12 - suitable for ages 12 and above.";
if (Main.netMode != NetmodeID.MultiplayerClient)
Main.NewText(line, 210, 150, 255);
else
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line), new Color(210, 150, 255));
}
else if (t == 1800)
{
string line = "This film contains violence, explicit language, and flashing images."; // this is such a random reference that ill be surprised if anyone gets it especially outside gb
if (Main.netMode != NetmodeID.MultiplayerClient)
Main.NewText(line, 230, 180, 255);
else
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line), new Color(230, 180, 255));
}
// TODO: When audio is finished, switch to Noctis Boss 2 theme (remix of In The End? Or something new? TBA)
// After approx 42 seconds (2500 ticks), end invulnerability
if (NPC.ai[2] >= 2500)
{
NPC.dontTakeDamage = false;
NPC.ai[0] = 2;
NPC.netUpdate = true;
string announce = "Niko's barrier fades... the battle resumes.";
string announce = "Now get out of my sight.";
if (Main.netMode != NetmodeID.MultiplayerClient)
Main.NewText(announce, 255, 150, 100);
else
@@ -181,19 +197,32 @@ namespace ForgottenWawiTech.Content.NPCs.OriginalNiko
public override void OnKill()
{
// Spawn NikoNPC when killed
/* if (Main.netMode != NetmodeID.MultiplayerClient)
// Ending monologue before playing the final track
// Only if Niko was actually defeated (not fled) and hasn't been defeated before
if (!WorldDefeatedBosses.Niko)
{
NPC.NewNPC(NPC.GetSource_Death(), (int)NPC.Center.X, (int)NPC.Center.Y, ModContent.NPCType<NikoNPC>());
}
else
{
NetMessage.SendData(MessageID.SpawnNPC, number: ModContent.NPCType<NikoNPC>(), number2: NPC.whoAmI);
} */
string line1 = "With a final breath, Niko whispers...";
string line2 = "\"gg, no re\"";
string line3 = "The battlefield falls silent as Niko vanishes.";
if (Main.netMode != NetmodeID.MultiplayerClient)
{
Main.NewText(line1, 255, 100, 100);
Main.NewText(line2, 200, 50, 50);
Main.NewText(line3, 255, 150, 150);
}
else
{
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line1), new Color(255, 100, 100));
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line2), new Color(200, 50, 50));
ChatHelper.BroadcastChatMessage(NetworkText.FromLiteral(line3), new Color(255, 150, 150));
}
// Set a world flag or similar to indicate Niko has been defeated
WorldDefeatedBosses.Niko = true;
// Immediate sync of world flags
WorldDefeatedBosses.Sync(ModContent.GetInstance<ForgottenWawiTech>());
}
}
}
}